Java Programming: Solving Problems with Software

This course, offered by Coursera, was developed by Duke University. It is comparable to the introductory Java course taught to Duke students, and it can be applied to multiple specialization certificate programs. It takes a little over 13 hours to complete and is designed as a 4-week curriculum.

Created by: Owen Astrachan

Produced in 2015

What you will learn

  • Editing, compiling and running Java programs
  • Conditionals and loops
  • Java API documentation
  • Debugging and the scientific method
  • Practical application of solving problems with Java programs
  • Utilizing test cases
  • Class creation and use
  • Techniques to use multiple methods in a single program

Quality Score

Content Quality
Video Quality
Qualified Instructor
Course Pace
Course Depth & Coverage

Overall Score : 96 / 100

Live Chat with CourseDuck's Co-Founder for Help

Need help deciding on a game design course? Or looking for more detail on Owen Astrachan's Java Programming: Solving Problems with Software? Feel free to chat below.
Join CourseDuck's Online Learning Discord Community

Course Description

Learn to code in Java and improve your programming and problem-solving skills. You will learn to design algorithms as well as develop and debug programs. Using custom open-source classes, you will write programs that access and transform images, websites, and other types of data. At the end of the course you will build a program that determines the popularity of different baby names in the US over time by analyzing comma separated value (CSV) files. After completing this course you will be able to:1. Edit, compile, and run a Java program;2. Use conditionals and loops in a Java program;3. Use Java API documentation in writing programs. 4. Debug a Java program using the scientific method;5. Write a Java method to solve a specific problem;6. Develop a set of test cases as part of developing a program;7. Create a class with multiple methods that work together to solve a problem; and8. Use divide-and-conquer design techniques for a program that uses multiple methods.



    • Course challenges students to ensure that lessons lead to a deep understanding of concepts and applications.
    • Forums and online peer resources empower students to overcome challenges and learn more in the process.
    • When used towards specialization, course helps acquire valuable professional certifications.
    • This may be an introductory course, but it is not designed for beginners. A coding or computer science background is expected for students to succeed.
    • Assignments are challenging to a degree disproportionate with the difficulty of the lessons.
    • Time to complete challenges may dramatically eclipse time required to get through lectures.

Instructor Details

Owen Astrachan

Owen Astrachan is a Professor of the Practice in the Department of Computer Science at Duke University. He has taught computer science at Duke for more than 25 years and taught high school for seven years before starting at Duke. In recent years, Professor Astrachan has worked with colleagues to redesign Duke's introductory computer science course to reach a broader range of students at Duke from a variety of backgrounds and fields. He also leads the Computer Science Principles project, which is completely grounded in a philosophy of engendering interest in new and previously untargeted/uninterested students, broadening participation in computing. Professor Astrachan received an NSF Career award, the NSF CISE Distinguished Education Fellow award, received two teaching awards at Duke and a teaching award when teaching on a sabbatical leave at the University of British Columbia. Professor Astrachan holds a PhD in Computer Science and a Master of Arts in Teaching (Mathematics), both from Duke University.



153 total reviews

5 star 4 star 3 star 2 star 1 star
% Complete
% Complete
% Complete
% Complete
% Complete

By David N on 8-Aug-16

You need a little more experience in coding that just the first course, or try not to leave everything by the end of the week(as I did) to find what you need for the assignments. Great course !

By Rathna S on 16-May-17

I have just started the course, but it is way over my head. This should clearly be marked as intermediate, advanced or marked as for people already in IT industry.

By Lucas N on 22-Mar-19

To say this course is for beginners is a misnomer. I think if one has some familiarity with another programming language then yes - this could be a beginner course. I came into this course with zero formal programming knowledge and was completely overwhelmed by the pace and material. This course does not give the students any/enough "small wins" to build muscle memory and gain confidence. I was drawn in by assumed time for completion. 4-8 hours/week sounded pretty good for the schedule of a working adult, however the 10-minute "assignments" consistently took me 6+ hours (most of the time spent calling/screen-sharing with my developer friend for help). Again, I think if one already has some programming knowledge (and therefore not *really* a 'beginner') then yes, this would probably take them that amount of time. I folded almost at the end of week 2. To echo another review here, it seems the instructors forgot what it is like to be a beginner. The instructors assume too much about what their students know. Really kicking myself for spending the money trying to limp through this course.If you are like me and starting without any experience, there are plenty of alternative free material actually geared towards 'beginners' that will give you the context and practice needed to actually comprehend the course material.

By Umar K on 19-Apr-19

The assignment questions were very repetitive. A lot of times the assignment questions weren't clear. As opposed to spending a lot of time learning and debugging my code, it felt like I was doing rote work. The worst part about the course experience was the BlueJay IDE. It requires you to manually compile your code, then create a new instance of your class, then run the test method, after EVERY change.

By shelp on 11-Feb-19

Really poor course structure and material explanations. Canceling subscription.

By Theresa S on 18-Feb-18

There are other OOP courses out there that are easier to follow & execute on assignments. The java editor used in this class is clunky and ridiculous and the assignment instructions seem out of date and disorganized - this class was infuriating. It takes simple assignments and obfuscates instructions.

By German on 12-May-19

I'm so glad I've found this amazing course! Thank you!

By Hasan on 11-Feb-18

It was very instructive course. I recomend every people who want to take this course. I thank all the instructors who gave this lesson.

By Sergey S on 21-May-19

Second week was a bit difficult to work with.

By on 9-Aug-19

, . !

By Yuming C on 3-Jun-19

A good experience! The programming exercise is interesting!

By Hanna B on 2-Jun-19

Thanks a lot for improving my skills! This course is really great to succed in Java as a beginner:) A lot of interesting practical tasks!