Chevron Left
Back to Java Programming: Principles of Software Design

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

1,451 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:

1 - 25 of 250 Reviews for Java Programming: Principles of Software Design

By Amir M O

May 29, 2016

A very simplistic and chaotic course. Explanations are all over the place.

BlueJ is probably the worst IDE I have ever seen and I have been a programmer for about 8 years.

There are far better courses. I would not recommend this course at all.

By Amaliya A

Apr 6, 2019

Super course!

Well designed, structured, with a sense of humor :)

To be specific, with this course you are able to write complicated programs step by step with linearly growing difficulty.


By Agustín P

Jun 26, 2021

I was more diffucult than the previous three courses in the specialization, but all in all, I enjoyed it very much and learned a lot! Thanks for such a great course, keep up the good work! :)

By Katrīna K

Jun 9, 2022

Beginning (course 1 in the Java specialization) was promissing but very fast the concepts became not understandable. Videos explain less and less but tasks become more and more complicated. In my opinion this course (and all Java specialization) is not ment for the beginners. This doesn't explain the most basic concepts a person that doesn't have IT background should start with.

By Abdul H

Sep 15, 2020

The course is very poorly designed for begineer. This is the worst ever course on java

By Kandis B

Jun 7, 2016

This was a great course, but it was very difficult. I am currently taking a 300 level Data Structures and Algorithm class in Java and relied on some things I learned from that course to help me finish this one. Still, I hit a few road-blocks on programs that held me back for a few weeks until I could find an answer. There were times where I wasn't sure about the specifications. I also needed to use Eclipse on the final program to help find some errors. I spent between 10-20 hours per week on this course. It would have been very helpful to go through the course with someone or a group or have a person that I could email a copy of my code to for suggestions. Overall, I am really glad I took the course. I learned a lot!

By Ogonna I

Aug 8, 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.

By Vignesh B

Jul 27, 2021

Pros: The programming assignments were really great

Cons: The video lectures were not enough to understand the concepts.

Tip for learners: Do some research (like watch some youtube videos of the related topics, read geekforgeeks etc ) before watching the lectures.

By Bill J

Dec 27, 2017

There are a large number of people requesting help with the content in week 3 of this course. Many of them state the assignments need clarification, while others have made significant progress on the assignments but are requesting additional help understanding. Few of these threads in week 3 have been addressed, and I notice many of these threads date back for up to 2 years.

I have subscribed to this course three times in hopes of persevering, but I can't justify spending any more money when so many students are receiving no replies when asking for help.

By Aleksey

Jan 9, 2016

thanks for the course, but

-your quizzes is real pain, some random variable could cause wrong result

-your should follow how it is implemented in lectures in stupid way, like "efficient" way when you build hash map N^2 instead of N

-bluej sucks you make a lot of clicks to run method, use some decent IDE like eclipse or idea

By Gao S

Dec 15, 2020

The practise quiz and weekly quiz are always repeated and tedious, You need to test your program on data of different types/ranges, but not the same taype/range. It has no meaning.

Plus: The estimated time for doing the programming exercise showing on the course page is not true. Even for an experienced software engineer, sometimes over 2 hours for debugging code in the assignment is needed. It took me 4 full days of 10 hours per day in average to finish the course.

Overall this course is better than the previous 3 courses of the specialization.


Apr 23, 2021

Excellent course, the best I have taken so far. The lessons and assignments are very well designed for you to understand fairly advanced topics. The quizzes are entertaining and engage you with a lot of debugging. Best of all are the contexts around the issues and the narrative of why this or that is a good strategy to implement. Many thanks to Rob, Drew, Sussan, Owen, and all the Duke U staff. I recommend it to anyone.

By Christian A H

Feb 29, 2016

pretty good, week 3 was challenging for me and the concepts of interface and so on. but in my opinion it should be this way for the learner to have problems and try solving them. Discussions were always helpful and am looking forward to the object oriented programming from San Diego university

By Suryaa

Jul 28, 2020

These set of four made not only learning Java fun and also explored on the applications software engineering it has on the real world, touching a little bit of everything in the same field.

By Nirlan N Z d S

Jun 15, 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.

By Cesar A F B

Dec 2, 2021

Este curso es muy bueno, no es para empezar de cero, pero si para aquellos que tienen un poco de conocimiento y quieren empezar a entrar al mundo de la programación en Java.


Oct 7, 2021

Software Design Engineering, Programming, Debugging, to be Patience and Consistency

By Noah H

Mar 10, 2022

Very good info on software.

By Сергей А П

Aug 28, 2021

it was hard

By Dinesh P

Dec 16, 2021

Slightly difficult course

By Dimas T L

Nov 4, 2019

Many of the assignments in week three were incredibly hard to understand and required scouring the forums to locate where other classmates had to beg instructional staff for assistance. In many instances, the staff agreed that the course had many shortcomings that would be addressed in "upcoming iterations" of the course. However, many of these posts were made up to three years ago, so it made the student feel that not only did the class have errors that the staff did little to address for new cohorts, but also that the updating of the curriculum is not a priority and therefore that the class is now an afterthought.

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 Marcelo A B H

Jan 16, 2021

Es muy interesante el curso, pero ... la forma en que se plantean los problemas muchas veces no me fue clara, porque? no entendia que recurso debía obtener, muchas veces no podía avanzar porque no me daban los mismo resultados en los ejercicios, pero si estaban correctos en las evaluaciones. Mi mayor desafía fue en Markov no entendía lo que pidieron y mucho la lógica a trabajar, no la lógica del algoritmo, sino la del curso. Veía que habían muchas preguntas sin resolver en el foro por parte de los alumnos