Welcome to CPSC 335 Theory and Implementation of Self-Driving Cars, Spring 2021

My Image


  • May 4: Final showcase is scheduled for 5/12 (Wed), 1:30 PM
  • Apr 28: Assignment #6 (final integration) is due by 5/5 (Wed)
  • Apr 28: Assignment #5 is due by 5/5 (Wed)
  • Apr 26: Exam is scheduled for Monday, 5/3 (Canvas, 9 AM – 9 PM)
  • Apr 8: Guest lecture by Maria Elli from Mobileye is scheduled for 4/14 (Wed)
  • Apr 7: Assignment #4 is due by 4/26 (Mon)
  • Mar 26: Guest lecture by Urs Muller and Larry Jackel from Nvidia is scheduled for 3/31 (Wed)
  • Mar 26: Assignment #3 is due by 4/12 (Mon)
  • Mar 8: Assignment #2 is due by 3/22 (Mon)
  • Feb 8: Assignment #1 is due by 2/24 (Wed)
  • Feb 8: Remote virtual machine for CARLA – manual.
  • Jan 31: Zoom class link can be found here.
  • Jan 11: See here for information about pre-registration.

Course Description

This course explores the theory and practice of building self-driving cars using advanced computing technologies. It aims to provide students opportunities i) to understand the introductory theory that enables the autonomous driving and also ii) to have extensive hands-on experience with various software and hardware tools. Topics include embedded system 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 system for miniaturized self-driving cars that autonomously navigate an indoor track that resembles real road environments. Students demonstrate their learned skills through the final driving showcase.

Instructor: Man-Ki Yoon

Office hours: MW 4:00 - 5:00 pm or by appointment (Zoom, DL 220, HLH17 229, AKW 303)

Online Tools: Canvas, Slack

Enrollment Cap and Pre-registration

Enrollment is limited to 20 (reduced from 30). Depending on the COVID-19 pandemic situation in late January, it may be increased to 30.

Pre-registration: The pre-registration period (12/1/2020–12/9/2020) has passed. If you want to be waitlisted, please complete this form. The forms will be received until the end of add/drop period or the roster is finalized.

Course Format

Because of the lab component, remote students (that is, those who cannot meet in person) cannot register for this course. The class will minimize in-person meetings. By default, the lectures will be delivered synchronously via Zoom and will meet in-person only when necessary. The lab activities will be performed during class time (i.e., no separate lab time), and the schedule will be announced in advance on the course website. Depending on the COVID-19 pandemic situation, the labs may be divided into multiple sessions in order to limit the lab occupancy.

In case of a campus lockdown due to the COVID-19 pandemic, the class will be transitioned to online learning – the lab components including the assignments will be done using a vehicle simulator.


  • CPSC 223, 202, or equivalent.
  • Basic knowledge of Python and programming in Linux environment is required.
  • Instructor’s permission is required to waive the prerequisites.

Course Materials

There is no required textbook for this course. Course notes will be available on Canvas.

Optional readings:

  • R. Siegwart, I. Nourbakhsh, D. Scaramuzza, Introduction to Autonomous Mobile Robots (2nd Edition), The MIT Press, 2011. ISBN: 9780262015356. (Yale online library)
  • S. Thrun, W. Burgard, D. Fox, Probabilistic Robotics, The MIT Press, 2005. ISBN: 9780262201629

    web analytics

Lab Space

The lab is located in Room 229 of HLH17. The lab is equipped with desktop computers, monitors, indoor track, and hand tools. Students are expected to work on the assignments in the lab space.


There will be one in-class, closed-book/notes exam. The exam is required, i.e., unless prior arrangements are made, a grade of zero will be recorded for missed exam. In case of a campus lockdown, the exam will be administered online using Canvas.

Grading Policy

Assignments 80%
Exam 20%

The table above shows the percentage-based breakdown of how each requirement will factor into the overall grade. These weights are subject to minor change depending on the difficulty of the assignments.

Academic Integrity

Students are required to comply with the university policy on academic integrity that can be found here. Do not, under any circumstances, copy another person’s code. This includes any open-source code available in the Internet. Proper acknowledgment in the source code or in the report is required if using someone else’s work. See also this for a detailed explanation of academic honesty.