Chevron Left
Back to Java Programming: Principles of Software Design

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

1,238 ratings
215 reviews

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 210 Reviews for Java Programming: Principles of Software Design

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 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 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 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 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 Abdul H

Sep 15, 2020

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

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

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 Jonathan G T I

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