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:

1 - 25 of 252 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 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 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 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 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 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 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.

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


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 Will C

Jul 16, 2020

I really enjoyed this course and learned a ton. However, I felt like there were a few things that could have been covered in the lectures that were expected in the assignments. I had to dig through many years of forum posts to find help and while I understand that it's helpful to do my own research, it felt like a lot of wasted time sometimes. Finally, in week 3, the module on WordGrams was really difficult and extremely rewarding to complete. And then it wasn't even on the graded quiz!! That was disappointing.

By Itai E

Jul 21, 2019

This course really increased the difficulty in Week 3 and gave poorly written instructions to go along with it. Overall, the course was very interesting and I learned a lot from it. Anyone who is interested in expanding their Java programming skills and write "neater" or "better code, this course is for you.

By Nicholas B

Apr 12, 2018

Great course in general, but some of the exercises / quizzes could be a bit more precise in what they are looking for. Lots of time debugging, lots of time in forums trying to figure out what was wrong, only to find that we were using the wrong project / class because it wasn't clear which one they required.

By Khushboo M

Dec 3, 2022

Good course to start with, BlueJ experience for the first time was amazing for specific to this course. and the real life example of earth quake and the interfaces were thought in such a nice way that it engage to listen and apply.