teaching

University of Waterloo

📘 ECE 252: Systems Programming and Concurrency
🗓️ Spring 2025: Teaching Assistant (TA)

👥 Enrolled Students: 120/150
⭐ TA Rating: ★★★★☆ (--.--/5)
Course Description

This course covers Processes and threads (pthreads); system calls; concurrency (semaphore, mutex, monitors, and barrier synchronization); user-level memory management. Performance and correctness of concurrent systems. Deadlock detection and recovery; file systems.
Antirequisites: CS 343, CS 350, ECE 254, SE 350

Course Resources
Optional Reference: Michael Kerrisk, The Linux Programming Interface

Evaluation: In-class exercises (4%), Lab projects (30%), Midterm Exam (21%), and Final exam (45%)

Acknowledgment: Lecture materials provided by Prof. Andrew Morton.
📘 ECE 459: Programming for Performance
🗓️ Winter 2025: Teaching Assistant (TA)

👥 Enrolled Students: 453/425 📈
⭐ TA Rating: ★★★★☆ (--.--/5)
Course Description

This course covers profiling computer systems, bottlenecks and Amdahl's law, techniques for multicore programming, cache consistency, transactional memory, streaming architectures, vectorization, SIMD, and high-performance programming languages.

Prerequisites: ECE 254 or 354 or SE 350; Level at least 4A in Electrical, Computer, or Software Engineering.

Course Resources

Evaluation: Academic Integrity Exercise (1%), Assignments (64%), Final exam (35%)

Acknowledgment: Lecture materials provided by Prof. Jeff Zarnett.
📘 ECE 252: Systems Programming and Concurrency
🗓️ Fall 2024: Teaching Assistant (TA)

👥 Enrolled Students: 206/190 📈
⭐ TA Rating: ★★★★☆ (4.5/5)
Course Description

This course covers processes and threads (pthreads), system calls, concurrency (semaphore, mutex, monitors, and barrier synchronization), user-level memory management, performance and correctness of concurrent systems, deadlock detection and recovery, and file systems.

Prerequisites: ECE 250; Level at least 2B in Computer or Electrical Engineering.
Antirequisites: CS 343, CS 350, ECE 254, SE 350

Course Resources
Main Textbook: W. Richard Stevens and Stephen A. Rago, Advanced Programming in the UNIX Environment
Optional Reference: Michael Kerrisk, The Linux Programming Interface

Evaluation: Assignments (10%), Lab projects (40%), Final exam (50%)

Acknowledgment: Lecture materials provided by Prof. Jeff Zarnett.