Ever wonder how robots can navigate space and perform duties, how search engines can index billions of images and videos, how algorithms can diagnose medical images for diseases, how self-driving cars can see and drive safely or how instagram creates filters or snapchat creates masks? In this class, we will explore all of these technologies and learn to prototype them. Lying in the heart of these modern AI applications are computer vision technologies that can perceive, understand and
reconstruct the complex visual world. Computer Vision is one of the fastest growing and most exciting AI disciplines in today’s academia and industry. This 10-week course is designed to open the doors for students who are interested in learning about the fundamental principles and important applications of computer vision. We will expose students to a number of real-world applications that are important to our daily lives. More importantly, we will guide students through a series of well designed projects such that they will get to implement a few interesting and cutting-edge computer vision algorithms.

There will be weekly homework assignments in this class. These assignments will mainly involve building out prototypes for applications that we will discuss in class. For example, you will learn to create your own instagram-like filters or snapchat-like masks or smart-car lane detectors.

Details on how to work on each assignment and how to submit here.

- Assignment 0: 4%
- Assignment 1-8: 8%
- Class notes: 5%
- Extra Credit: 7%
- Final: 20%

Assignment 0 is a simple assignment to get you acquainted with python and basic libraries we will be using in the course. Each assignment (1 through 8) will be worth 8% each. You will have one week to complete every assignment. It will be due on Mondays at 11:59pm.

The final exam will be a 3 hour exam where you will be tested on the concepts and theories taught in the class.

Throughout the course you will have opportunities to earn extra credit. They can be earned by completing the extra credit questions in every assignment. These extra credit points are designed to allow students to delve deeper into the topics that they find most interesting.

The course staff believes that the best way to learn something is to teach it to someone else. Since we have changed the class and its assignments from previous years, we ask that all the students contribute to help teach one another by contributing to the class notes. On the first day of class, students will self-select themselves into 20 teams (1 for each of the 20 lectures in the course). Each team will be asked to write up detailed notes about the lecture. These notes will be worth 5% of your grade.

The class notes will be graded based on fluency (grammatically correct complete English sentences), consistency (the entire lecture should be a coherent message), coverage (all topics in the lecture are included). Each student in a group will also be asked to fill out a peer assessment form indicating each team member's individual contribution.

The class notes are due within a week of the lecture before class starts. So, the lectures for the Tuesday lecture will be due the next week on Tuesday at 1:30pm. The peer assessments are due 48 hours after the class notes. You can not use late days for the class notes.

You will have a total of 5 late days that you can use in whichever assignments you prefer. There is a limit of 2 late days used per assignment, which means that the hard deadline for each assignment is on Wednesday at 11:59pm.

Once you have used all your late days (or 2 late days for an assignment), penalty is 25% for each additional late day.

- Proficiency in Python

All class assignments will be in Python (with numpy.) - College-level calculus (e.g. MATH 19 or 41)

You’ll need to be able to take a derivative, and maximize a function by finding where the derivative=0. - Linear Algebra (e.g. MATH 51)

We will use matrix transpose, inverse, and other operations to do algebra with matrix expressions. We’ll use transformation matrices to rotate/transform points, and we’ll use Singular Value Decomposition. (These topics are important for the homeworks, but if you are a quick learner you should be able to learn them during the class if you haven’t yet. We will have review sessions and provide review materials.) - Basic Probability and Statistics (e.g. CS 109 or other stats course)

You should know basics of probabilities, gaussian distributions, mean, standard deviation, etc.