Sign up for Piazza using your
colorado.eduID. Piazza is the primary communication channel for this course.
Course Description
Welcome to MCEN 5228-010: Advanced Computer Vision, taught by Prof. Chahat Deep Singh at the University of Colorado Boulder. This advanced graduate course covers classical, geometric, and deep learning methods in computer vision. The course begins with the mathematical foundations of computer vision and progresses to recent deep-learning advances. Its objective is to introduce formal perception tools for students interested in robot autonomy and 3D perception.
Topics include camera sensors and calibration, image formation, single-view geometry, projective transformations, multi-view geometry, structure from motion, optical flow, computational imaging, radiance fields, volumetric rendering, and deep-learning-based depth and reconstruction methods.
Prerequisites: Linear algebra and proficiency with Python or another scripting language. Prior computer vision experience is not required.
Course Logistics
All course announcements will be made through Piazza, which is the main mode of communication during the course.
Please do not contact the instructor by email unless the matter is an emergency. Do not contact the instructional staff through social-media platforms regarding course content. Canvas will be used only for grading and assignment submissions.
Software Environment
We will use Python 3 throughout the course, together with OpenCV, PyTorch, NumPy, scikit-learn, and Matplotlib. Assignments will use Google Colab; you may also work on your own machine.
A GPU is only required for P2 Part 2 and P3 Part 2. The free Colab tier gives you an NVIDIA T4 GPU (16 GB), which is enough for both — you do not need to pay for anything in this course. Enable it with Runtime → Change runtime type → T4 GPU. Colab Pro (about $10 per month) is entirely optional and only makes training faster.
Training time
Rough estimates. Free-tier sessions disconnect, but the starter notebooks checkpoint each epoch to Google Drive and resume automatically. Start early regardless.
| Assignment | Free tier (T4) | Colab Pro (A100) |
|---|---|---|
| P2: Coded Deep Depth — Part 2 | 2–4 hours | 45–75 minutes |
| P3: Blob the Builder — Part 2 | 3–5 hours | 1–1.5 hours |
Lectures
Slides are posted here before each lecture. Recordings are added after class.
| No. | Topic | Slides | Video† |
|---|---|---|---|
| 1 | Introduction | Link | Link |
| 2 | Image Formation | Link | Link |
| 3 | All About Features! | Link | Link |
| 4 | Projections and Transformations | Link | Link |
| 5 | Non-Rigid Transformation and Camera Models | Link | Link |
| 6 | Camera Calibration and Introduction to Computer Graphics | Link | Link |
| 7 | Curves and Rendering | Link | Link |
| 8 | Single View Geometry | Link | Link |
| 9 | Introduction to Computational Imaging | Link | Link |
| 10 | Coded Deep Depth | Link | Link |
| 11 | Coded Deep Depth — 2 | Link | Link |
| 11b | Project 2 Release | Link | — |
| 12 | Two-View Geometry and Stereopsis | Link | Link |
| 13 | Structure from Motion — 1 | Link | Link |
| 14 | Structure from Motion — 2 | Link | Link |
| 15 | Volumetric Rendering | Link | Link |
| 16 | Neural Radiance Fields | Link | Link |
| 17 | More NeRFs (online only, optional) | Link | Link |
| 18 | 3D Gaussian Splatting | Link | Link |
| 19 | Motion Fields and Optical Flow | Link | — |
| 20 | Introduction to Deep Learning and Neural Networks | — | — |
| 21 | Neural Network Architectures | — | — |
| 22 | More Neural Networks and Transformers | — | — |
| 23 | Diffusion Models | — | — |
| 24 | AI Applications in Computer Vision — 1 | — | — |
| 25 | AI Applications in Computer Vision — 2 | — | — |
| 26 | Neuromorphic Vision and Robot Autonomy | — | — |
† Lecture videos are available only to CU Boulder members signed in with a colorado.edu account.
Assignments
This course consists of four assignments and one homework, all of which may be completed in groups of two, plus one in-class midterm examination. Solving and submitting the homework individually earns 25% extra credit.
Students may discuss concepts with team members and other class members, but may not copy another student's work. Refer to the Collaboration Policy and Honor Code below for details.
| No. | Assignment | Release Date | Due Date |
|---|---|---|---|
| 0. | Python Tutorial | OpenCV Tutorial | — | — |
| 1 | P1: Panorama! | Sep 2, 2026 | Sep 21, 2026 |
| 2 | Homework: Calibrate My Camera | Sep 22, 2026 | Sep 30, 2026 |
| 3 | P2: Coded Deep Depth — Part 1 / Part 2 | Sep 30, 2026 | Oct 20, 2026 |
| 4 | P3: Blob the Builder — Part 1 / Part 2 (releases Nov 12) | Nov 2, 2026 | Dec 10, 2026 |
| 5 | Midterm — In Class | Nov 10, 2026 | — |
| 6 | P4: Monocular Visual Odometry | Nov 17, 2026 | Dec 10, 2026 |
Grading
| Component | Weight |
|---|---|
| P1: Panorama! | 16% |
| P2: Coded Deep Depth | 20% |
| P3: Blob the Builder | 25% |
| P4: Monocular Visual Odometry | 16% |
| Homework: Calibrate My Camera | 8% |
| Midterm (in class) | 15% |
| Total | 100% |
Working in Pairs
Projects are done in pairs, but each partner should understand every part of the submission. Splitting the work so that one person writes all the code and the other writes the report means each of you misses half of what the project teaches. Some ways to divide the work:
- Work through the core algorithm together. Pair-program the key step of each project (for example, homography estimation in P1) or implement it separately and compare results.
- Split by role, then swap. One partner leads the implementation and the other leads experiments and the report; switch roles on the next project.
- Review each other's work. Before submitting, each partner reads and runs the other's code and edits the other's sections of the report.
Each report should end with a short Contributions paragraph stating what each partner did.
Submission Guidelines
These apply to every project. Each project's release slides list the specific results its report must include.
Submit one zip file per group on Canvas, named student1_student2_pN.zip (for example, smith_lee_p1.zip) and no larger than 300 MB. It must contain:
Report.pdf: your report, typeset in LaTeX using the IEEE Transactions or Conference format.PN.txt: the link to your Google Colab notebook (for example,P1.txt). Set the notebook's sharing to Anyone with the link so it can be opened for grading, but do not post or send the link to anyone outside your group.- A PDF export of your Colab notebook with all outputs and results visible.
The report must:
- Show the input and output images for each step of the pipeline, and the final results for every dataset. Put all images in
Report.pdf. - Explain the design choices you made and how you handled difficult cases, as each project asks.
- Cite collaborators and outside sources (see the Collaboration Policy below) and end with a Contributions paragraph.
A reference PDF for each project is posted on Piazza. If you are using late days, follow the steps in the Late Policy below.
Late Policy
This course is fast-paced, with concepts building upon each other, so staying current is important. Late assignments incur a 20% penalty per day.
Students have a total of six late days that may be used across assignments, except the final project. Late days must be used as full days. For example, receiving full credit on an assignment submitted two days late requires using two late days.
When using late days:
- Include “USING X LATE DAY(S)” in the submission title.
- Add a Canvas comment identifying the late-day usage.
- Track the number of late days remaining.
A late penalty will be applied when late-day usage is not identified in the Canvas submission.
Collaboration Policy and Honor Code
Collaboration is encouraged, but students must understand the distinction between collaboration and cheating. Cheating is strictly prohibited and may include using unauthorized assistance, materials, or study aids; collaborating when collaboration is not permitted; copying homework; submitting another person's work; or plagiarism.
Students may collaborate through Piazza and in person, but submitted work must reflect each student's own understanding.
The following limits apply:
- Clearly cite collaborators by name at the top of the report, including relevant Piazza posts.
- Do not share or copy code.
- Discussion of concepts and how code works is permitted.
- Free and publicly available books, journal articles, conference papers, and webpages may be used as research materials.
- Paid solution services may not be used.
- Clearly and explicitly cite all outside sources and materials.
Use of AI Tools
You may not use generative AI tools (such as ChatGPT, Claude, Gemini, or Copilot) to write any text you submit, including your report. You may use them to check your own writing for errors such as spelling and grammar. Submitting AI-written text is treated as unauthorized assistance under the Honor Code.
Uncited use of external sources is treated as presenting another person's work as your own and violates university academic-integrity policy. Unless otherwise specified, the CU Boulder Code of Academic Integrity applies.