The course provides an introduction to computer graphics, covering fundamental concepts and techniques including: rasterization, sampling, image/signal processing basics, convolutions, coordinate spaces, transformations, camera viewing, 3D transformations, ray tracing, 3D processing, parameterization, animation/deformations, and more. Assignments will be in Python.

Logistics

  • Canvas
  • Course Meetings: Tuesday & Thursday, 11:00 - 12:20pm (RY 251)
  • Lab Meetings:
    • L01 Monday 3:00pm–4:20pm (CSIL3)
    • L02 Monday 4:30pm–5:50pm (CSIL3)
    • L03 Monday 4:30pm–5:50pm (CSIL4)
  • Course Communication: all outside-of-class-meeting course communication will occur on the UChicago Intro to Computer Graphics Slack
  • Office hours:
    • Nam Anh Thursday 2PM-3PM (JCL 207)
    • Jacob Serfaty Friday 11:00AM-12:00PM (JCL 207)
    • Ron Kiehn Wednesday 4:30PM-5:30PM (JCL 207)
    • Rana Wednesday 11:30-12:30PM (JCL 369)

Grading

  • 15% Assignment 1: Intro to SVG and 2D Rasterization
  • 15% Assignment 2: 3D Rasterization and Camera Viewpoint Geometry
  • 15% Assignment 3: Mesh Data Structures
  • 15% Assignment 4: Skinning and Rigging
  • 35% Final Project: Animation-Off
  • 5% Class participation / attendance

Late assignments. You have a "late bank" of 72 hours that you may use throughout the quarter on any of the assignments. After 3 days (or your "late bank" is empty) the assignment will no longer be accepted. Assignments are given in advance with enough notice, so please plan accordingly.

Academic Honesty. All assignments will be individual. Do not discuss or share your solutions/code with other students, don't post solutions online and do not copy from existing code bases online. We run an auto-grader in this course which automatically runs a sophisticated plagiarism detector. This class adheres to the same policies outlined in CMSC 12100 Fall 2021.

Generative AI. The goal of this course is to get you familiar with the high-level concepts of Computer Graphics. While Generative AI can be extremely helpful for productivity or boilerplate tasks during coding - the assignments in this course do not have any boilerplate elements. The assignments are meant to help solidify the course concepts. We have found that over reliance on generative AI tools can significantly hinder student learning. While we discourage the use of Generative AI, we do not prohibit it entirely. When using GenAI you must always credit it in your Documentation.MD writeup for each assignment. Be extremely cautious when using such tools (they have no sense of what is correct or not and may produce plausible-looking code that contains errors). The following are the only permissible uses of generative AI:

  • You may use autocomplete tools like Github Copilot to complete individual lines of code, as long as you understand exactly what that line of code is producing. You should exercise caution when repeatedly using this functionality (i.e., generating several lines one after the other). You do not need to cite the autocomplete-based tool for helping write small/individual blocks of code. However, you must credit the autocomplete tool if you use it to generate an entire function/method, or a substantial block of code. Include a docstring or comment stating that the code was generated with an AI tool (naming the tool involved).
  • You can take a piece of code we’ve provided to you, and ask a GenAI questions about that code (If you do this you MUST include the questions and GenAI answers in your Documentation.MD writeup for each assignment)
  • You can ask GenAI to write a simple and small blocks of code, e.g., "write a for loop" is OK, asking how to do matrix multiplication in numpy is OK
  • You may use GenAI tools to answer conceptual questions that will supplement your learning (imagine GenAI as a helpful but fallible classmate)

The following are NOT permissible uses of generative AI:

  • You may not use generative AI to describe your code or write any parts of your Documentation.MD (you must describe what you did with your own words)
  • Generating more than 3 lines of code at a time from a generative model is not allowed (this includes sequentially)
  • The generative model should not be used to solve the main intellectual aspect of assignment. For example, you may NOT ask GenAI to write a function to rasterize triangles.
  • Presenting the outputs of generative AI as one's own work, without explicit citation and acknowledgment of what specifically was used from such models is not allowed

Course Schedule

Week Date Topic Materials
1 Tues March 25 Intro & Motivation slides
Thurs March 27 Triangles & Rasterization slides
2 Tues April 1 Coordinate Spaces & Transformations slides
Thurs April 3 3D Rotations slides
3 Tues Apr 8 Textures slides
Thur Apr 10 Depth & Transparency slides
4 Tues Apr 15 Intro to Geometry slides
Thur Apr 17 Meshes & Half Edge Data Structure slides
5 Tues Apr 22 Geometry Processing slides
Thur Apr 24 Geometric Queries slides
6 Tues Apr 29 Intro to Animation slides
Thur May 1 Conformal Parameterization (Richard) slides



Assignment Schedule

Assignment Release Due Labs
1 Thurs March 27 Fri April 4 Lab 2
2 Fri April 4 Wed April 16 Lab 3 & 4
3 Thurs April 17 Sat May 3 Lab 5 & 6
Final project (part A) Sun May 4 Sun May 11 Lab 7
4 TBA Sun May 18 Lab 8
Final project TBA ~Wed May 27 Lab 9


Useful Resources

There is no required textbook, though the following will be useful:

  • Fundamentals of Computer Graphics. Steve Marschner and Pete Shirley 2021

Instructional Team

Rana Hanocka Nam Anh Dinh Jacob Serfaty Ron Kiehn