Course Syllabus


Computer vision asks how we can enable computers to make sense of the complex world through data provided by cameras, lasers, and other visual sensors. In order to achieve the field of computer vision draws on a diverse set of tools from the mathematics of geometry, the geometry of light, and data-driven machine learning techniques among many other fields. With the growing ubiquity of cameras on mobile devices and large scale internet image databases, the tools of computer vision have become more relevant across computing than ever before. 

What does this course offer you?

In this course you will learn to develop and analyze the algorithms and mathematics for computer vision problems and applications. You will learn to implement vision algorithms efficiently for use in research or industry.

Learning Objectives

Upon completion of this course, students should be able to:

  1. Recognize and describe both the theoretical and practical aspects of computing with images. Connect issues from Computer Vision to Human Vision
  2. Describe the foundation of image formation and image analysis. Understand the basics of 2D and 3D Computer Vision.
  3. Become familiar with the major technical approaches involved in computer vision. Describe various methods used for registration, alignment, and matching in images.
  4. Get an exposure to advanced concepts, including state of the art deep learning architectures, in all aspects of computer vision.
  5. Build computer vision applications with python and the pytorch framework.


No prior experience with computer vision is assumed, although previous knowledge of visual computing, image processing, or signal processing will be helpful. The following skills are necessary for this class:

  • Data structures: You’ll be writing code that builds representations of images, features, and geometric constructions.
  • Programming: Projects are to be completed and graded in Python. All project starter code will be in Python. TA’s will support questions about Python. If you’ve never used Python that is OK, as long as you have programming experience.
  • Math: Linear algebra, vector calculus, and probability. Linear algebra is the most important and students who have not taken a linear algebra course have struggled in the past.

How are you, exactly, going to achieve this?

We will have readings associated with most lectures. You should read this material and come prepared to class. We will have selected readings from Rick Szeliski's Computer Vision: Algorithms and Applications book available free online here: and from the book Deep Learning available online here: by Goodfellow, Bengio, and Courville.

Other readings will come from research papers or notes provided by the instructor.

Programming projects will provide you with an opportunity to implement algorithms studied in the course. You will implement these assignments independently to help improve your own skills in programming vision algorithms. You make work with other students at the level of "whiteboard discussion" to help understand the assignments, but all work turned in must be your own. Please list any individuals you worked with on assignments and correctly cite any other resources used.

We will have around 10 in-class online quizzes, approximately every week to help enhance and assess retention and understanding of the material. Quizzes will typically be released at the end of one class and you will have until the beginning of the next class to complete the quiz. These are very short and straightforward quizzes to help prepare you for the next class that should not take more than 10 or 15 minutes to complete.

Schedule of Course Topics and Readings

How will you (and the teaching staff) know if you are making progress in your learning?

The best way to understand your progress is to actively engage in class and work to answer questions yourself. Each class you will be provided time to engage with the professor and your classmates to solve problems. If something isn't clear then ask about it! If you are confused then many others in the class likely are as well.

We will provide feedback on programming assignments quickly to aid in understanding. Office hours by the professor and TA also serve as a great time to go and get individual feedback on your progress if you are uncertain.

Course Time and Location

We will meet synchronously online Monday and Wednesday (unless stated otherwise on the calendar) from 1:25 to 2:45PM Mountain Time. The Zoom information for the course is as follows:

Join Zoom Meeting

Meeting ID: 956 3745 8053
Passcode: 408027

We will make every effort to record and release videos afterwards for students to review, however we can not guarantee that this will happen flawlessly. As such, you should make every effort to attend classes live while they are happening! This will also enable you to ask the best questions and participate in discussions about the material covered in readings and the course.

Teaching Staff, Office Hours, & Contact
Students can meet with the teaching staff during the office hours listed below or by appointment.

Instructor: Tucker Hermans; Office Hours: Mondays 3:00-3:55PM

TA0: Iain Lee; Office Hours: Wednesdays 3:00-4:30PM, Thursdays 3:00-4:00PM

TA1: Mohanraj Devendran Shanthi; Office Hours: Tuesdays 10:00-11:00AM, Fridays 10:00-11:30AM 

Zoom Link: (Password: 886464)

Before sending a message to the teaching staff, please first look on the website for the information. If it is not found there or not clear, then think about asking a question on the canvas Discussion page. This will enable other students to get the same information and decrease the workload of both students and the teaching staff.

Also, please ask relevant questions in class!

If you think your question is better handled privately with the teaching staff, then please contact us using the Canvas mail system. Direct emails not through canvas will generally not be read or responded too. Additionally, you should by default include the instructor and TAs on the message to keep everyone on the same page and increase the timeliness of responses.


Grades will be assigned based on the scores received on programming projects comprising 90% and canvas quizzes and possibly other short assignments making up the remaining 10%.

Final grades will be determined based on overall performance of students in the class. A minimum of 93% will guarantee an A, but this threshold may be moved to a lower value depending on overall performance on assignments.

Late Policy

Please let the teaching staff know as early as possible if you need an extension on any assignments to accommodate issues.

If you don't have extenuating circumstances you have a total of 3 extra days you can elect to use as you see fit to turn in assignments late (for example you could turn in assignments 1, 2, and 3 late by 1 day each or turn in assignment 3,  3 days late, etc). You need to notify in a comment on your submission if you are using one of your late days.

Any other late submissions will be discounted by 10% for each day late up to a total of 50% off (i.e. at 5 days late). You have 1 week after the deadline to submit before the submissions close for good.

Further Course Administrative Information

Course Summary:

Date Details Due