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.
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.
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.
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.
To aid in continuous improvement of the quality of the sessions, I closely monitored viewership and retention statistics.
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.
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.
There were some concepts that were consistently difficult for students. To help with these, especially for visual learners, I created animated explanation videos.
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 was an internal tool, the production of which I led, which streamlined the logistics of office hours, study sessions, and student help.
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.
To make assignments more engaging, I led the project to build Algorithm Leaderboard. Read about it here.
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.