Teaching

I teach two undergraduate courses each year at NTU’s College of Computing and Data Science (CCDS):


SC4064 GPU Programming

SC4064 is a GPU-focused course that I introduced in 2026. It covers fundamental GPU architecture and programming concepts, along with emerging topics such as sparse tensor cores, container-based AI deployment, and heterogeneous computing. Here’s the schedule I used for the AY25S2 as a reference.

Schedule

WeekLecture TopicTutorial
1Introduction to GPU Computing
2GPU Basics: SIMT, GPU vs CPU, Thread HierarchyTut 1
3Memory Hierarchy, Bank Conflict, Warp DivergenceTut 2
4CUDA Streams and Tensor Cores
5Virtualization and Container TechniquesTut 3
6Common Problems and Existing LibrariesTut 4
7GPU Usage in HPC and AITut 5
Recess Week
8Optimization and ProfilingTut 6
9Quiz
10Multi-GPU Programming 1Tut 7
11Multi-GPU Programming 2
12Advanced Topics
13Project PresentationProject Presentation

Assessment

ComponentMarks
Tutorials (7 sessions)5
Assignment 110
Assignment 210
Assignment 310
Quiz30
Project Proposal5
Project (presentation + report)30
Total100

Note: for the coming future offerings, I plan to move the Quiz towards the end of the semester.

Course Project

Projects are team-based (3 students per team, formed randomly in Week 3). Teams may choose from a provided list of topics or propose their own. Deliverables include a 2-page proposal (Week 6), a 10-minute final presentation (Week 13), and a 5-page final report with all source code.

Note: project team composition and topics will likely be changed in future offerings.