Chevron Left
Back to Java Programming: Principles of Software Design

Java Programming: Principles of Software Design, Duke University

4.6
714 ratings
118 reviews

About this Course

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....

Top reviews

By MN

Feb 26, 2017

This nicely packaged course is learner centered. It engages the learner by enforcing practice through interesting exercises and quizzes. Kudos and Thumbs up to the team of great instructors

By NS

Jun 16, 2016

Like all the modules of this Java specialization, the teachers are very good and the course reaches the objective of teaching the fundamentals of software design with an excellent didactic.

Filter by:

115 Reviews

By Alana Gorukanti

Mar 17, 2019

Overall, this course is pretty good and it helps to learn the basics of Java Interfaces. However, Week 3 was very confusing and discussion posts were not at all helpful in the forums. I am having a lot of trouble with the random text generator (assignment one) and I can not move on until I get that one method correctly. I was not able to understand the getRandomText() method, therefore it was very difficult to do MarkovFour. Especially, when MarkovOne was not even working. The readings had VERY confusing wording and I believe the grammar caused confusion. However, it could have been a typo. That is why I gave this specific course a 3 star rating.

By Aminath K Goemans

Feb 25, 2019

Enjoyed this course and the examples used to learn algorithms (earthquakes data and predictive text). I did find that week 3 had a lot of work packed into one week. Otherwise, interesting and fun course.

By LAKKOJU NAGA SAI SRI RAVI TEJA

Feb 22, 2019

very helpful in understanding how to write a logic to a complex program easily.

By Shaun Rizk

Feb 19, 2019

The third week was a great challenge and, while frustrating at times, gave me more to think about as I'm developing as a programmer.

By Nazeeh AlSaifi

Feb 18, 2019

Amaaaaaaaaaaaaaaazing.

By Aleksandr Vasilchuk

Jan 31, 2019

great!

By Четверухин Александр Алексеевич

Jan 10, 2019

Nice course which logically ends the series of four. Finally explains why different duke.edu libraries were used as well as BlueJ, which seemed to be strange choise at the beginning. I've finally understood why interfaces and abstract classes are important and how to use it. I decrease the mark to 4 only due to week 3 tests unclarity around hashmap - I've never worked it out how to get to the test results on hashmap size - it was working fine on small samples, but not matching the answers which were in the quiz for the big files which took a lot of time from me and didn't bring satisfaction.

By Saleh Tarek Saleh Sayed

Dec 31, 2018

You need to explain Exceptions and interfaces more deeply

By Peter Gerard Williams

Dec 24, 2018

Near the end of the course it was very difficult to get programs working exactly as intended. I felt the instructions could have been clearer, especially in Week 3's assignments.

By Michael Davis

Nov 29, 2018

Fantastic course. Thanks to the instructors and students who helped put this coursework together. I've learned a tremendous amount about OOP and software design. Will continue on with the capstone couse to complete the specialization. Thank you.