This course will cover the basics of teaching computers to “see” like humans. Topics to be explored include the design of cameras, image representation in computers, light and color perception, detection of lines and corners in images, estimating optical flow and alignment between a pair of images, and writing algorithms for visual pattern recognition. Advanced topics may also be covered if time allows. The course schedule and topics can be found in the lectures page.

The course will emphasize mathematical foundations rather than relying on software packages. A strong background in mathematics, including probability, statistics, calculus, linear algebra, and programming, is required. Familiarity with Python is helpful but not necessary, as students will receive instruction in Python programming during the course. The official prerequisites for the course are a ‘C’ or better in CMPSCI 240 or CMPSCI 383. Additional course information, including expectations and policies, can be found on the logistics page.


  • Time: Tuesday/Thursday 11:30AM – 12:45PM
  • Location: LGRC, A301
  • Honors section: Thursday 5:30PM – 6:30PM, CS 243
  • Discussion: Piazza
  • Homework: Moodle and Gradescope
  • Contact: Students should ask all course-related questions on Piazza, where you will also find announcements. For external enquiries, personal matters, or in emergencies, you can email the Instructor.