CIS 565: GPU Programming and Architecture

Fall 2019

Shehzan Mohammed

University of Pennsylvania
Computer Graphics @ Penn

University of Pennsylvania

Course OverviewSchedule Student Work Previous semester


A timely selection 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, WebGL, RTX, 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.

For a course more focused on GPU architecture without graphics, see Joe Devietti's CIS 601.


  • Passion for computer graphics.
  • CIS 460/560: Introduction to Computer Graphics. Preferably received an A. Knowledge of rasterization and ray tracing.
  • Strong C or C++.
  • Also useful:
    • CIS 461/561: Advanced Computer Graphics,
    • CIS 371: Digital Systems Organization and Design, or
    • CIS 501: Introduction to Computer Architecture.

Github, Schedule, Google Group, and LinkedIn

  • Github: fork your repos from here
  • Schedule: for the class schedule, slides, and project schedule
  • Piazza: a webpage for questions and discussions related to the course and the assignments
  • LinkedIn Group: for networking with current and previous course students

Head Lecturer

Shehzan Mohammed,
Office Hours: Monday and Wednesday 5:00pm-6:00pm (prior to class)
Shehzan Mohammed

Course Advisor

Patrick Cozzi
Patrick Cozzi

Teaching Assistants

Hannah Bollar, Head TA,
Office: SIG Lab
Office Hours: Tuesday 12:00pm-1:30pm; Thursday 1:30pm-3:00pm
Hannah Bollar

Youssef Victor,
Office: SIG Lab
Office Hours: Wednesday 10:30am-12:00pm
Youssef Victor

Ziad Ben Hadj-Alouane,
Office: SIG Lab
Office Hours: Saturday 10:00am-12:pm
Ziad Ben Hadj-Alouane

Recommended Reading

No books are required, but course material comes from many sources including:

Other useful tools and material:


  • Projects: 50%
  • Final Project: 50%

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 Piazza 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.


Joe Kider, Gary Katz, and Suresh Venkatasubramanian taught this course before me.

All former TAs have helped shape this course: Kaixiang Miao, Ottavio Hartman, Yash Vardhan, Austin Eng, Shuai Shao (Shrek), Gary Li, Kai Ninomiya, Harmony Li, Liam Boone, Karl Li, Varun Sampath, and Jon McCaffrey.

Previous students have provided significant course feedback including: Xing Du, Karl Li, and Ian Lilley.

Many passionate folks in our field have also provided course input: Johan Andersson, (@repi),Quarup Barreirinhas, (@quarup), Wolfgang Engel, (@wolfgangengel), Mikkel Gjoel, (@pixelmager), Eric Haines, (@pointinpolygon), Dominik Lazarek, (@Omme), Emil Persson, (@_Humus_), and Christophe Riccio, (@g_truc).