When you enroll in this course, you'll also be enrolled in this Specialization.
Learn new concepts from industry experts
Gain a foundational understanding of a subject or tool
Develop job-relevant skills with hands-on projects
Earn a shareable career certificate
There are 5 modules in 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.
Welcome to “Java Programming: Principles of Software Design”! We are excited that you are starting our course to learn how to write programs in Java, one of the most popular programming languages in the world. In this introductory module, you will hear an overview of this course and be introduced to the supporting resources available.
What's included
1 video2 readings
Show info about module content
1 video•Total 4 minutes
Welcome!•4 minutes
2 readings•Total 15 minutes
Programming Resources•10 minutes
Report a problem with the course•5 minutes
Earthquakes: Programming and Interfaces
Module 2•3 hours to complete
Module details
In this module, we will introduce a data set containing details about earthquakes around the world. You will learn how to pull this data into a program, search through the data, and filter the data based on desired criteria. By the end of this module, you will be able to (1) write programs that include multiple classes and ArrayLists of class types, (2) find the maximum value in an ArrayList, (3) use a Filter interface to search through data, (4) implement interfaces with method signatures, and (5) combine several filters together.
What's included
11 videos4 readings3 assignments
Show info about module content
11 videos•Total 57 minutes
Introduction•7 minutes
Relationships Between Classes•5 minutes
Licensing and APIs•3 minutes
Coding a Magnitude Filter•11 minutes
Coding the Closest Quakes•12 minutes
Summary•3 minutes
Introduction•2 minutes
Interfaces to Avoid Duplication•6 minutes
Interfaces in More Depth•3 minutes
MatchAll•4 minutes
Summary•1 minute
4 readings•Total 40 minutes
Module Learning Outcomes / Resources•10 minutes
Location class documentation and license resources•10 minutes
Earthquakes: Programming and Interfaces•30 minutes
Earthquakes: Sorting Algorithms
Module 3•3 hours to complete
Module details
In this module, you will continue using real earthquake data to explore several sorting algorithms. You will learn how to implement a selection sort and a bubble sort, then be introduced to a Java method Collections.sort, which sorts with much greater efficiency. By the end of this module, you will be able to (1) implement several sorting algorithms from scratch, (2) use efficient pre-existing sorting classes, (3) modify a class’s compareTo method to choose the criteria by which objects of that type are ordered, and (4) write classes that implement the Comparator interface to create interchangeable sorting criteria.
In this module, you will explore some of the underlying concepts of predictive text. The first lesson will introduce random character generation and then how to train the character selection based on an input text. The second lesson will extend this concept to complete words. By the end of this module, you will be able to: (1) base random text generation on the frequency of characters in a training text, (2) collect a set of characters that occur in a text after randomly chosen initial character(s) to create a semi-random text, (3) extend the predictive text generation to use whole words, and (4) implement your own .equals method to compare complex data types.
What's included
15 videos5 readings5 assignments
Show info about module content
15 videos•Total 95 minutes
Introduction•6 minutes
Order-Zero, Order-One•7 minutes
Finding Follow Set•7 minutes
Implementing Order-Two•9 minutes
Testing and Debugging•8 minutes
Interfaces and Abstract Classes•9 minutes
Summary•2 minutes
Introduction•3 minutes
Order-One Concepts•6 minutes
Order-One Helper Functions•9 minutes
WordGram Class•4 minutes
WordGram Class Implementation•5 minutes
Equals and HashCode Methods•5 minutes
Equals Method Implementation•11 minutes
Summary•3 minutes
5 readings•Total 50 minutes
Module Learning Outcomes / Resources•10 minutes
Programming Exercise: Generating Random Text•10 minutes
Programming Exercise: Interface and Abstract Class•10 minutes
Programming Exercise: Word N-Grams•10 minutes
Programming Exercise: WordGram Class•10 minutes
5 assignments•Total 150 minutes
Generating Random Text•30 minutes
Interface and Abstract Class•30 minutes
Word N-Grams•30 minutes
WordGram Class•30 minutes
N-Grams: Predictive Text•30 minutes
Java: Tools and Libraries for Everyone
Module 5•2 hours to complete
Module details
As you reach the end of this series, you may wish to extend your Java experience to tools beyond those provided here. This module will cover some of the Java basic information that is needed to program without BlueJ or the edu.duke library. After completing this module, you will be able to: (1) write a main method to start a Java program in any programming environment, (2) use the “static” keyword to modify fields, (3) find alternative editors to use with Java, (4) use exceptions to debug your program and make it more robust, and (5) reference Java libraries that are necessary to read files without the edu.duke library.
What's included
13 videos3 readings1 assignment
Show info about module content
13 videos•Total 42 minutes
Miscellaneous Java•1 minute
Main Method•4 minutes
Static•5 minutes
Editors•9 minutes
Summary•1 minute
Introduction•1 minute
Understanding Exceptions•4 minutes
Handling Exceptions•2 minutes
Declaring Exceptions•1 minute
Throwing Exceptions•2 minutes
Reading Files with Java.nio•7 minutes
Hello Around the World with Eclipse•4 minutes
Summary•1 minute
3 readings•Total 30 minutes
Module Learning Outcomes / Resources•10 minutes
Where To Go From Here•10 minutes
Share your learning experience•10 minutes
1 assignment•Total 30 minutes
Java: Tools and Libraries for Everyone•30 minutes
Earn a career certificate
Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.
Instructors
Instructor ratings
Instructor ratings
We asked all learners to give feedback on our instructors based on the quality of their teaching style.
Duke University has about 13,000 undergraduate and graduate students and a world-class faculty helping to expand the frontiers of knowledge. The university has a strong commitment to applying knowledge in service to society, both near its North Carolina campus and around the world.
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."
Jennifer J.
Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
Larry W.
Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."
Chaitanya A.
"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."
Learner reviews
4.6
1,497 reviews
5 stars
74.63%
4 stars
18.75%
3 stars
4.07%
2 stars
1%
1 star
1.53%
Showing 3 of 1497
A
AR
4·
Reviewed on Jan 26, 2016
i liked everything except some of the quizzes since some questions were unclear or wrong (but still, I was a beta tester, so all great) - thank you!
A
AP
5·
Reviewed on Jun 25, 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! :)
R
RR
4·
Reviewed on Aug 22, 2020
The Course is Good. But Week 3 is so hard to understand and the assignments are frustrating and it took long time to complete. Week 3 must be made easier......
Will I receive a transcript from Duke University for completing this course?
No. Completion of a Coursera course does not earn you academic credit from Duke; therefore, Duke is not able to provide you with a university transcript. However, your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
When will I have access to the lectures and assignments?
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
What will I get if I subscribe to this Specialization?
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Is financial aid available?
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.