EECS 442: Computer Vision (Winter 2023)

  • Instructor: David Fouhey (fouhey)

  • GSIs: Rakesh Chowdary Machineni (mrakeshc), Shreya Phirke (sphirke), Sachin Salim (sachinks), Kshama Nitin Shah (kshama),Farzad Siraj (fsiraj), Jim Yang (yzr)

  • IA: Zixuan Pan (zxp)

  • Canvas+Piazza Link: TBD

  • Lecture: Monday/Wednesday 10:30 AM - 12:00 Noon, STAMPS

  • Discussions: Monday 12:30 - 1:30PM, 1005 EECS; Monday 3:30-4:30PM, 1005 DOW; Wendesday 3:30-4:30PM, 3150 DOW; Wednesday 4:30-5:30PM, 3150 DOW; Wednesday 5:30-6:30PM, 1206 DOW; Thursday 3:30-4:30PM, 3150 DOW.

  • Office Hours: TBD, a mix of in-person (mainly) and some online

Registration FAQs

  • I'm on the waitlist. Can you move me to the head of the queue? I will make every effort to ensure that as many people as possible are moved off of the waitlist and into the course. I will not re-order the waitlist or ensure that particular people get moved off the waitlist – this leads to me making arbitrary decisions based on whether people emailed me or not.

  • Will you record lectures? Yes. You can do with this what you want. I think recording is really helpful as a tool for reviewing material; at the same time, you can also use it the wrong way.

  • Do you actually need linear algebra to take this course? Yes. This course is not fun without linear algebra. Most classes use linear algebra at some point, and it's a bad idea to try to learn linear algebra as you're taking this class.

  • Do I need to be a linear algebra expert to take this course? No. I think the material is relatively accessible once you've seen linear algebra once. We'll also review linear algebra concepts to refresh you.


This is an introduction to computer vision. Topics include: camera models, multi-view geometry, reconstruction, some low-level image processing, and high-level vision problems like object and scene recognition.

This course will be taught assuming

  • computer science knowledge at the level of EECS 281 (data structures) and corresponding programming ability;

  • the ability to program in Python, or if not, the ability to learn to program in a new language quickly.

It will also be helpful for you to have background in the following topics. We will provide some refreshers of the necessary concepts as they arise, but we may not go through a comprehensive treatment of these topics:

  • Array Manipulation: Homework assignments will involve manipulating multidimensional arrays using numpy and PyTorch. Some prior exposure to either of these frameworks will help; however, if you haven't done any of this sort of work before, the first homework assignment will help get you up to speed.

  • Linear algebra: In addition to basic matrix and vector operations, it will be good to know least squares. We'll teach you about eigenvectors and the SVD as they come up.

  • Calculus: You should be comfortable with the chain rule. It would be nice for you to have seen gradients and partial derivatives, but experience suggests you can catch on if you haven't seen these before.

If you are rusty on linear algebra and calculus (who isn't), do not worry but do make an effort to refresh your memory of both at the start of the course.

Credit for materials

I am extremely grateful to the many researchers who have made their slides and course materials available. Please feel to re-use any of my materials while crediting appropriately and making sure original attributions to these generous researchers is preserved. Please also consider making your own course materials public.