Skills you'll learn:

Introduction to Self-Driving Cars
Nanodegree Program
Learn the essentials of building a self-driving car, including probability, C++, machine learning, and linear algebra.
Learn the essentials of building a self-driving car, including probability, C++, machine learning, and linear algebra.
Intermediate
3 months
Last Updated December 18, 2024
Prerequisites:
Intermediate
3 months
Last Updated December 18, 2024
Skills you'll learn:
Prerequisites:
Courses In This Program
Course 1 • 1 hour
Orientation
Welcome to the Intro to Self-Driving Cars Nanodegree program! In this section you'll get a sneak peak of the classroom, meet the team, and learn about the services provided. Then you'll take a readiness assessment and check out some learning resources to help you make the most out of your experience.
Lesson 1
Introduction
Welcome to the Intro to Self-Driving Cars Nanodegree program! We are excited to have you and hope you are looking forward to learning about this game-changing field!
Lesson 2
Getting Help
You are starting a challenging but rewarding journey! Take 5 minutes to read how to get help with projects and content.
Lesson 3
The Carla Chronicles: Back on Track
Work through the readiness assessment with Carla and her friends to make sure you are ready to begin your own personal adventure with self-driving cars!
Lesson 4
Get Ready - Intro to Self-Driving Cars
While you wait for your classroom to open, refresh your math and programming skills with these helpful resources.
Course 2 • 3 weeks
Bayesian Thinking
Learn the framework that underlies a self-driving car’s understanding of itself and the world around it, and to see the world the way a self-driving car does.
Lesson 1
Introduction
A brief introduction to Bayesian Thinking from Sebastian.
Lesson 2 • Project
Joy Ride
A quick introduction to controlling a (simulated) car with code. Parts 1 and 2 will show you how to control gas and steering and in part 3 you'll program a car to parallel park.
Lesson 3
Probability
Learn the basics of probability - the language of robotics. This lesson will focus on the math. In later lessons you'll apply this math in Python code.
Lesson 4
Conditional Probability
In order to infer meaning from noisy sensor measurements, a self driving car needs to use the math of Conditional Probability. Learn this math from Sebastian (and then apply it in the next lesson).
Lesson 5
Programming Probability in Python
Your chance to learn basic Python syntax while applying what you learned about probability and conditional probability in the last two lessons.
Lesson 6
Bayes' Rule
Learn about Bayes' Rule from Sebastian and get your first peek at how a self driving car uses Bayes' Rule to understand where in the world it is.
Lesson 7
Programming Bayes' Rule and World Representations
In this lesson, you can expect a lot of hands-on practice programming Bayesian probability in Python, and representing a 2D world that you'll need to localize a car.
Lesson 8
Probability Distributions
Learn how a robot represents it's belief about uncertain quantities using something known as a **probability distribution**.
Lesson 9
Programming Probability Distributions
Apply what you've learned in this course by programming and visualizing probability distributions.
Lesson 10
Gaussian Distributions
You will work with a specific continuous probability distribution called the Gaussian distribution. A Gaussian distribution helps describe uncertainty in sensor measurements and a vehicle's location.
Lesson 11
Robot Localization
Sebastian Thrun will give you an overview of the theory behind localization!
Lesson 12
Histogram Filter in Python
Write the `sense` and `move` functions for a 2 dimensional histogram filter in Python.
Course 3 • 2 weeks
Working with Matrices
This course will focus on two tools which are vital to self-driving car engineers: object oriented programming and linear algebra.
Lesson 1
Section Overview
An introduction to the amazing tools and algorithms you'll learn in this lesson.
Lesson 2
Introduction to Kalman Filters
Learn the intuition behind the Kalman Filter, a vehicle tracking algorithm and implement a one-dimensional tracker of your own.
Lesson 3
State and Object-Oriented Programming
In this lesson, students will learn about representing the state of a car in programming as classes and objects and mathematically as vectors that can be changed with linear algebra!
Lesson 4
Matrices and Transformation of State
Linear Algebra is a rich branch of math and a useful tool. In this lesson you'll learn about the matrix operations that underly multidimensional Kalman Filters.
Lesson 5 • Project
Implement Matrix Class
Practice using your object oriented programming and matrix math skills by filling out the methods in a partially-completed `Matrix` class.
Course 4 • 2 weeks
C++ Basics
This course is the first step in a rewarding journey towards C++ expertise. The goal is translation: get a program written in Python, and translate it into C++.
Lesson 1
C++ Getting Started
The differences between C++ and Python and how to write C++ code.
Lesson 2
C++ Vectors
To program matrix algebra operations and translate your Python code, you will need to use C++ Vectors. These vectors are similar to Python lists, but the syntax can be somewhat tricky.
Lesson 3
Practical C++
Learn how to write C++ code on your own computer and compile it into a executable program without running into too many compilation errors.
Lesson 4
C++ Object Oriented Programming
Learn the syntax of C++ object oriented programming as well as some of the additional OOP features provided by the language.
Lesson 5
Python and C++ Speed
In this lesson, we'll compare the execution times of C++ and Python programs.
Lesson 6 • Project
Translate Python to C++
Apply your knowledge of C++ syntax by translating the Histogram Filter code from the first course into C++.
Course 5 • 2 weeks
Performance Programming in C++
Explore how to write good code that runs correctly. We’ll focus primarily on low level features of C++, but we’ll discuss other best practices as well.
Lesson 1
C++ Intro to Optimization
Optimizing C++ involves understanding how a computer actually runs your programs. You'll learn how C++ uses the CPU and RAM to execute your code and get a sense for what can slow things down.
Lesson 2
C++ Optimization Practice
Now you understand how C++ programs execute. It's time to learn specific optimization techniques and put them into practice. This lesson will prepare you for the lesson's code optimization project.
Lesson 3
Project: Optimize Histogram Filter
Get ready to optimize some C++ code. You are provided with a working 2-dimensional histogram filter; your job is to get the histogram filter code to run faster!
Course 6 • 2 weeks
Navigating Data Structures
Algorithmic thinking is a skill you’ll refine throughout your career. In this course you’ll focus on frequently used data structures and algorithms.
Lesson 1
How to Solve Problems
A systematic way of approaching and breaking down problems.
Lesson 2
Data Structures
The list isn't the only structure for storing data! In this lesson you'll learn about sets, dictionaries and other Python data structures.
Lesson 3
The Search Problem
When programming a car to drive itself you run into problems. Many of these are "search" problems. In this lesson you'll learn what search problems are and several algorithms for solving them.
Lesson 4 • Project
Implement Route Planner
In this lesson you will actually implement a Google-maps style routing algorithm using A star search.
Course 7 • 2 weeks
Vehicle Motion and Control
This course is a crash course in two branches of mathematics which are crucial to self driving cars: calculus and trigonometry. You will learn how a self driving car uses various motion sensors to help it understand its own motion. At the end of this course you will use raw sensor data (which give information about distance driven, acceleration, and rotation rates) to reconstruct a vehicle's trajectory through space.
Lesson 1
Odometers, Speedometers and Derivatives
Gain a conceptual understanding of the *derivative* and basic calculus by plotting points and finding slopes.
Lesson 2
Accelerometers, Rate Gyros and Integrals
Learn how **integrals** can be used to calculate accumulated changes by finding the area under a curve.
Lesson 3
Two Dimensional Robot Motion and Trigonometry
Learn the basics of trigonometry and how to decompose a self driving car's motion into X and Y components.
Lesson 4
Reconstructing Trajectories from Sensor Data
Use raw acceleration, displacement, and angular rotation data from a vehicle's accelerometer, odometer, and rate gyros to reconstruct a vehicle's X, Y trajectory.
Course 8 • 2 weeks
Computer Vision and Machine Learning
In this course you’ll learn how a computer sees an image, and how we can use machine learning to teach a computer to identify images programmatically.
Lesson 1
Computer Vision and Classification
Students will learn how to program an image classifier using computer vision techniques. Along the way you'll learn about machine learning, color transformation, feature extraction, and more!
Lesson 2 • Project
Traffic Light Classifier
Build a classification pipeline that takes in an image of a traffic and outputs a label that classifies the image as a: red, green, or yellow traffic light.
Course 9 • 15 minutes
Graduation! - Intro to Self-Driving Cars
Congratulations! You're ready to graduate. Learn how you can continue your Udacity journey by enrolling in a Career-Ready Nanodegree Program
Lesson 1
Congratulations! You've finished!
Congratulations! You've reached the end of the Intro to Self-Driving Cars Nanodegree program!
Lesson 2
Your next Nanodegree
Enroll in a Career-Ready Nanodegree program
Taught By The Best

Andy Brown
Curriculum Lead
Andy has a bachelor's degree in physics from MIT, and taught himself to program after college (mostly with Udacity courses). He has been helping Udacity make incredible educational experiences since the early days of the company.

Andrew Paster
Instructor
Andrew has an engineering degree from Yale, and has used his data science skills to build a jewelry business from the ground up. He has additionally created courses for Udacity's Self-Driving Car Engineer Nanodegree program.

Anthony Navarro
Product Lead
Anthony is a US Army combat veteran with an M.S. in Computer Engineering from Colorado State University. Prior to being a Product Lead at Udacity, he was a Senior Software Engineer at Lockheed Martin in their Autonomous Systems R&D division.

Tarin Ziyaee
Voyage, Director of AI
As the Director of Artificial Intelligence at Voyage Auto, Tarin works to deliver low-cost, self-driving taxis. He brings a total of 14 years experience in perception and deep neural networks working with companies such as Apple.

Elecia White
Engineer, Author, Host
Elecia is an embedded software engineer at Logical Elegance, Inc, the author of O'Reilly's Making Embedded Systems, and host of the Embedded.fm podcast. She enjoys sharing her enthusiasm for engineering and devices.

Cezanne Camacho
Curriculum Lead
Cezanne is an expert in computer vision with a Masters in Electrical Engineering from Stanford University. As a former researcher in genomics and biomedical imaging, she's applied computer vision and deep learning to medical diagnostic applications.

Sebastian Thrun
Founder and Executive Chairman, Udacity
As the Founder and Chairman of Udacity, Sebastian's mission is to democratize education by providing lifelong learning to millions of students worldwide. He is also the founder of Google X, where he led projects including the Self-Driving Car, Google Glass, and more.
Student Reviews
Average Rating: 4.6 Stars
393 Reviews
Mostafa B.
January 3, 2023
Well, it is not of hard challenges up till now, but as i am a beginner my progress seems great. Till now the scientific information still less than expected but i believe it will meet my expectations the more i dig deep into the program
David P.
October 5, 2022
So far so good
Ronen A.
July 19, 2022
I'm excited to have completed my first project for this nano degree.
Maor A.
July 18, 2022
I loved it very much!
Marco A.
April 19, 2022
I'm loving it!
The Udacity Difference
Combine technology training for employees with industry experts, mentors, and projects, for critical thinking that pushes innovation. Our proven upskilling system goes after success—relentlessly.

Demonstrate proficiency with practical projects
Projects are based on real-world scenarios and challenges, allowing you to apply the skills you learn to practical situations, while giving you real hands-on experience.
Gain proven experience
Retain knowledge longer
Apply new skills immediately

Top-tier services to ensure learner success
Reviewers provide timely and constructive feedback on your project submissions, highlighting areas of improvement and offering practical tips to enhance your work.
Get help from subject matter experts
Learn industry best practices
Gain valuable insights and improve your skills

Enroll in Introduction to Self-Driving Cars. Choose the plan that works for you
All Access monthly
Cancel Anytime
Unlimited access to our top-rated courses
Hands-on projects with expert feedback
Personalized career coaching and interview prep
Program Certificates
Best Value
All Access bundle1
All the same great benefits as our monthly plan
The most cost-effective way to develop the skills you want
- 1Discount applies to the first 4 months of membership, after which plans are converted to month-to-month.
Your subscription also includes:
Your subscription also includes:

(184)
3 months
Advanced

(127)
4 months
Advanced

(809)
3 months
Intermediate

(477)
2 months
Advanced

3 weeks
Advanced

(45)
4 months
Advanced

(356)
4 months
Advanced

(275)
2 months
Intermediate

(966)
3 months
Intermediate

1 month
Beginner

(248)
2 months
Intermediate

4 months
Advanced

1 month
Beginner

(530)
2 months
Intermediate

(309)
2 months
Advanced

(101)
3 months
Advanced