teaching
University of Waterloo
📘 ECE 252: Systems Programming and Concurrency
🗓️ Spring 2025: Teaching Assistant (TA)
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.
🗓️ Spring 2025: Teaching Assistant (TA)
👥 Enrolled Students: 120/150
⭐ TA Rating: ★★★★☆ (--.--/5)
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)
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.
🗓️ Winter 2025: Teaching Assistant (TA)
👥 Enrolled Students: 453/425 📈
⭐ TA Rating: ★★★★☆ (--.--/5)
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)
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.
🗓️ Fall 2024: Teaching Assistant (TA)
👥 Enrolled Students: 206/190 📈
⭐ TA Rating: ★★★★☆ (4.5/5)
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.