Stanford CS248A, Winter 2024
Computer Graphics:
Rendering, Geometry, and Image Manipulation
Tues/Thurs 1:30-2:50pm
Location: NVIDIA Auditorium
Instructor: Kayvon Fatahalian
Course Description

This course provides a comprehensive introduction to computer graphics, focusing on fundamental concepts and techniques, as well as their cross-cutting relationship to multiple problem domains in interactive graphics (such as rendering, animation, geometry, image processing). Topics include: 2D and 3D drawing, sampling, interpolation, rasterization, image compositing, the GPU graphics pipeline (and parallel rendering), geometric transformations, curves and surfaces, geometric data structures, subdivision, meshing, spatial hierarchies, image processing, and image compression.

Lectures will be recorded for offline viewing on Canvas. We will have frequent discussions and student breakouts during live lecture. Therefore, while attendance at live lecture will not be checked or graded, we ask you to make an effort to attend live lecture as much as possible.

Instructors and CAs
[kayvonf at stanford]
Your fun and helpful CAs:
Purvi Goel
Sofia Wyetzner
Mia Tang
Office Hours Calendar

CS248A DOES NOT depend upon CS148 as a prerequisuite. We do not assume you have taken CS148. However, we expect you to be a proficient C/C++ programmer to complete the required programming assignments. (We expect you've taken at least CS107). We also assume basic understanding of linear algebra (at least MATH 51) and 3D calculus.


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

Pete Shirley and Steve Marschner with Michael Ashikhmin, Michael Gleicher, Naty Hoffman, Garrett Johnson, Tamara Munzner, Erik Reinhard, Kelvin Sung, William B. Thompson, Peter Willemsen, and Bryan Wyvill
Fundamentals of Computer Graphics. A K Peters, 2009
[ 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 ]

Announcements via Ed Discussion

All class announcements will be made via our Ed discussion. Everyone enrolled in the course via Canvas should be able to access this site.

Grading (What You Will Do!)

All students will be expected to perform:

  • Three programming assignments: 48%
  • Participation on weekly written exercises: 12% (must do 5 of 7 exercises for full credit)
  • Self-selected final project: 24%
  • One exam: 16%

Programming assignments and the final project can be completed in teams of up to two students.

Each student is allotted a total of six late-day points for the semester. Late-day points are for use on programming assignments only. Late-day points work as follows:

  • A one-person team can extend a programming assignment deadline by one day using one point.
  • A two-person team can extend a programming assignment deadline by one day using two points. (e.g., one point from each student)
  • If a team does not have remaining late day points, late hand-ins will incur a 10% penalty per day (up to three days per assignment).
  • No assignments will be accepted more than three days after the deadline. This is true whether or not the student has late-day points remaining.