cs373: Programming A Robotic Car
Learn how to program all the major systems of a robotic car from the leader of Google and Stanford's autonomous driving teams.
Join the Class
This course is available to take, you can start at any time. Ready to sign up?
SEBASTIAN THRUN
Sebastian Thrun is a Research Professor of Computer Science at Stanford University, a Google Fellow, a member of the National Academy of Engineering and the German Academy of Sciences. Thrun is best known for his research in robotics and machine learning, specifically his work with self-driving cars.
GUNDEGA DEKENA
While Gundega spends most of her Udacity-hours using a computer to improve the forums or build beautiful visualizations, she's equally adept with a pitchfork, a telescope, or an electron microscope. The woman has skills. She once participated in the International Biology Olympiad in Thailand, where, in addition to competitive biology, she attended a seminar on the proper way to bow to a Thai princess. Now, as the Boss of the Baltic, Gundega bows to no one!
Programming A Robotic Car
Description: This class, taught by one of the foremost experts in AI, will teach you basic methods in Artificial Intelligence, including: probabilistic inference, planning and search, localization, tracking and control, all with a focus on robotics. Extensive programming examples and assignments will apply these methods in the context of building self-driving cars.
Prerequisites: The instructor will assume solid knowledge of programming, all programming will be in Python. Knowledge of probability and linear algebra will be helpful.
UNIT 1:
Basics of probability
Monte-Carlo localization
UNIT 2:
Gaussians and continuous probability
Tracking other cars with Kalman filters
UNIT 3:
Car localization with particle filters
UNIT 4:
Planning and search
Determining where to drive with A* search
Finding optimal routes with dynamic programming
UNIT 5:
Controls
Controlling steering and speeds with PID
UNIT 6:
Putting it all together
Programming a self-driving car
Prerequisites
You should either already know Python, or have enough experience with another language to be confident you can pick up what you need on your own. Fortunately, Python was built to be easy to learn, read, and use. If you already know another programming language, you'll be coding in Python in less than an hour. Additionally, knowledge of probability and linear algebra will be helpful.
Python Review
Python for Programmers
Introduction to Programs Data Types and Variables
Python Lists
For Loops in Python
While Loops in Python
Writing a Simple Factorial Program
Fun with Strings
Probability
Basic Probability
Probability (Part 6) [Conditional Probability]
Probability (Part 7) [Bayes' Rule]
Probability (Part 8) [More Bayes' Rule]
Introduction to Random Variables
Probability Density Functions
Expected Value: E(X)
Linear Algebra
Introduction to Matrices
Matrix Multiplication (Part 1)
Matrix Multiplication (Part 2)
Inverse Matrix (Part 1)
Inverting Matrices (Part 2)
Inverting Matrices (Part 3)
Matrices to Solve a System of Equations
Singular Matrices
Introduction to Vectors
Vector Dot Product and Vector Length
Defining the Angle Between Vectors
Cross Product Introduction
Matrix Vector Products
Linear Transformations as Matrix Vector Products
Linear Transformation Examples: Scaling and Reflections
Linear Transformation Examples: Rotations in R2
Introduction to Projections
Exploring the Solution Set of Ax = b
Transpose of a Matrix
3x3 Determinant
Introduction to Eigenvalues and Eigenvectors
Questions
Can I really learn how to build a self-driving car in this class?
Why should I learn how to build a robot car?
What programming language does the course use?
What type of math will I be learning in this course?
Are there homework assignments?
How will my final grade be determined?
Do I need to download Python on my computer?
Something on the site isn't working, who do I contact?
What are the rules on collaboration?
Can I really learn how to build a self-driving car in this class?
Yes! You will learn the basics of all the primary systems involved in programming a robotic car.
Why should I learn how to build a robot car?
First of all, this is a fascinating subject. The technologies involved are cutting edge, but the theories behind them are simpler than you might think. In addition to learning the math and science behind these technologies, you will also improve your coding probabilities as you solve the same problems that scientists at places like Google, Stanford, and MIT have been working on for years. Having these skills will not only be personally fulfilling, but could have benefits to your professional life as well. Taking this course is the first step that you can take towards creating a world where every car on the road drives itself. If you love learning or just hate traffic, this course is for you.
What programming language does the course use?
We will be using Python (Version 2.6). The concepts we cover in the class are not specific to Python, but apply to computer science in general no matter what programming language you are using.
What type of math will I be learning in this course?
This course will teach basic probability and linear algebra. Feel free to browse these links and the lessons that follow them on Khan Academy if you need some review.
Is there a course textbook?
There is no required textbook for the course, and the course content does not follow any textbook. There are many books available on probability, linear algebra, and Python programming that may be helpful to students.
Are there homework assignments?
Yes, there are six homework assignments, one at the end of each unit. To learn anything, but especially a subject as diverse as programming a robotic car, it is necessary to solve progressively more challenging problems on your own, and the homeworks will give you an opportunity to use what you have learned and develop your programming skills. The homework assignments will be similar to the in-class quizzes and mostly cover material from that week's unit, except the homework assignments will include larger problems for you to solve on your own.
Is there a final exam?
Yes. There will be an opportunity to do a final exam, roughly every 8 weeks. The dates will be announced.
How will my final grade be determined?
Your final grade will be the determined by your score in exam. You can study at your own pace and take the next offered exam, when you are ready!
Do I need to download Python on my computer?
You do not need to download Python to take the course, as we provide all the necessary tools right in your browser. If you prefer to experiment locally you can download Python.
How do I get help?
We love to see an active academic community, so we encourage you to post your question to the forum. Hopefully one of your peers will provide an adequate answer, but if not one of our course managers will chime in.
I think one of the quizzes or homework assignments is judging my answer incorrectly, who do I contact?
Post your solution to the forum with a tag "spoiler" and we will look into it.
What are office hours?
In the first run of the class once a week we took some of the top questions from the forum and Sebastian and Andy answered them in a recorded video.
Something on the site isn't working, who do I contact?
Fill out the Contact Us form found at the bottom of each Udacity webpage.
What are the rules on collaboration?
Working with other students is often the best way to learn new things, and we hope students in the class will form vibrant communities, both on-line and in-person, to help each other learn. The key is to use collaboration as a way to enhance learning, not as a way of sharing answers without understanding them.
You are welcome (and encouraged) to view the lectures with others, and discuss and work together on answering the in-lecture quizzes. For the homeworks, you may discuss the questions with other students in the on-line forums and in-person study groups, but everything you submit should be your own work. For the final exam, you are not permitted to work with anyone else, and should only ask clarification questions on the on-line forums which will be answered by the course staff.
