Teaching is something which is very important to me. I was fortunate enough to have had the opportunity to be a teaching assistant for nearly my entire undergraduate education, and it's something I feel very passionately for. I'm always looking for new ways to explain old concepts, new concepts that I can learn how to explain to others, and new opportunities to teach.


In some respect, my philosophy on teaching is that there can be no objective philosophy on teaching. I have encountered many different varieties of teaching strategies from previous mentors and teachers and professors that I have had, and while every single instructor has been convinced of their own efficacy, very few of them tend to agree.

I believe that if you pick a teaching style, there are generally enough merits in their own right that most all of them are perfectly valid. That being said, I have my own priorities that I believe in.

Owing to the fact that I spent approximately 70% of my time in college lectures asleep, I believe that one of the most important aspects of teaching is in raw passion and ability to engage the audience. Students cannot learn anything if they are tabbed out or asleep. It should be the job of the instructor to minimize mental friction as much as possible so that students don't take opportunities to tune out. In other words: Students should be having fun!

I also believe strongly in interesting visual learning. Classic computer science materials can be incredibly dry, with boring black-and-white diagrams and overbearing notation that do little to make an impression. I think there is much room for graphic visualizations of abstract concepts and colorful and vivid imagery, and I am trying to change that if at all possible.


Here's some of the courses that I taught while I was at CMU:

  • 15-150: Principles of Functional Programming (F19, S20, M20$\color{yellow}^\dagger$, F20$\color{yellow}^\dagger$, S21$\color{yellow}^\dagger$, S22)
  • 15-213: Introduction to Computer Systems (M20)
  • 15-312: Foundations of Programming Languages (F21)
  • 98-389: Gödel, Escher, Bach: an Eternal Golden StuCo (F21, S22)
  • 98-317: Hype for Types (F21, S22)

(where $\color{yellow}\dagger$ denotes a semester as Head TA)

Honorable mentions that I was a tutor for:

  • 15-251: Great Theoretical Ideas in Computer Science
  • 15-122: Principles of Imperative Computation
  • 21-127: Concepts of Mathematics


15-150 is the class that I taught for the longest, and one which has single-handedly decided the course of my professional career. I consider teaching functional programming my mission in life, and I am in pursuit of as much experience and knowledge in that domain as possible. I have long-term aspirations of one day teaching functional programming in high schools.

I had the distinct privilege to be the instructor of record for 15-150 in the Summer 2023 semester. The sum of my career with 150, it gave me the chance to work with a team of 8 TAs to deliver a world-class education to a class of 50 undergraduates, in my debut as a visiting lecturer.

You can find the lectures and recordings from that semester under this page.