Back to All Work
COMP250 Algorithms & Data Structures @ McGill University
Role
Teaching Assistant
Duration
2020 - 2023
Company
McGIll University

How I got started

I've never been an especially great student, so how did I get the unusual job of helping to teach algorithms & data structures before many of my peers had even taken it?

When I took algorithms & data structures, I created development and debugging tools that helped students easily find errors in their solutions to assignments. I used these visual tools to help me understand my own code more deeply, and then open-sourced and crowdsourced them. The open-source tools I built made the grades in the class a lot higher than usual.

Cover image
A visualizer for a Harry Potter themed assignment
Cover image
A visualizer and stress tester for binary search trees

At the end of the semester, I was noticed for this work, and was lucky enough to be allowed to join the teaching team the semester after.

Teaching

My role as a TA for COMP250 was to write and run the hands on coding activities for the course (tutorials).
I found this experience tremendously valuable, because by teaching algorithms and data structures to students, I found myself having to build an incredibly deep understanding of CS fundamentals. When explaining concepts to students, one needs to start from a place of profound understanding, lest risk being unable to communicate the ideas at hand.

There’s no better motivation to learn, than to have to teach.

My first semester in this role was incredibly challenging. I had to refine my knowledge of concepts in a course I'd completed a short time before, to the level that I could explain any concept in scope to any student.

To bring myself to a level of expertise I needed to be at, I decided to use the skills I picked up working as a filmmaker. I made animations, video explanations, and visual demos of key concepts.

Covid-era live stream sessions

During the pandemic, I was in the first batch of both students and teaching staff to transition to the remote style of content delivery. My strategy for this leveraged my filmmaking past. I put a lot of effort into creating intros, high quality animations and demos, and live interactions.

I created my own web-based tooling to enable richer live course experiences.

Cover image
Now playing indicators helping students skip through to relevant parts of the video
Cover image
Pre-roll graphics, with a peek at the screen share system at the bottom left

To aid in continuous improvement of the quality of the sessions, I closely monitored viewership and retention statistics.

Q&A, Forum Response Sessions

We used various help forums throughout the 6 semesters in which I was working. During the pandemic, we supplemented these with live Q&A sessions which would allow students to join on the livestream and ask questions, work through examples.

Discussion format sessions

In my latter semesters at McGill, we pivoted to a new format for the hands-on portion of the course. The format was "discussion style" where myself and a colleague would play roles of an expert and someone who's clueless, to act as a stand-in for the students who are struggling. Big shoutout to Zhihao, Daniel, and Natalie who were amazing co-presenters.

The format involved us alternating roles of expert and learner depending on topics, and student feedback indicated that having the "learner" up on stage, the level of comfort with asking questions went up tremendously.

Video content production

Cover image
A frame from "How Arrays and Linked Lists Work - Animation"

There were some concepts that were consistently difficult for students. To help with these, especially for visual learners, I created animated explanation videos.

Office Hours & 1:1 Help

I recall having countless great discussions with students during office hours, and was fortunate to meet some incredibly brilliant people there, both students and fellow teaching staff.

HelpSched

HelpSched was an internal tool, the production of which I led, which streamlined the logistics of office hours, study sessions, and student help.

Cover image
HelpSched Beta UI, the green theme didn't last long :p
HelpSched - Scheduling App

Assignment Design

I was fortunate to have the chance to work on a number of assignments for Algorithms & Data Structures, and learned a great deal from Prof. Giulia Alberini about how to make engaging assignments that encourage students to build things above and beyond.

Competitive Assignment Framework

To make assignments more engaging, I led the project to build Algorithm Leaderboard. Read about it here.

Community Building

To help foster a great student community, and to reward the incredible creativity and intelligence of so many of the students we had, I actively participated in the forums, and created the Best of Comp sites to honour great achievements.