- Level Foundation
- Duration 13 hours
- Course by Duke University
-
Offered by
About
Solve real world problems with Java using multiple classes. Learn how to create programming solutions that scale using Java interfaces. Recognize that software engineering is more than writing code - it also involves logical thinking and design. By the end of this course you will have written a program that analyzes and sorts earthquake data, and developed a predictive text generator. After completing this course, you will be able to: 1. Use sorting appropriately in solving problems; 2. Develop classes that implement the Comparable interface; 3. Use timing data to analyze empirical performance; 4. Break problems into multiple classes, each with their own methods; 5. Determine if a class from the Java API can be used in solving a particular problem; 6. Implement programming solutions using multiple approaches and recognize tradeoffs; 7. Use object-oriented concepts including interfaces and abstract classes when developing programs; 8. Appropriately hide implementation decisions so they are not visible in public methods; and 9. Recognize the limitations of algorithms and Java programs in solving problems. 10. Recognize standard Java classes and idioms including exception-handling, static methods, java.net, and java.io packages.Modules
Introduction
1
Videos
- Welcome!
1
Readings
- Programming Resources
Searching Earthquake Data
1
Assignment
- Searching Earthquake Data
6
Videos
- Introduction
- Relationships Between Classes
- Licensing and APIs
- Coding a Magnitude Filter
- Coding the Closest Quakes
- Summary
3
Readings
- Module Learning Outcomes / Resources
- Location class documentation and license resources
- Programming Exercise: Searching Earthquake Data
Filtering Data
1
Assignment
- Filtering Data
5
Videos
- Introduction
- Interfaces to Avoid Duplication
- Interfaces in More Depth
- MatchAll
- Summary
1
Readings
- Programming Exercise: Filtering Data
Review
1
Assignment
- Earthquakes: Programming and Interfaces
Implementing Selection Sort
1
Assignment
- Implementing Selection Sort
6
Videos
- Introduction
- Developing an Algorithm
- Translating to Code
- In Place
- Efficiency
- Summary
2
Readings
- Module Learning Outcomes / Resources
- Programming Exercise: Implementing Selection Sort
Sorting at Scale
1
Assignment
- Sorting at Scale
6
Videos
- Introduction
- Comparable
- Ordering Quakes by Magnitude
- Comparator
- Comparator for Distance from a Location
- Summary
1
Readings
- Programming Exercise: Sorting at Scale
Review
1
Assignment
- Earthquakes: Sorting Algorithms
Generating Random Text
2
Assignment
- Generating Random Text
- Interface and Abstract Class
7
Videos
- Introduction
- Order-Zero, Order-One
- Finding Follow Set
- Implementing Order-Two
- Testing and Debugging
- Interfaces and Abstract Classes
- Summary
3
Readings
- Module Learning Outcomes / Resources
- Programming Exercise: Generating Random Text
- Programming Exercise: Interface and Abstract Class
Word N-Grams
2
Assignment
- Word N-Grams
- WordGram Class
8
Videos
- Introduction
- Order-One Concepts
- Order-One Helper Functions
- WordGram Class
- WordGram Class Implementation
- Equals and HashCode Methods
- Equals Method Implementation
- Summary
2
Readings
- Programming Exercise: Word N-Grams
- Programming Exercise: WordGram Class
Review
1
Assignment
- N-Grams: Predictive Text
Using Java Beyond BlueJ
5
Videos
- Miscellaneous Java
- Main Method
- Static
- Editors
- Summary
1
Readings
- Module Learning Outcomes / Resources
Mainstream Java
8
Videos
- Introduction
- Understanding Exceptions
- Handling Exceptions
- Declaring Exceptions
- Throwing Exceptions
- Reading Files with Java.nio
- Hello Around the World with Eclipse
- Summary
1
Readings
- Where To Go From Here
Review
1
Assignment
- Java: Tools and Libraries for Everyone
Auto Summary
"Java Programming: Principles of Software Design" is an essential course for anyone looking to deepen their understanding of software engineering and Java programming. This course, offered in the IT & Computer Science domain, is designed to help learners solve real-world problems by creating scalable programming solutions using Java interfaces and multiple classes. Guided by expert instructors from Coursera, you will embark on a journey that goes beyond mere coding. You'll delve into logical thinking and design principles crucial for software development. By the end of the course, you'll have hands-on experience with projects such as analyzing and sorting earthquake data and developing a predictive text generator. Throughout the course, you will: - Master the use of sorting techniques to solve complex problems. - Develop and implement classes using the Comparable interface. - Analyze empirical performance through timing data. - Break down problems into manageable classes with dedicated methods. - Identify and utilize appropriate classes from the Java API. - Implement multiple programming approaches while understanding their tradeoffs. - Apply object-oriented concepts like interfaces and abstract classes. - Hide implementation details to maintain clean public methods. - Understand the limitations of algorithms and recognize standard Java classes and idioms, including exception-handling and packages like java.net and java.io. With a comprehensive duration of approximately 780 minutes, this foundational level course offers a robust introduction to Java programming and software design principles. Subscription options include a Starter plan, making it accessible to a wide range of learners eager to enhance their programming skills and software design knowledge. Whether you're an aspiring software engineer or a seasoned developer looking to refine your skills, this course provides the tools and knowledge needed to excel in the dynamic field of software development.

Robert Duvall

Owen Astrachan

Andrew D. Hilton

Susan H. Rodger