Self-Driving Cars: Theory and Practice

CSC 495 (001), Spring 2024

Course Information

Instructor Man-Ki Yoon
Class Room 1229 EB2
Class Hours M/W 4:30–5:45 pm
Office Hours M/W 3:30–4:30 pm (3254 EB2 or Zoom)
Teaching Assistant Dhruva Ungru Pulithaya, Yuheng Zhu
Online Tools Moodle, Slack, GitHub

Course Description

This course explores the theory and practice of building self-driving cars using advanced computing technologies. It aims to provide students with opportunities to i) understand the introductory theory that enables autonomous driving and ii) gain extensive hands-on experience with various software and hardware tools. Topics include robotics software programming, sensor fusion, control theory, and introductory perception, planning, and navigation techniques using machine learning and computer vision. Over the course of the semester, students work in small groups to design and build software systems for miniaturized self-driving cars that autonomously navigate an indoor track resembling real road environments. Students demonstrate their learned skills through the final driving showcase.



MA 305 (Introductory Linear Algebra and Matrices), ST 370 (Probability and Statistics for Engineers), and programming competence in Python in Linux environment.

Course Materials

Lecture Notes

Lecture notes will be uploaded on Moodle.

Optional Textbooks

There is no required textbook, and the following books are optional:
R. Siegwart, I. Nourbakhsh, D. Scaramuzza, Introduction to Autonomous Mobile Robots, 2/e, The MIT Press (2011).
S. Thrun, W. Burgard, D. Fox, Probabilistic Robotics, The MIT Press (2005).

Course Structure and Grading Policy

The table below shows the percentage-based breakdown of how each requirement will factor into the overall grade.

Programming Assignments (5 PAs) 80%
Exam (1 x 20%) 20%
Total 100%

See here for attendance and late assignment policies.