Teaching
I teach two undergraduate courses each year at NTU’s College of Computing and Data Science (CCDS):
- SC4050 Parallel Computing (Semester 1)
- SC4064 GPU Programming (Semester 2)
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
| Week | Lecture Topic | Tutorial |
|---|---|---|
| 1 | Introduction to GPU Computing | — |
| 2 | GPU Basics: SIMT, GPU vs CPU, Thread Hierarchy | Tut 1 |
| 3 | Memory Hierarchy, Bank Conflict, Warp Divergence | Tut 2 |
| 4 | CUDA Streams and Tensor Cores | — |
| 5 | Virtualization and Container Techniques | Tut 3 |
| 6 | Common Problems and Existing Libraries | Tut 4 |
| 7 | GPU Usage in HPC and AI | Tut 5 |
| — | Recess Week | — |
| 8 | Optimization and Profiling | Tut 6 |
| 9 | Quiz | — |
| 10 | Multi-GPU Programming 1 | Tut 7 |
| 11 | Multi-GPU Programming 2 | — |
| 12 | Advanced Topics | — |
| 13 | Project Presentation | Project Presentation |
Assessment
| Component | Marks |
|---|---|
| Tutorials (7 sessions) | 5 |
| Assignment 1 | 10 |
| Assignment 2 | 10 |
| Assignment 3 | 10 |
| Quiz | 30 |
| Project Proposal | 5 |
| Project (presentation + report) | 30 |
| Total | 100 |
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.