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

This course focuses on the fundamental concepts, scene representations, and techniques for tasks such as image generation (rendering), geometry processing, and 3D scene estimation. Topics include: image synthesis via ray tracing and rasterization, sampling and reconstruction, the GPU graphics pipeline, GPU programming, geometric transformations, 3D scene representations (both human-engineered and "neural"), spatial acceleration structions, reflectance, global illumination, scene parameter recovery via optimization-based methods, and neural rendering.

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 directly graded, we require post-lecture quizzes to be completed within 24 hours of each lecture to ensure students follow along with the course.

Instructors and CAs
Your fun and helpful CAs:
Tejan Karmali
 
Lvmin Zhang
 
Fangjun Zhou
 
 
Course Discussion Forum (Ed)

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

Most online questions to the staff can be made by making public or private posts on Ed. However, if you need to email the staff, information about the staff mailing list will be posted on Ed.

Prerequisites (What We Think You Should Know)

CS248A DOES NOT depend upon CS148 as a prerequisite. We do not assume you have taken CS148. However, CS248A is an implementation-heavy course. We expect you to be a strong programmer in Python as well as in C-like languages to complete the required programming assignments. (For example, having taken CS107 is a good idea). We also assume basic understanding of linear algebra (at least MATH 51) and 3D calculus.

Textbooks and Resources

There is no required textbook for CS248A because there is an abundance of really good free graphics tutorials online. A variety of books may provide good supplementary material, such as:

Physically Based Rendering, Fourth Edition
Matt Pharr, Wenzel Jakob, and Greg Humphries
[ Available for free online in PDF form ]

Fundamentals of Computer Graphics (Fifth Edition)
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
[ On Amazon ]

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

Grading (What You Will Do!)

All students will be expected to perform:

  • Four programming assignments: 4 x 14% = 56%
  • Four written exercises (participation only): 4 x 3% = 12%
  • Post lecture quizzes (participation only): 4%
  • One oral exam with the staff: 10%
  • One written exam: 18%
  • There is no written final exam, but if possible students should plan to be present for our final project showcase which will be held during the university-determined final exam slot.

Programming assignments can be completed in teams of up to two students. Students can pick their own partners, work on their own, or have the staff recommend a partner.

Written assignments will be performed in teams of three students. You cannot pick your partners for written assignments. The course staff will assign students into new groups of three for each assignment.

Late Handin Policy

Written assignments and post-lecture quizzes: No late handins are allowed, no exceptions.

Programming assignments: Each student is allotted a total of eight late-day points for the semester. Since students can work individually or in teams (and may switch partners between assignments), 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 member does not have remaining late-day points, late hand-ins will incur a 20% penalty per day.
  • No programming assignments will be accepted more than four days after the posted deadline, regardless of whether the student(s) have late-day points remaining.

FAQ

Do I need a partner for programming and written assignments?

CS248A students will complete both written assignments and programming assignments during the quarter. Written assignments will be done in groups of three, with partners randomly assigned to you by the course staff. (We will assign you unique random partners on each assignment to help you get to know your fellow classmates.)

Programming assignments can be done in tems of up to two students. However, doing programming assignments with a partner is optional. Each year a number of students decide to do all the programming assignments on their own because they think it will help them learn the material better. Note that all teams, regardless of whether they are one or two person teams, are graded the same.

I don't have a programming assignment partner but definitely want one, what should I do?

We understand that it can be hard to find partners in CS classes. We want everyone that wants to work with a partner to have the opportunity to do so. In the first week of class, the course staff will run a partner matching service that will ask students to fill out a survey and match students according to responses.

If you need to change partners or find a partner in the middle of the quarter, just reach out to the staff and we'll do our best to help you find someone. We are here to help!

Do I need to tell the staff that I am using late days on a programming assignment?

No, just submit your assignment. The submission will be time stamped and the staff will keep track of late days.

I got sick, had a busy week, had extra curricular activities, had a family event I want to attend, etc.? Can I get an extension?

You are going to have periods throughout the quarter where you cannot put much time in CS248A. That's perfectly fine! Late days are there to allow you to adjust your deadlines. Given that you have a generous number of late days for the quarter, we expect you to manage those days according to your needs. We intend to only give students additional late days under exceptional circumstances (significant long-running illnesses, important family concerns, etc.) or in accordance with OAE designations. If you believe exceptional circumstances may be in play, we want to help! But please make the staff aware of your situation at least 72 hours prior to the deadline you hope to extend. We are going to hold all students to the 72-advance notice rule and deny most last-minute requests (e.g., unless an exceptional event happened during this last-minute period... such as one that requires immediate travel or one that prevents you from communicating with us).

Office hours are busy and I'm having trouble getting the help I need. What can I do?

Office hours aren't the only time you can get help from the staff. Just reach out by posting on Ed or writing an email to the staff asking for an appointment for a 1-on-1 conversation. We'll make time to help!

Will lectures be recorded?

Yes, lectures are recorded by CGOE and available for offline viewing on Canvas. We try to make lectures participatory and have in-class discussions, so we hope that you will make an effort to attend lecture as much as possible and use the recorded lectures as review and reference.

Can I audit the class?

Please email one of the CAs and we will be happy to add you to Canvas as an observer.