Chevron Left
Back to Java Programming: Principles of Software Design

Java Programming: Principles of Software Design, Duke University

4.6
666 ratings
110 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:

106 Reviews

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.

By Alex Sanchez

Nov 25, 2018

Awesome course. These professors are great. They are from Duke University

By Karim Mosad Elgazar

Nov 18, 2018

great course recommend it so much

By Sheldon Teerlink

Nov 16, 2018

The practice examples and content are top notch. Learning about markov models was particularly interesting.

By Алексей

Oct 24, 2018

Pros:

There are a lot of interesting subjects - the basics of the cryptography (the Caesar cipher, the vigenere cipher), the practical use of the markovs model to generate funny texts, some basics with image filtering and if you dont use course IDE blueJ and duke libraries and found how to do this thing with java core - it will be more profitable.

Cons:

Using custom libraries is very bad for students. We must study java core not some custom libraries.

BlueJ also is a bad choise, even the notepad or the vim are better for understanding the compilation process.

Several tasks and questions are hardly to understand since they are badly formulated.

Also there is no peer reviewed assignments.

By Mary Sexton

Sep 24, 2018

Decent. Moved kinda slowly, but it's for beginners, so what did I expect? This is a nice progression of classes for someone with no previous programming experience; if you have previous experience, in another language, you may wish to start with an intermediate course.

By Chris Taylor

Aug 21, 2018

Difficult and challenging, but worth the struggle.

By Reda Ramadan

Aug 08, 2018

very interesting material, thanks for your great effort.

By Mengfei Wang

Jul 29, 2018

Sometimes the quiz instruction is not very clear. Sometimes, I could get the assignment results, pass the practice quiz, but couldn't pass the review quiz.

By Haoran

Jul 13, 2018

good intro for programming in java