CIS 5650 GPU Programming and Architecture
Fall 2025
Course Announcements
2025-05-19: Course Waitlist
Advance registration for CIS 5650 Fall 2025 is full. Please use the Course Waitlist to ensure that you are considered for the course and receive course communication ahead of the Fall semester. Additionally, complete the Student Survey linked below.
2025-05-19: Student Survey (Required)
All students who are interested in taking the course (registered, waitlisted, or otherwise) must complete the Student Survey as soon as possible. Failure to submit the survey before first day of class can jeopardize your registration for CIS 5650.
Course Description
A timeline section from the following topics:
- GPU Computing: GPU architecture, massively parallel programming, parallel algorithms, performance.
- Rendering: Graphics pipeline (rasterization), path tracing, deferred shading, forward+ rendering, VR.
- APIs: CUDA, WebGPU, Vulkan.
This is a project-intensive course with significant coding, writing, and presenting. It is more work than any other course, but it is worth it.
Prerequisites
- Passion for computer graphics.
- At least one of:
- CIS 4600/5600: Introduction to Computer Graphics.
- CIS 4610/5610: Advance Rendering
- Preferably received an A. Knowledge of rasterization and ray tracing.
- Strong C or C++.
- If you have not completed these courses (or equivalents), it is strongly advised that you complete the courses first and take the CIS 5650 course the following year. In case you are unable to take the course in due time for your graduation plans, then it is strongly advised that you thoroughly complete the following projects before starting CIS 5650.
- Also useful:
- CIS 3800: Operating Systems
- CIS 5010: Computer Architecture
Student Survey (Required)
If you have registered as a student for the course, or plan to, please complete this required survey: CIS 5650 Fall 2025 Student Survey.
Github, Schedule, Class Forum, and LinkedIn
- Classroom: Berger Auditorium in Skirkanich Hall
- Github: fork your repos from here
- Ed Discussions: Class forum
- Note: Ed Discussions requires being registered for the class for default access. If you need access for auditing, please reach out to the instructors.
- LinkedIn Group: for networking with current and previous course students
Lecturers
Changes to office hour schedule will be made on this schedule and notified through Class Forum (Ed Discussion).
Shehzan Mohammed mza@seas.upenn.edu
Office Hours:
- 4-5pm prior to class on class days and 30 minutes following the end of class; Held adjacent to Berger Auditorium.
- By appointment (email me) - For interviewing, career, or other mentorship advice;
Teaching Assistants
Paulina Tao tpaulina@seas.upenn.edu
Office Hours:
- Monday - 1:00pm - 3:00pm
- Levine 057
Ruipeng Wang ruipeng@sas.upenn.edu
Office Hours:
- Thursday - 3:30pm - 5:00pm
- Levine 057
Zixiao Wang zixiaow@seas.upenn.edu
Office Hours:
- Wednesday - 1:00pm - 2:30pm
- Levine 057
Daniel Zhong dzhong@seas.upenn.edu
Recommended Reading
- Moving Graphics Research into Development, Patrick Cozzi
- How to Make an Attractive GitHub Repository, Patrick Cozzi
No books are required, but course material comes from many sources including:
- Programming Massively Parallel Processors, Third Edition, 2016, David Kirk and Wen-mei Hwu.
- Real-Time Rendering, Fourth Edition, 2018, Tomas Akenine-Möller, Eric Haines, Naty Hoffman, Angelo Pesce, Michał Iwanicki, and Sébastien Hillaire.
- Ray Tracing Gems, First Edition, 2019, Eric Haines and Tomas Akenine-Möller. (Free PDF distributed under CC 4.0 License)
Other useful tools and material:
- Ray Tracing in One Weekend (Free PDF + Github)
- NVIDIA GTC On-Demand
- NVIDIA GDC 2019 Courses (Mostly Real Time Ray Tracing)
- Machine Learning by Andrew Ng (Coursera free)
- Deep Learning Book (Free to read in HTML)
- CUDA Programming Guide
- All previous CIS 5650
Grading
- Projects: 50%
- Final Project: 45%
- Participation: 5%
Academic Integrity
An academic integrity violation will result in the student receiving an F in this course.
See Academic Integrity at the University of Pennsylvania: A Guide for Students.
Code submissions will be cross-checked for plaigarism against previous years’ submissions as well as submissions from your colleagues using automated software. Please do not copy code.
If you would like to use code not written by you for this class, please run it by the TAs using Class Forum for permission to use it. Examples of code you will need to ask permission to use:
- Public Github Repositories and other open source projects.
- Projects from other classes that will give you a non-trivial advantage for the project.
If you think you need to ask permission, you should ask. We will most likely approve all reasonable requests.
Acknowledgments
Joe Kider, Gary Katz, and Suresh Venkatasubramanian taught this course before me.
All former TAs have helped shape this course:
Previous students have provided significant course feedback including:
Many passionate folks in our field have also provided course input:
- Eric Haines, (@pointinpolygon)
- Christophe Riccio, (@g_truc)
- Johan Andersson, (@repi)
- Quarup Barreirinhas, (@quarup)
- Wolfgang Engel, (@wolfgangengel)
- Mikkel Gjoel, (@pixelmager)
- Dominik Lazarek, (@Omme)
- Emil Persson, (@_Humus_)
- Sebastien Vandenberghe (@sebavanmicrosof)
- Chrome GPU Team, which includes many former CIS 5650 Alumni.