We may earn an affiliate commission when you visit our partners.
Owen Astrachan, Robert Duvall, Andrew D. Hilton, and Susan H. Rodger

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;

Read more

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.

Enroll now

What's inside

Syllabus

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!
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Explores string manipulation techniques, such as finding genes in a DNA string or identifying links in a web page
Uses hands-on labs and interactive materials to enhance understanding
Emphasizes the importance of organizing code into separate processing steps
Taught by experienced instructors from Duke University
Provides a practical introduction to Java programming, suitable for learners with limited or no programming experience
Course materials may not be up-to-date with the latest software versions

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Foundational java for problem solving

According to learners, this course is a highly recommended starting point for those new to programming or Java. Students frequently highlight the clear and concise explanations and the engaging, practical assignments, particularly the hands-on coding projects. The mini-project on baby names is often cited as a highlight, effectively tying concepts together. While the course uses the BlueJ IDE and custom Duke libraries, which some find less standard than other tools, reviewers generally agree that it provides a solid foundation in Java fundamentals and problem-solving techniques. A few mention it might be too basic for those with prior coding experience, but for its target audience of beginners, it's widely seen as effective and well-structured.
Involves BlueJ IDE and Duke libraries.
"Using BlueJ and the Duke libraries is different from standard Java development environments, but it works well for learning."
"The specific libraries for file handling and images were helpful for the projects."
"BlueJ is simple for beginners, but I'd like to transition to a more standard IDE later."
"Adjusting to the course's specific tools took a little time."
Instructors explain complex ideas simply.
"The instructors explain the concepts very clearly and make them easy to understand."
"Lectures were concise and easy to follow."
"I appreciated the step-by-step approach in the videos."
"The teaching style is really effective for beginners."
Hands-on projects help solidify understanding.
"The assignments were practical and really helped solidify my understanding."
"Solving problems with actual code made the concepts stick."
"Loved the hands-on exercises and the mini-projects."
"The practical exercises using provided data were a highlight for me."
Ideal first course into programming or Java.
"This course is an excellent starting point for someone completely new to programming."
"Perfect for beginners to grasp the basics of Java."
"I had no prior experience and found this course very accessible."
"Great introduction to Java programming concepts."
May be too slow for non-beginners.
"If you have some prior programming experience, the first modules might feel a bit slow."
"I already knew some basics, so I felt the pace was very gentle initially."
"This course is strictly for beginners, not intermediate learners looking to deepen knowledge."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Java Programming: Solving Problems with Software with these activities:
Review Java syntax and fundamentals
Refresher on the foundational aspects of Java syntax and concepts will equip you with a stronger basis for building upon in the course.
Browse courses on Java Syntax
Show steps
  • Go through Java tutorials or documentation
  • Review basic programming concepts such as variables, data types, and control flow
  • Practice writing simple Java programs
  • Complete online quizzes or exercises to test your understanding
  • Discuss or connect with other students to clarify any concepts
Volunteer at a local coding workshop
This activity allows you to give back to the community while sharing your knowledge of Java and inspiring others to learn programming.
Browse courses on Volunteering
Show steps
  • Find a local coding workshop that needs volunteers
  • Sign up to volunteer and assist with the workshop
  • Help participants with their Java coding exercises
  • Share your knowledge of Java and best practices
  • Encourage participants to continue learning and exploring Java
Compile a list of Java resources
This activity encourages you to explore and organize valuable Java resources, enhancing your knowledge base and making it easily accessible for future reference.
Browse courses on Java
Show steps
  • Search for and identify useful Java resources, including tutorials, documentation, and online courses
  • Organize the resources into a structured list or database
  • Categorize the resources based on topic or level of difficulty
  • Add brief descriptions or annotations to each resource
  • Share your resource list with other students or online communities
Four other activities
Expand to see all activities and additional details
Show all seven activities
Read Effective Java
This book provides fundamental and advanced insights into how to write excellent Java code. It covers topics such as object-oriented design, concurrency, security, and performance optimization.
View Effective Java on Amazon
Show steps
  • Read each chapter and make notes on the key concepts
  • Apply the concepts to your own Java programs
  • Discuss the concepts with other students or online forums
Create a presentation on a Java design pattern
This activity combines technical knowledge of Java design patterns with presentation skills, allowing you to enhance your communication and teaching abilities.
Browse courses on Design Patterns
Show steps
  • Choose a Java design pattern to present on
  • Research the pattern and its applications
  • Create a presentation that explains the pattern clearly
  • Rehearse your presentation and practice explaining the pattern
  • Deliver your presentation to a group of peers or online audience
Solve LeetCode problems
LeetCode provides a collection of coding challenges that test your problem-solving and coding skills. Solving these problems can help you improve your Java programming abilities.
Browse courses on Problem Solving
Show steps
  • Choose a problem that matches your skill level
  • Read the problem description carefully and understand the requirements
  • Design an algorithm to solve the problem
  • Implement your algorithm in Java
  • Test your solution and debug if necessary
Build a simple Java application
Building an application from scratch allows you to apply the concepts you've learned in the course and gain practical experience in software development.
Browse courses on Application Development
Show steps
  • Identify a problem or need that you want to address with your application
  • Design the architecture and user interface of your application
  • Implement the core functionality of your application
  • Test your application thoroughly
  • Deploy your application and share it with others

Career center

Learners who complete Java Programming: Solving Problems with Software will develop knowledge and skills that may be useful to these careers:
Software Architect
Software Architects play a crucial role in the design and development of software systems. They use their expertise in programming languages, software design patterns, and software development methodologies to create robust and scalable software solutions. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is essential for Software Architects. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Software Architects.
Software Developer
Software Developers are responsible for designing, developing, and maintaining software applications. They use their programming skills to translate user requirements into functional software solutions. The Java Programming: Solving Problems with Software course provides a comprehensive introduction to Java programming, covering topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Software Developers.
Web Developer
Web Developers are responsible for designing, developing, and maintaining websites and web applications. They use their programming skills to create user-friendly and interactive web experiences. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is a popular language for web development. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Web Developers.
Data Scientist
Data Scientists use their programming skills to analyze large datasets and extract meaningful insights. They use statistical techniques and machine learning algorithms to build predictive models and make data-driven decisions. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is a popular language for data science. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Data Scientists.
Data Analyst
Data Analysts use their programming skills to analyze data and identify trends and patterns. They use statistical techniques and machine learning algorithms to build predictive models and make data-driven decisions. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is a popular language for data analysis. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Data Analysts.
Product Manager
Product Managers are responsible for defining, developing, and launching new products and features. They work with engineers, designers, and marketers to bring products to market that meet customer needs. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is a popular language for developing software products. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Product Managers.
Project Manager
Project Managers are responsible for planning, executing, and delivering projects. They work with stakeholders to define project goals, timelines, and budgets. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is a popular language for developing software projects. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Project Managers.
Business Analyst
Business Analysts use their programming skills to analyze business processes and identify opportunities for improvement. They work with stakeholders to define business requirements and develop solutions. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is a popular language for business analysis. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Business Analysts.
Technical Writer
Technical Writers use their programming skills to create documentation for software products and services. They work with engineers and developers to explain how software works and how to use it. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is a popular language for developing software documentation. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Technical Writers.
Computer Science Teacher
Computer Science Teachers use their programming skills to teach students about computer science concepts and programming languages. They work with students of all ages and levels, from elementary school to college. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is a popular language for teaching computer science. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Computer Science Teachers.
Software Quality Assurance Engineer
Software Quality Assurance Engineers use their programming skills to test software products and services for defects. They work with developers to identify and fix bugs. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is a popular language for developing software testing tools and frameworks. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Software Quality Assurance Engineers.
Computer Systems Analyst
Computer Systems Analysts use their programming skills to analyze, design, and implement computer systems. They work with businesses and organizations to identify their IT needs and develop solutions. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is a popular language for developing computer systems. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Computer Systems Analysts.
Information Security Analyst
Information Security Analysts use their programming skills to protect computer systems and networks from security threats. They work with businesses and organizations to identify and address security vulnerabilities. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is a popular language for developing security software. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Information Security Analysts.
Database Administrator
Database Administrators use their programming skills to manage and maintain databases. They work with businesses and organizations to ensure that their data is safe, secure, and accessible. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is a popular language for developing database management systems. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Database Administrators.
Network Administrator
Network Administrators use their programming skills to manage and maintain computer networks. They work with businesses and organizations to ensure that their networks are reliable, secure, and efficient. The Java Programming: Solving Problems with Software course provides a solid foundation in Java programming, which is a popular language for developing network management tools and frameworks. The course covers topics such as object-oriented programming, data structures, algorithms, and design patterns. By taking this course, learners can gain the skills and knowledge necessary to become successful Network Administrators.

Reading list

We've selected 11 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Java Programming: Solving Problems with Software.
Comprehensive guide to Java concurrency. It covers all the basics of concurrency, including threads, locks, and synchronization.
Collection of 78 best practices for writing Java code. It covers a wide range of topics, including coding conventions, object-oriented design, and performance optimization.
Comprehensive guide to Java persistence with Hibernate. It covers all the basics of persistence, including entities, relationships, and transactions.
Comprehensive guide to Java servlet programming. It covers all the basics of servlet programming, including servlets, JSP, and filters.
Comprehensive guide to Java web services. It covers all the basics of web services, including SOAP, WSDL, and REST.
Comprehensive guide to Hibernate. It covers all the basics of Hibernate, including entities, relationships, and transactions.
Comprehensive introduction to Java programming. It covers all the basics of Java, including data types, variables, operators, control flow, and methods. It also includes several case studies that show how Java can be used to solve real-world problems.
Comprehensive guide to Git. It covers all the basics of Git, including branching, merging, and rebasing.
Comprehensive guide to Java programming. It covers all the basics of Java, including data types, variables, operators, control flow, and methods. It also includes several case studies that show how Java can be used to solve real-world problems.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser