[MUSIC]
>> Hi, I'm Leo Porter.
>> I'm Christine Alvarado.
>> And I'm Mia Minnes.
Welcome to this third course in our intermediate Java Programming and
Data Structures Specialization.
Welcome back to those of you who have been with us from the beginning and
also welcome to those of you just joining us.
We hope you're excited to learn some data structures and
algorithms in the context of a really interesting project.
>> If you were with us for those first two courses,
you've already learned a number of essential skills for a software engineer.
You already know how to organize your code into classes,
how to analyze an algorithm for its efficiency and how to both use and
implement a wide variety of data structures.
In this course, we're gonna be focusing on advanced data structures.
Specifically, actually, just one data structure, graphs.
>> Wait, just one data structure?
That's it? >> Yeah,
it actually turns out that graphs are such a complex topic that they kinda deserve
a course in themselves.
And graphs are one of the most fundamental data structures in all of computer science
and the algorithms associated with them are used in a variety of fields,
not just computer science.
In fact, graphs are such a big topic that actually field in themselves and
the number of people have been successful in their careers just focusing on graphs.
>> Oh, I guess it's probably good for just focusing on graphs then,
such as our last two courses got a little large.
So, it also make sense then that your project is gonna focus on graphs.
You're gonna be build a full scale mapping application with many
of the features you expect from a product like Google Maps, like route planning.
And in fact,
you're going to get to use real world street data that you get to choose.
You're going to be building this application and then putting it into
a front end that we provide that actually uses the Google Maps API.
So in a sense, you really will be building your very own Google Maps.
>> And in the last week of the course, we'll be thinking about some of
the algorithms that are needed for graphs and maps and we'll actually come across
some fundamental problems for which there's no known good algorithms.
And when we say no known good algorithms, we mean no one in the world has found
a good algorithm for solving some of these problems.
So if you go ahead and find some of these solutions,
you'd end up being pretty rich and famous.
>> Yeah, I know when I first learned about these problems,
I was sure that I'd be the one to find the solution that everyone else had missed.
>> Yeah, it's so tantalizing.
We've all looked for it.
The thing is though, that we still need to solve these problems.
So even though there's no known good efficient algorithms for solving them,
we still need to find some way around that.
So in this course, we'll be talking about heuristics and
optimizations that may not give us the best solutions,
but still run pretty fast and give us some sort of an answer.
So we'll talk about these problems's solutions in this course and
we'll also come up with a way of rephrasing some problems and
thinking about different ways of modeling the graph, so
that sometimes something that looked completely intractable becomes solvable.
And we'll think about a particular example in bioinformatics that was done right here
on campus at UC San Diego.
>> So thinking back to the logistics of this course,
a number of your favorite features from our previous courses are returning.
First, you've already heard about the project and it's again,
going to be project based.
We're also gonna allow you still to find your own path for the course.
Finding the right mix then of both challenge and support,
so that you can succeed.
We're also gonna still have UC San Diego learners talking about the concepts and
we're also gonna have Google engineers talking about why those concepts matter
on the job.
>> Ultimately, the skills you learn in this course as well as the the skills you
learned in our prior two courses are gonna prepare you to succeed in a number of
software engineer roles.
Looking ahead to our next course,
we'll give you more skills not only to succeed on the job, but
also to succeed in the interview process, but that's getting ahead of ourselves.
This course is all about graphs.
So let's get started with those.