Computer Graphics (CMU 15-362/662)
CMU 15-362/662, Fall 2024
Date/Time: Tues/Thurs 12:30pm-1:50pm
Location: DH 1212
Instructors: Oscar Dadfar & Minchen Li
Course Description

This course provides a comprehensive introduction to computer graphics. It focuses on fundamental concepts and techniques, and their cross-cutting relationship to multiple problem domains in graphics (rendering, animation, geometry, imaging). Topics include: sampling, aliasing, interpolation, rasterization, geometric transformations, parameterization, visibility, compositing, filtering, convolution, curves & surfaces, geometric data structures, subdivision, meshing, spatial hierarchies, ray tracing, radiometry, reflectance, light fields, geometric optics, Monte Carlo rendering, importance sampling, camera models, high-performance ray tracing, differential equations, time integration, numerical differentiation, physically-based animation, optimization, numerical linear algebra, inverse kinematics, Fourier methods, data fitting, example-based synthesis

To get a sense of what you'll do in the class, check out some student creations from Fall 2020!

Instructors
Oscar Dadfar
[odadfar at andrew]
Office Hours:
Time: Fri. 2:30pm - 4pm
(Also Available By Request)
Location: Graphics Lounge
 
Minchen Li
[minchenl at andrew]
Office Hours:
Office Hours By Request
Location: Graphics Lounge
 
 
Yuzu
[calico]
Office Hours:
Office Hours By Request
Location: Graphics Lounge
 
Matcha
[calico]
Office Hours:
Office Hours By Request
Location: Graphics Lounge
 
Hojicha
[tuxie]
Office Hours:
Office Hours By Request
Location: Graphics Lounge
 
 
Your fun and helpful TAs:
Lucas Hurley
[lmhurley at andrew]
Office Hours:
Time: Thurs. 5 - 7pm
Location: Graphics Lounge
 
Divya Kartik
[dkartik at andrew]
Office Hours:
Time: Wed. 4 - 6pm
Location: Graphics Lounge
 
David Krajewski
[dkrajews at andrew]
Office Hours:
Time: Tues. 5 - 7pm
Location: Graphics Lounge
 
Ria Manathkar
[rmanathk at andrew]
Office Hours:
Time: Mon. 2 - 4pm
Location: Graphics Lounge
 
 
As a policy, we ask that you please do not email TAs directly for help with assignments, grading, etc. TAs can be contacted either through Piazza or during office hours.
Prerequisites

Basic vector calculus and linear algebra will be an important component of this course. Previous exposure to basic C/C++ programming is very helpful as course programming assignments will involve significant implementation effort.

Textbook

There is no required textbook, though a variety of books may provide good supplementary material:

Steve Marschner and Peter Shirley
Fundamentals of Computer Graphics. A K Peters, 2021
[ On Amazon ]

John F. Hughes, Andries van Dam, Morgan McGuire, David F. Sklar, James D. Foley, Steven K. Feiner, and Kurt Akeley
Computer Graphics: Principles and Practice
[ On Amazon ]

Matt Pharr and Greg Humphreys
Physically Based Rendering: From Theory to Implementation
[ On Amazon ]
This book (PBRT) is the book for learning about modern ray tracing techniques. It has a great website with full source code online for an advanced physically-based ray tracer. The textbook is online as well. It even won an oscar for its impact on the film industry!

Discussion Boards

We will be using Piazza for announcements. Please speak to the course staff for access to the 15-362/662 Piazza page.

Grading

(15%) Written/Warmup Assignments (Assignment 0.0/0.5 and MiniHomeworks). About once per week, you will be assigned a short ''mini homework'' assignment (just a few questions) that reinforces the most essential concepts. At the beginning of the semester, you will also complete warmup exercises (Assignments 0.0 and 0.5) reviewing linear algebra and vector calculus as well as some programming fundamentals. Assignments 0.0 and 0.5 can be submitted through Autolab. All mini homework written homework can be submitted via GradeScope. To mitigate potential absences (sick days, etc.), students can omit up to two mini homeworks without penalty. Students are encouraged to discuss concepts with their peers, on Piazza, and/or in office hours. Final homework answers must be written independently and individually for Assignments 0.0 and 0.5. Mini homeworks can be done in groups of up to three students if desired.

(60%) Programming Assignments. Students will complete four programming assignments; each assignment will be worth 25% of the programming component of the course, or 15% of the overall course grade. All assignments will be done individually.

(20%) Midterm / Final. There will be a midterm and a final, each worth 10% of the overall course grade. Both exams will cover the cumulative material seen in the course so far.

(5%) Class Participation. Each lecture will have a poll during the lecture where you will work with people near you to solve questions related to the current lecture. Polls are graded based on completion, not correctness.

(+2.5%) Recitation Participation. You can earn extra credit for attending recitations! Be sure to attend each Friday and sign in using the poll.

Late hand-in policy. Each student is allotted a total of five late-day points for the semester. Late-day points are meant for A1.0, A1.5, A2.0, A2.5, A3.0, A3.5, and A4.0. They may not be used for A4.5. You are not allowed to use late day points for A0.0 and A0.5. Get those in on time!

The dates on the front page are the official due dates. If you find conflicting information elsewhere (e.g., on Piazza, in-class, talking to a TA...), you should always assume that the assignment is actually due on the date stated on the front page of the course web site. (But please let us know if something seems totally wrong! ;-))

Collaboration Policy

Students are absolutely encouraged to talk to each other, to the TAs, to the instructors, or to anyone else about course assignments. Any assistance, though, must be limited to discussion of the problems and sketching general approaches to a solution. Each student should write their own code and produce their own writeup. Consulting another student's solution is prohibited and submitted solutions may not be copied from any source. These and any other form of collaboration on assignments constitute cheating. If you have any question about whether some activity would constitute cheating, just be cautious and ask the instructors before proceeding!

If you are caught cheating, you will get a zero for the entire course (not just the assignment). Also, if two identical assignments are handed in, both students will be accountable for cheating (no questions asked). So please be careful to ensure that nobody is copying your work!

You may not supply code, assignment writeups, or exams you complete during the course to other students in future instances of this course or make these items available (e.g., on the web) for use in future instances of this course (just as you may not use work completed by students who've taken the course previously). Make sure to make repositories private if you use public source control hosts like github.