I enjoy teaching very much. In fact, I’ve spent a lot of my undergraduate years teaching and learning how to teach. Here’s a brief description of my favorite contributions:

- Algorithm Design 🧙‍♂️
  • Description: A challenging course covering essential algorithmic methods such as divide and conquer, dynamic programming, greedy algorithms, graph algorithms, network flow analysis, and the concept of NP problems.
  • Role: Help design course material, organize the teaching staff, manage students’ activities, deliver lectures, and provide one-on-one guidance to students.
- Advanced Algorithms 🕵️‍♂️
  • Description: Advanced algorithmic techniques, including approximation algorithms, integer (and linear) programming, and randomized algorithms, are studied throughout this advanced course for graduate students.
  • Role: Facilitate the design and grading of homeworks, class quizzes, and final exams.
- Discrete Mathematics 🧮
  • Description: As one of the fundamental pillars of our department’s curriculum, this comprehensive course spans a myriad of topics, including set theory, combinatorics, graph theory, and more.
  • Role: This is the course I’ve been involved with the most (since 2019). Over the years, I helped with designing homework assignments, quizzes, and exams. I have conducted multiple TA sessions and have always loved the classroom environment. To further engage students with the concept of discrete thinking, we’ve been fortunate enough to have added DMCONTEST to the curriculum and hopefully encouraged more students to choose a path of theoretical computer science.