Course Description

An introduction to concepts and applications in computer vision primarily dealing with geometry and 3D understanding. Topics include: cameras and projection models, low-level image processing methods such as filtering and edge detection; mid-level vision topics such as segmentation and clustering; shape reconstruction from stereo; high-level vision topics such as learned low-level visual representations; depth estimation and optical/scene flow; 6D pose estimation and object tracking. Prerequisites: linear algebra, basic probability and statistics.

Class Time and Location

Winter quarter (Jan-March, 2023).
Lecture: Monday, Wednesday 11:30am-12:50pm
Gates B1 or Zoom
Section: Tuesdays 1-2pm, Gates 459

Office Hours

Andrey Kurenkov: Thursday 3-5pm (remote only), Friday 10am-12pm
Krishnan Srinivasan: Wed 1-3pm, Friday 1-3pm (remote only)
Ziang Liu: Monday 2-4pm, Tuesday 6 30-8 30pm (remote only)
Yan Wang: Monday 4-5pm, Wed 3-4pm, Friday 3-5pm (remote only)
Jeannette Bohg: Wed 3-4pm, Gates or Zoom
Silvio Savarese: TBD

For CA office hours sign up on QueueStatus to get into queue.

To CA attend office hours remotely go to Nooks.

In-person CA office hours will be in Gates 104, except 02/13 which will be in Gates 358.

Grading Policy

See the Grading Page.

Course Discussions

Use the link to Ed found on Canvas.

Assignment Details

See the Assignment Page for more details on how to hand in your assignments.

Course Project Details

See the Project Page for more details on the course project.


  • Proficiency in Python, high-level familiarity in C/C++
    All class assignments will be in Python (and use numpy) (CS231N provides a very nice tutorial here for those who aren't as familiar with Python), but some of the deep learning libraries that you may want to use for your projects are written in C++. If you have a lot of programming experience but in a different language (e.g. C/C++/Matlab/Javascript) you will probably be fine.
  • College Calculus, Linear Algebra (e.g. MATH 19 or 41, MATH 51)
    You should be comfortable taking derivatives and understanding matrix vector operations and notation.
  • Basic Probability and Statistics (e.g. CS 109 or other stats course)
    You should know basics of probabilities, gaussian distributions, mean, standard deviation, etc.
  • Equivalent knowledge of CS131, CS221, or CS229.
    You should be familiar with basic machine learning or computer vision techniques.


Can I take this course on credit/no credit basis?
Yes. Credit will be given to those who would have otherwise earned a C- or above.
Can I audit or sit in?
In general we are very open to sitting-in guests if you are a member of the Stanford community (registered student, staff, and/or faculty). Out of courtesy, we would appreciate that you first email us or talk to the instructor to be added to the class on Canvas.
Is there a textbook for this course?
For the geometry part of the project, there are self-contained course notes that cover the material thoroughly. However, we do recommend some some textbooks for this course, and they usually can be found at Stanford Libraries. The recommended textbooks are
  • D. A. Forsyth and J. Ponce. Computer Vision: A Modern Approach (2nd Edition). Prentice Hall, 2011.
  • R. Hartley and A. Zisserman. Multiple View Geometry in Computer Vision. Cambridge University Press, 2003. link
  • Sebastian Thrun, Wolfram Burgard, Dieter Fox. Probabilistic robotics. The MIT Press, 2005. link
Can I work in groups for the Final Project?
Yes, in groups of up to three people.
I have a question about the class. What is the best way to reach the course staff?
Stanford students please use an internal class forum on Piazza so that other students may benefit from your questions and our answers. If you have a personal matter, email us at the class instructors mailing list ( .
Can I combine the Final Project with another course?
Yes, you may. There are a couple of courses concurrently offered with CS231A that are natural choices, such as CS231N (Convolutional Neural Networks, by Prof. Fei-Fei Li). Speak to the instructors if you want to combine your final project with another course.