Before joining UT, I was a sessional instructor and TA at various universities in Canada. As I’m working as a graduate research assistant with my advisor I’ve not been involved with any teaching at UT, but I hope to one day find the excuse to return to the front of the class.

Ancient history

MacEwan University

At MacEwan, I was an instructor in the Department of Computer Science. I redesigned CMPT 220: Unix, Scripting, and Other Tools, a course that hitherto had mostly been regurgitating first-year programming exercises in Bash. My goal with the new curriculum was to push as many topics usually relegated to upper-level operating systems courses into a de facto introductory course with minimal prerequisites. It turns out: we were able to dig deeply into concepts as diverse as the process lifecycle, signals, containerization, binary exploitation, and metaprogramming using the usual straightforward Unix primitives! The course material was well-received by students, and even made the rounds on certain colour-coded tech aggregator websites, which was pretty cool to see.

I also developed a streamlined summer curriculum for CMPT 201: Programming Methodology, the introductory C language course. CMPT 201 has the unfortunate reputation among students of being the “weed-out” course, and the accelerated schedule in the summer term doesn’t help student learning nor anxiety. To that end, I dropped the ancient, overpriced textbook in favour of a free, modern C resource, corrected numerous inaccuracies in the existing course material (ranging from implicit but harmless reliance on undefined behaviour up to total falsehoods), and exised any material that stood in the way of students becoming formidable systems programmers.

Lastly, I worked with the instructor of CMPT 360: Introduction to Operating Systems on a new sequence of labs and assignments.

University of Toronto

I was brought on to teach a last-minute summer offering of CSC324: Principles of Programming Languages at the University of Toronto (a different UT!). This was my first time teaching a course entirely on my own; but, seeing as how feedback from students included “You are one of the best professors I had in three years at the U of T”, I like to think that the university made a good choice!


For UBC’s then-brand new Racket-based introductory CS course, I taught lab sessions, held scheduled office hours, and on occasion, lectured during instructor absences. For my work I was awarded a graduate TA award by the University (a gold star!)