CS180/280A: Intro to Computer Vision and Computational Photography

Course Information

Instructor: Angjoo Kanazawa, Alexei (Alyosha) Efros
GSI: Justin Kerr, Konpat Preechakul, Chung Min Kim, Brent Yi
Tutors: Jameson Crate, Jingfeng Yang, Natalie Wei, Jorge Diaz Chao
University Units: 4
Semester: Fall 2025
Gradescope Entry Code: VWX283
Ed: URL | access code
Syllabus: PDF
Location: Haas Faculty Wing F295
Time: Tues Thurs 12:30 - 1:59PM

Office Hours

Instructors: Angjoo & Alyosha (Tues/Thurs after lecture, 30 mins)
Mon: Konpat 10-11AM (BWW 1216), Brent 11-12PM (BWW 1216), Justin 11-12PM (BWW 1216), Jorge 12-1PM (BWW 1216)
Tues: Jingfeng 4-5PM (Wheeler 202), Chung Min 5-6PM (Soda 320), Jameson 6-7PM (Cory 521)
Wed: Natalie 3-4PM (Wheeler 120)

Prerequisites

This is a heavily project-oriented class, therefore good programming proficiency (at least CS 61B) is absolutely essential and required. Moreover, working knowledge of linear algebra (MATH 54, MATH 56, MATH 110, or EECS 16A) and multivariate calculus (e.g. MATH 53) are vital. Experience with machine learning and neural networks is required in the second part of the course. You must have taken beforehand or are currently taking (CS 182 or CS 189). Due to the open-endedness of this course, creativity is a class requirement.

Discussions

Discussions are GSI-led worksheets designed to help you better understand the concepts in class and in the projects. Attendance optional, but encouraged. Sheets and solutions will be posted after each week.

Person Time Location
Konpat Wed 10-11 Social Sciences Building 126
Chung Min Wed 1-2 Soda 310
Brent Wed 6-7 Wheeler 30
Konpat Fri 9-10 BWW 1217
Justin Fri 10-11 BWW 1217
Justin Fri 11-12 BWW 1217

Topics

Discussion Topic Materials
Week 1 Python & NumPy Fundamentals for Computer Vision Coming Soon

Course Description

The aim of this advanced undergraduate course is to introduce students to computing with visual data (images and video). We will cover acquisition, representation, and manipulation of visual information from digital photographs (image processing), image analysis and visual understanding (computer vision), and image synthesis (computational photography). Key algorithms will be presented, ranging from classical (e.g. Gaussian and Laplacian Pyramids) to contemporary (e.g. ConvNets, GANs), with an emphasis on using these techniques to build practical systems. This hands-on emphasis will be reflected in the programming projects, in which students will have the opportunity to acquire their own images and develop, largely from scratch, the image analysis and synthesis tools for solving applications.

Programming Projects

See the homework submission specification.

Class Schedule

Note that recordings will not be made of lectures this year, though lecture slides will be posted each class.

Class Date Topics Material
Aug 28 Introduction
Introduction lecture
Sep 02 Capturing Light... in man and machine
Capturing light lecture
Sep 04 Image Processing I: Point Processing and Filtering
point-processing
Sep 09 Image Processing II: Convolution and Derivatives
convolution
Sep 11 The Frequency Domain
fourier

Exams

Note we reserve the right to shift the midterm based on content progression.

Textbook

Class Notes

The instructor is extremely grateful to a large number of researchers for making their slides available for use in this course. Steve Seitz and Rick Szeliski have been particularly kind in letting me use their wonderful lecture notes. In addition, I would like to thank Paul Debevec, Stephen Palmer , Paul Heckbert, David Forsyth, Steve Marschner and others, as noted in the slides. The instructor gladly gives permission to use and modify any of the slides for academic and research purposes. However, please do also acknowledge the original sources where appropriate.

GRADING:

CS180:

CS280A:

The midterm and final exams are expected to be more challenging than the past offerings. We offer optional but highly encouraged discussion sessions to help prepare students for this.

Students will be allotted a total of 5 (five) late days per semester with each additional late day incurring a 10% penalty.

Quizzes are graded for completion only, and the worst score will be dropped.

PROGRAMMING RESOURCES:
Students will be encouraged to use Python (with either scikit-image or opencv) as their primary computing platform. These libraries offer tons of built-in image processing functions. Here is a link to some useful Python resources compiled for this class.

PREVIOUS OFFERINGS OF THIS COURSE:
Previous offerings of this course can be found here.

SIMILAR COURSES IN OTHER UNIVERSITIES: