Chevron Left
Back to Java Programming: Principles of Software Design

Learner Reviews & Feedback for Java Programming: Principles of Software Design by Duke University

1,476 ratings

About the 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,, and packages....

Top reviews


Aug 7, 2019

My confidence level in Java programming has grown significantly since completing this specialisation. It gave me the necessary knowledge and practice I need to take up a role as a software engineer.


May 3, 2020

Well designed and well structured with the packages, resources, programming exercises and practice quiz. I appreciate the team's hard work in delivering good knowledge on the subject efficiently.

Filter by:

26 - 50 of 252 Reviews for Java Programming: Principles of Software Design

By Alejandro C

Aug 27, 2022

Great course, but some assignements are a little confusing

By Dinesh P

Dec 16, 2021

Slightly difficult course

By Michael B

Nov 25, 2022

The course covers a small list of topics concerning programming principles.

The principle of programming against interfaces is not covered correctly in the course.

The tests are sometimes time consuming and it's hard to find mistakes, although the topics itself are rather simple.

By Pablo C

Jun 22, 2023

at first, it started fine, not extensive explanations but just righ.

At the end of week 3, it was a dissaster, it seems like they just put everything together in a rush. This is a waste of money and definitely not recommended.

By Xayden R

Feb 1, 2020

So bad, I really don't understand the concepts introduced in this course.

By Yoni K

Jan 15, 2021

The practices are very unclear. I was stuck for hours!

By Utchchhwas S

Jul 9, 2020

This is my fourth course in the specialization. I enjoyed all the courses in the specialization including this course. This course introduces the basics of software design using Java. But compared to the previous courses in the specialization this course lacks behind in quality. Especially, the assignments in week 3 are poorly explained and the lectures also don't provide necessary guidelines regarding them. Felt a bit disappointed at this. But overall, this was a good course. I would have given it a 4 star but giving it a 5 star taking the whole specialization into account.

By Edward F

Jun 10, 2017

I took the full Specialization, so I'm going write the same review for each of the 5 modules.

This is a great course, but it's not for beginners. They ask you to do a lot of coding, which is great since that's the only way to really gain proficiency. And the code they ask you to write is, in my opinion, pretty hard for someone new to coding. My hat's off to someone new to programming who makes it through the five modules.

So, thanks to Duke for putting together a great course. It was very good.

By Ravishankar C

Feb 24, 2017

It was a great course! It is not easy as the previous courses in the specialization but it is worth taking it. The concepts of Interfaces, Abstract Classes, Comparator, Comparable and many more are covered in this course. It is quite interesting as it deals with solving problems related to Earthquake Data and Markov's Predictive Text Generation. Thanks to the Instructors for providing such a valuable course on this platform. #Enjoyed the #Course!

By Zhao Y

Apr 29, 2020

I like this course very much. The design of the course is very decent, and the lecturers are skillful. With BlueJ as a starter tool and introduce more advanced too at this point is a great idea for novice learners to avoid unnecessary difficulties at beginning. I'm looking forward to enroll in the Capstone course in this specialization and other related courses.

By Jon T

Jan 13, 2016

A self contained course wherein you learn basic objected oriented design principles that is often missed out in the industry during software development.

This course gave me a new perspective at software design. Coming from a procedural programming, this course helped me approach problems in a much higher level, easing the creation of a solution to a problem.

By phillip k

Nov 3, 2016

This course is designed for the novice and it is clear that a lot of thought has been put into making sure that the core principles of programming using Java are as easy as possible to understand.

The teaching material is superb, and when I used the forum I received excellent support from a very knowledgeable member of the teaching team,

By Pranali N

Oct 14, 2020

Course design was good and assignments were challenging . Now as a beginner , I am more confident about Java language. I feel that for Week 3 assignments , clarity of instructions was not there compared to previous two weeks. So I had to look through Discussion forums for the hints... but overall it was amazing experience!!


Apr 6, 2016

It is an excellent course for those who intend to know different design constructs in java. The course material, practice quizes and tests are designed to help the student apppreciate and be reasonably proficient in these aspects. My sincere gratitude to the professors and their team for this successful program.

By Γεώργιος Κ

May 24, 2020

All the courses of this specialization are needed for ones who enter the world of programming. The course ensures that you will understand what you have to know by implementing quizzes, questions and exhausting exercises that can be solved using only the material of the course.

By Brian B

Mar 19, 2016

This class probably isn't as good as the previous two--but those had such high quality, they're hard to compete with.

Overall, I continued to become a bit more comfortable with java and learned some things that might help me with my data science potential in the future!

By Michael D

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.

By Vaibhav S

Sep 15, 2019

Really Helpful course. It helped me a lot to become familiar with the Java language and enlighten me with the fact that java can be used to solve a wide array of problems, which i considered impossible and tricky when i used java earlier.

By Mike S

Jun 19, 2017

Never thought I would start this course with no coding knowledge whatsoever and now I'm writing programs to solve complex problems and I'm hooked. Great course and I would highly recommend it to anyone interested in learning programming.

By Aminath K G

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 Vinayak S

May 3, 2020

Well designed and well structured with the packages, resources, programming exercises and practice quiz. I appreciate the team's hard work in delivering good knowledge on the subject efficiently.

By María V D

May 8, 2018

I´m really shocking with the course, because integrate all concept, start a new concepts, and I´m felling great for accomplished. Thank you team teacher´s for the opportunity, you are great.

By Musa M N

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 Shayan A B

Aug 13, 2016

This course was another of many well-taught courses of Duke University. The GPS library use to find locations of earthquakes particularly of very interesting. Thank you Duke University

By kai k

Aug 16, 2019

amazing material - solid learning for Java

one struggle - discussion boards don't seem to be monitored by staff most of the time - expect to do most on your own without teacher input