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 6 modules in this course
How does Google Maps plan the best route for getting around town given current traffic conditions? How does an internet router forward packets of network traffic to minimize delay? How does an aid group allocate resources to its affiliated local partners?
To solve such problems, we first represent the key pieces of data in a complex data structure. In this course, you’ll learn about data structures, like graphs, that are fundamental for working with structured real world data. You will develop, implement, and analyze algorithms for working with this data to solve real world problems. In addition, as the programs you develop in this course become more complex, we’ll examine what makes for good code and class hierarchy design so that you can not only write correct code, but also share it with other people and maintain it in the future.
The backbone project in this course will be a route planning application. You will apply the concepts from each Module directly to building an application that allows an autonomous agent (or a human driver!) to navigate its environment. And as usual we have our different video series to help tie the content back to its importance in the real world and to provide tiered levels of support to meet your personal needs.
Welcome to the first week in the third course of our Intermediate Java Programming Specialization. Once again start with introductions, and in particular introduce the unique structure of this course. Also, if you're not sure if this course is right for you, we've got an optional pre-course quiz coming right up that can help you figure out if you're in the right place. If you decide to stay with us (and we really hope you will!) we've got a great backbone project for you: your very own mapping application, inspired by Google Maps! The core data structure throughout this course is graphs, which may very well be the most fundamental data structure in all of computer science. Ready to begin? So are we!
After completing this course, you will be able to ...•5 minutes
Is this course right for me?•10 minutes
Up Next: A short survey•0 minutes
If you want more practice before you begin...•2 minutes
The structure of this course•2 minutes
Welcome from the Google engineers•3 minutes
Project Overview•10 minutes
Setting up Java and Eclipse•10 minutes
Getting and Setting up the Starter Code•10 minutes
Project: Orientation to the Starter Code, Data Files and Front-end•10 minutes
3 assignments•Total 80 minutes
Pre-course quiz•20 minutes
Survey: Your goals for the course•30 minutes
Course Structure and Starter Code Quiz (make sure you can run the starter code first)•30 minutes
1 discussion prompt•Total 10 minutes
Introduce Yourself!•10 minutes
Introduction to Graphs
Module 2•5 hours to complete
Module details
This week we'll start getting technical, introducing you to the central data structure in the course: Graphs. You'll learn the basics and then have a chance to dive in a little deeper into the code, getting ready to start building that Google Maps-like application.
By the end of this week, you will be able to...•5 minutes
(Read only AFTER finishing Graphs Quiz)•10 minutes
Graph definitions and implementation: a glossary•10 minutes
Week 2: Additional Resources•2 minutes
Programming Assignment FAQ•10 minutes
Graph definitions and implementations Quiz Answer explanations (Read ONLY after you pass the quiz)•10 minutes
3 assignments•Total 55 minutes
Graphs•5 minutes
Where to next?•30 minutes
Graph definitions and implementation•20 minutes
1 programming assignment•Total 120 minutes
Project: Implementing Graphs•120 minutes
Class design and simple graph search
Module 3•8 hours to complete
Module details
This week you'll get the backbone of your map search engine up and running. In previous courses, including the previous courses in this specialization, you've probably been given most of the classes you needed to complete the assignments. But learning how to design classes from scratch is a key skill that you will need as you become a more sophisticated Java programmer. This week we'll give you the tools you need to create a robust and elegant class design for your map search engine. We'll introduce a similar problem and show you how it can be represented as a graph. Then we'll introduce two core search algorithms: depth-first search and breadth-first search. Finally, we'll turn our graph problem into a set of Java classes. Your task on the programming assignment this week will be to do the same thing, but in the context on the map search engine!
By the end of this week, you will be able to ...•5 minutes
Week 3: Additional Resources•1 minute
End of Week Quiz Answers•10 minutes
2 assignments•Total 50 minutes
Where to next?•30 minutes
End of Week Quiz (complete project and peer review first)•20 minutes
1 programming assignment•Total 240 minutes
Project: Class Design and Graph Search•240 minutes
1 peer review•Total 60 minutes
Code Design Peer Review•60 minutes
Finding shortest paths in weighted graphs
Module 4•6 hours to complete
Module details
In the past two weeks, you've developed a strong understanding of how to design classes to represent a graph and how to use a graph to represent a map. In this week, you'll add a key feature of map data to our graph representation -- distances -- by adding weights to your edges to produce a "weighted graph". Although this might seem like a small change, the algorithms that work for unweighted graphs may prove ineffective for weighted graphs. To address this problem, you'll explore more advanced shortest path algorithms. First, you'll see how to find the shortest path on a weighted graph, then you'll see how to find it more quickly. In the project, you'll apply these ideas to create the core of any good mapping application: finding the shortest route from one location to another.
By the end of this week, you will be able to ...•5 minutes
Week 4: Additional Resources•1 minute
Test cases and debugging guide for the quiz•30 minutes
End of Week Quiz Answers•10 minutes
1 assignment•Total 10 minutes
End of Week Quiz (very short, do programming assignment first)•10 minutes
1 programming assignment•Total 270 minutes
Project: Shortest Path•270 minutes
Route planning and NP-hard graph problems
Module 5•2 hours to complete
Module details
In this week, we'll go beyond the problem of finding a path between two points, and focus on problems requiring overall path planning. For example, if you wanted to go on errands and visit 6 different locations before returning home, what is the optimal route? This problem is actually a really well known problem in computer science known as the Travelling Salesperson Problem (TSP). Attempting to solve the problem will lead us to explore complexity theory, what it means to be NP-Hard, and how to solve "hard" problems using heuristics and approximation algorithms. We'll end the week by showing how reformulating a problem can have a huge impact: making something which was effectively unsolvable before, now solvable!
What's included
11 videos3 readings1 assignment
Show info about module content
11 videos•Total 58 minutes
Introduction•0 minutes
Core: Traveling Salesperson Problem (TSP)•5 minutes
Concept Challenge: An algorithm for TSP•7 minutes
Core: TSP Brute-Force Algorithm•4 minutes
Core: TSP Algorithm Running Time•8 minutes
Core: NP Hard•6 minutes
Core: Approximations and Heuristics•7 minutes
Core: Hamiltonian Graphs•7 minutes
Core: Eulerian graphs•5 minutes
Core: Eulerian graphs, an algorithm•3 minutes
Core: An application in bioinformatics•5 minutes
3 readings•Total 25 minutes
By the end of this week, you will be able to ...•5 minutes
Week 5: Additional Resources•10 minutes
End of Week Quiz Answers•10 minutes
1 assignment•Total 30 minutes
End of Week Quiz•30 minutes
End of Course Project Extension
Module 6•6 hours to complete
Module details
You made it to the last week of our course! We're glad you're still with us. As a reward, there's no new content to learn this week. Instead you'll get the opportunity to extend your project in a direction of your own choosing. We hope you've got some neat ideas for personalizing your map application, and we look forward to seeing them in the peer review gallery. Submitting to the peer review gallery is optional (though the extension is required), but we hope you'll choose to participate.
UC San Diego is an academic powerhouse and economic engine, recognized as one of the top 10 public universities by U.S. News and World Report. Innovation is central to who we are and what we do. Here, students learn that knowledge isn't just acquired in the classroom—life is their laboratory.
"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.8
1,242 reviews
5 stars
80.83%
4 stars
15.53%
3 stars
2.49%
2 stars
0.72%
1 star
0.40%
Showing 3 of 1242
V
VS
5·
Reviewed on Apr 13, 2019
As I keep completing the assignment, I got more confident on my Java and debugging skills. I would recommend solidifying your undestanding of the Data Structures
B
BS
5·
Reviewed on Apr 1, 2020
This was an excellent course for those looking to learn more about graphs (and to get experience in coding graphs in Java). The UCSD instructors are excellent.
A
AS
5·
Reviewed on Aug 19, 2016
Very nice course for clearing the concept of the advanced search algorithm and applying them in the real world scenario. Well designed course and programming materials.
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.