Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Duke University

Java Programming: Solving Problems with Software

Duke University via Coursera


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; and 8. Use divide-and-conquer design techniques for a program that uses multiple methods.


  • Introduction to the Course
    • Welcome to “Java Programming: Solving Problems with Software”! 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 get to meet the instructor team from Duke University and have an overview of the course. Have fun!
  • Fundamental Java Syntax and Semantics
    • In this module, you will learn to write and run your first Java programs, including one program that prints “Hello!” in various countries’ languages and another where you will analyze the perimeters and other information of shapes. To accomplish these tasks, you will learn the basics of Java syntax and how to design stepwise solutions with programs. By the end of this module, you will be able to: (1) Download and run BlueJ, the Java programming environment for this course; (2) Access the documentation for the Java libraries specially designed for this course; (3) Edit, compile, and run a Java program; (4) Construct methods, variables, if else statements, and for each loops in Java; and (5) Use Iterables (like DirectoryResource) to run a program that iterates over multiples lines in a document or webpage or multiple files in a directory.
  • Strings in Java
    • This module begins with a short presentation from Raluca Gordân, an assistant professor in Duke University’s Center for Genomic and Computational Biology, about an important problem genomics scientists encounter regularly: how to identify genes in a strand of DNA. To tackle this problem, you will need to understand strings: series of characters such as letters, digits, punctuation, etc. After learning about Java methods that work with strings, you will be able to find genes within a DNA string as well as tackle other string related problems, such as finding all of the links in a web page. By the end of this module, you will be able to: (1) Use important methods for the Java String class; (2) Use conditionals, for loops, and while loops appropriately in a Java program; (3) Find patterns in the data represented by strings to help develop the algorithm for your program; (4) Understand the importance of designing programs that keep different data processing steps separate; (5) Use the StorageResource iterable for this course to store some data for further processing; and (6) Rely on Java documentation to better understand how to use different Java packages and classes.
  • CSV Files and Basic Statistics in Java
    • A common format for storing tabular data (any data organized into columns and rows) is in comma separated values (CSV) files. In this module, you will learn how to analyze and manipulate data from multiple CSV data files using a powerful open-source software package: Apache Commons CSV. Using this library will empower you to solve problems that could prove too complex to solve with a spreadsheet. By the end of this module, you will be able to: (1) Use the open-source Apache Commons CSV package in your own Java programs; (2) Access data from one or many CSV files using Java; (3) Convert strings into numbers; (4) Understand how to use “null” in Java programs (when you want to represent “nothing”); (5) Devise an algorithm (and implement in Java) to answer questions about CSV data; and (6) Analyze CSV data across multiple CSV files (for example, find maximums, minimums, averages, and other simple statistical results).
  • MiniProject: Baby Names
    • This module wraps up the course with a mini project that ties together the different practices, skills, and libraries you have gained across the course! Using data on the popularity of different baby names in the United States from the past several decades, you will be able to compare different names’ popularity over time. While the data we have collected for this course is from the United States, we welcome you to share data from other countries in the course discussion forums. Good luck with the mini project!

Taught by

Owen Astrachan, Robert Duvall, Andrew D. Hilton and Susan H. Rodger


3.1 rating, based on 15 Class Central reviews

4.6 rating at Coursera based on 7857 ratings

Start your review of Java Programming: Solving Problems with Software

  • Even though it is for beginners it is somewhat hard. The hardest parts are the use of BlueJ which is much harder to use than any other IDE without the adudant helps, tutorails and posts all the others have. The programming assignments are really challanging too, but with persevarance one can achieve them. The best parts of this course are the 7 step approach to find solution/design algorithm and the assignments/projects which are interesting in topic, like finding codons in DNA, parsing export data from CSV.
  • Ericdo1810
    This course, rather than teaching you how to write programs in Object-oriented programming paradigm, teaches you how to write simple programs (classes) in Java. The purpose of this course, I feel, is not to teach me Java specifically (because they…
  • Anonymous
    What happened? The first course in this series was a stellar introduction to programming for those with little/no experience, with the added bonus of amazing "mentors" (moderators) in the discussion forums to help solve issues. This course, however,…
  • Anonymous
    This course moved too quickly for a beginner learning java. Week 1 to Week 2 did not seem to tie together. The coding examples that the lecturers used in the videos and quizes did not seem to work
  • Anonymous
    To difficult for a beginner. You have to write very complicated code to pass the quiz. Not recommend for a beginner.
  • Anonymous
    definitely not for a beginner!!! poor teaching techniques , explanations are not clear, the classes don't tie together. not worth to purchase
  • Anonymous
    I have coding experience with C++ and have been studying these materials intensely, but I am stuck on Week 2. This class is NOT for beginners. Instructors are not helpful at all in the forums. I only gave it 2 stars because it seems like it might be useful for an intermediate level.
  • Anonymous
    This course is typically the kind of fun, beginner-friendly, challenging intro to java course that can familiarize you with basic concepts of Java very quickly.
    Quizzes are quite tough to complete, due to the input of answer format. However, it's worth the challenge since your written program needs to work perfectly for you to score.
    However, the course is not prohibitively difficult. In fact, it's quite fun.
    Awesome course, love the teaching of the Duke CS Edu team :)
  • Muhammad Adnan
    This course, rather than teaching you how to write programs in Object-oriented programming paradigm, teaches you how to write simple programs (classes) in Java.

    The purpose of this course, I feel, is not to teach me Java specifically (because they do not really touch on the relationships of classes, objects, superclasses, subclasses, interface, inheritance, etc). However, they teach me programming in the Java development environment. In short, the goal is to teach me how to write simple codes and perform basic algorithms in Java.
  • Anonymous
    Do not take this course. it is very difficult to understand to a beginner. you have to write very complicated code for passing the quiz. and you at least should score 80% or more to pass the quiz, I mean what the hell man. the organizer of this program must should understand that it is not able to everyone to score 80% IN EVERY QUIZ. NOT EVERYONE IS CAPABLE OF THAT. The course is tough for beginners. very mismanagement. POOR COURSE. DONT ENROLL IN IT . I DID BECAUSE OF SOME FIRM REASONS. LACK OF COORDINATION. will not recommend to ANYONE.......
  • Anonymous
    Hello. I wanted to learn Java and picked up this course because so far I've enjoyed all the mooc I followed with Coursera.
    Well, I'm disappointed that's why I gave up. Flat voice, boring, too many people who are reading aloud their text. It's better taking an introductory book and read it.
  • Hussein Bilal

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.