y experiences as a student, TA, and teacher over the last decade have shaped my views of what makes a good educator. At Harvey Mudd, I was a computer science tutor, and at Northwestern I was a TA for four years, receiving my department's TA of the year award in 2016. I also directly taught small section summer courses in linear algebra, multivariable calculus, and single variable integral calculus while at Northwestern. Now at Duke, I have had the opportunity to create two new classes: a graduate level algorithms course for the Department of Electrical and Computer Engineering with over 100 students from their masters program, and a small introduction to programming course aimed at undergraduate mathematics majors. Outside of the classroom, I have been a private tutor for several students over the years, and I have participated in outreach programs where we gave scientific talks for advanced, underrepresented minority high school students. The last two summers, as project manager, I mentored a team of research students in Duke's Data+ program. Throughout these experiences, I have assessed firsthand a variety of teaching approaches while managing small discussions, large lectures, and designing new courses.
For me, the essential pillar of good teaching is student engagement; whether this means having students actively participate in class activities, or simply paying close attention during a lecture. Over the years I have come to adopt a teaching style that mixes inclass activities, such as group worksheets or thinkpairshare questions, with more standard lectures where I lecture while facing my students and use standard public speaking methods for maintaining attention: movement, gesticulation, vocal inflection, cadence, and, critically, eye contact.
Using Examples
Working example problems is an important part of my teaching process. I prefer to do this live on the board, later providing students with annotated slides of the worked examples. My students say that I am very good at expressing complex material through simple ideas. A big part of this is my inclass examples, and students often ask me for even more worked examples in their course feedback. When demonstrating a new technique, I choose examples simple enough to work through on the board, while also being e effectively instructive. I take a Socratic approach, prompting the students to provide the next step. This promotes student engagement, since they tend to ask more questions during these examples. My students have provided positive feedback about my willingness to address these questions in class, and I make an e ort to prompt for questions throughout my lectures.
Going Beyond The Subject
Student engagement is also served when I take a little lecture time to discuss concepts beyond the precise subject of the course. I give the students a glimpse into the complex applications of what they are learning, emphasize the importance of that material, and break up particularly dense or repetitive portions of the course. For example, when introducing the dry subject of Riemann sums in single variable calculus, I have students think about how a computer might evaluate an integral, and how the different endpoint rules and other methods we discussed relate directly to numerical integration techniques used in my research. In another recent example, I noticed my algorithms students were getting lost and not asking questions during our discussion of undecidable problems. This is a rather dense topic, so this year I used an interlude to ask students where they thought humans fit in our hierarchy of computation. We then discussed the implications of the famous Turing test, and how they now had the skills to understand it.
Active Participation Methods
In my teaching career, I have also employed a variety of active participation techniques. Most involved a work sheet or a prepared problem set, and a standard approach was to have the students work on the problems in groups. I prefer having my students work on the boards so I can watch their mistakes as they occur and provide immediate feedback. But participation techniques can be ineffective if not done correctly. For example, I was once a TA for a set of courses that tried making very difficult worksheets, with the theory that it would force the students to work as a team to figure them out. In practice, these worksheets just made the students anxious, with only a handful students able to understand the problems. Therefore I try to choose problems that are challenging, but can still be worked through on time and provide my students with a sense of accomplishment when they write the answer on the board.
A form of active participation I used in small classes involved calling individual students to the board to work through problems in front of the class. This sounds terrifying at first, but the purpose is to have only the students work through the problem. If the student at the board makes a mistake, it is up to the other students to help fix it. The idea is to help the students become more confident in their work, while exposing them to the common pitfalls. I take time to explain this goal before we start, and to remind them of it throughout the process. Meanwhile my role is encouraging the students while they are at the board and when they think they have spotted a mistake. This method worked well, and after a few tries, the students themselves could see its value and warmed up to it.
These boardbased active learning techniques are infeasible for very large classes like my algorithms course at Duke. In that class, I employ thinkpairshare. I provide students with a prompt. They then have a few minutes to talk about it with their neighbors while I wander the room, listen in, and sometimes join discussions. When enough time has passed that a few groups have started to hit on the important concepts, I bring the class back together and have some of the students share what their group discussed.
Remote Learning Adaptations
In the fall of 2020, I was forced to adopt a few new techniques for my algorithms course. I still had over a hundred students, but now almost half were in China, and almost all were learning remotely. I decided to alter the schedule and taught four sections for 50 minutes each MWF. This way I could have about 30 students per section. I had always wanted to make my algorithms class more interactive, and this year seemed like a good opportunity to try inclass worksheet sessions through the use of breakout rooms in Zoom. I prerecorded some short lecture material for those worksheet days, and then spent the class time having students split into groups to talk through the provided worksheets. Overall this worked out quite well.
Of course, this approach had to change in this remote environment. I found it difficult to facilitate oneonone interactions in a Zoom meeting with multiple students present. Originally, I tried separating students into individual breakout rooms to ask questions, but found that this took too long. After some feedback about this from students, I ended up just staying in the main zoom room while conducting the oneonone interactions as usual. Effectively, the office hours were the same, but the student I was working with had an audience. This actually ended up being quite effective, since the students asking the questions got the same amount out of the process as usual, and sometimes the observing students were able to provide insightful followup questions.
Encouraging Active Participation
Because I believe that office hours are so important, and because my office hours have received such positive feedback , I have ways to encourage students to attend. I tell my students that if they are willing to put in the effort to seek me out and ask questions, then I am willing to work with them for as long as it takes to understand the answers. For me, these are not just words: I follow through. I have often extended office hours to help a couple struggling students, have scheduled individual meetings with students who have asked, and have made myself available to answer questions after hours and over weekends through email or a course forum.
Learning Through Homework
Another way I try to engage my students with the course material is the design of the homework assignments and projects. My homework assignments typically have a handful of easy, more standard problems, but also include a couple difficult, complex, and hopefully fun problems that force my students to really think. While this is not something that works for the limited time inclass active learning techniques, these problems fit much better for longer term homework assignments where the students have plenty of time to ask questions and seek help at my office hours. For projects, I like designing complex problems that can be broken down into a series of relatively easy tasks. This gives the students a clearly defined objective, while also providing them with that sense of satisfaction at having completed a rather complex task.
Learning Through Research
Over the past two summers I got to experience teaching in a different context, outside of the classroom: through summer research projects. I was the project manager of a team of students (which included undergraduates and MS students) working for Duke's Data+ program. In 2020, my group was working on a continuing project, American Predatory Lending, while this past summer, my team was tasked with an exploratory investigation of election patterns in North Carolina. I have found that this research mentoring requires a balance between wanting to let the student explore the problem themselves, while still guiding their exploration in the direction I find most promising.
To help manage this balancing act, I took a technique from discussions I had with my friend who was an organizer for a political campaign. I set up daily checkin meetings with my students, while holding special meetings at the beginning and end of the week. These weekly meetings were for us to discuss the big picture. At the beginning of the week, I would give broad goals to the students and we would work on a plan for how to break the goal down into specific tasks. In the daily meetings over the course of the week, I could check on their progress and help guide their work as needed. The large meeting at the end of the week would be a chance for them to present their work for the week and that would be my opportunity to critique their results. This gave them the freedom to explore themselves without too much interference, but still allowed me to guide their exploration, while intervening when necessary on specific points at the end of the week.
Teaching Is Learning
This past year of remote and hybrid teaching has really reaffirmed that teaching is, itself, a learning process. I was forced to try a large swath of new ideas, many of which I found promising and intend to take with me into future classes. I will continue to experiment and seek out new techniques to create an engaging course environment for my students as I grow as an educator.
For me, the essential pillar of good teaching is student engagement; whether this means having students actively participate in class activities, or simply paying close attention during a lecture. Over the years I have come to adopt a teaching style that mixes inclass activities, such as group worksheets or thinkpairshare questions, with more standard lectures where I lecture while facing my students and use standard public speaking methods for maintaining attention: movement, gesticulation, vocal inflection, cadence, and, critically, eye contact.
Using Examples
Working example problems is an important part of my teaching process. I prefer to do this live on the board, later providing students with annotated slides of the worked examples. My students say that I am very good at expressing complex material through simple ideas. A big part of this is my inclass examples, and students often ask me for even more worked examples in their course feedback. When demonstrating a new technique, I choose examples simple enough to work through on the board, while also being e effectively instructive. I take a Socratic approach, prompting the students to provide the next step. This promotes student engagement, since they tend to ask more questions during these examples. My students have provided positive feedback about my willingness to address these questions in class, and I make an e ort to prompt for questions throughout my lectures.
Going Beyond The Subject
Student engagement is also served when I take a little lecture time to discuss concepts beyond the precise subject of the course. I give the students a glimpse into the complex applications of what they are learning, emphasize the importance of that material, and break up particularly dense or repetitive portions of the course. For example, when introducing the dry subject of Riemann sums in single variable calculus, I have students think about how a computer might evaluate an integral, and how the different endpoint rules and other methods we discussed relate directly to numerical integration techniques used in my research. In another recent example, I noticed my algorithms students were getting lost and not asking questions during our discussion of undecidable problems. This is a rather dense topic, so this year I used an interlude to ask students where they thought humans fit in our hierarchy of computation. We then discussed the implications of the famous Turing test, and how they now had the skills to understand it.
Active Participation Methods
In my teaching career, I have also employed a variety of active participation techniques. Most involved a work sheet or a prepared problem set, and a standard approach was to have the students work on the problems in groups. I prefer having my students work on the boards so I can watch their mistakes as they occur and provide immediate feedback. But participation techniques can be ineffective if not done correctly. For example, I was once a TA for a set of courses that tried making very difficult worksheets, with the theory that it would force the students to work as a team to figure them out. In practice, these worksheets just made the students anxious, with only a handful students able to understand the problems. Therefore I try to choose problems that are challenging, but can still be worked through on time and provide my students with a sense of accomplishment when they write the answer on the board.
A form of active participation I used in small classes involved calling individual students to the board to work through problems in front of the class. This sounds terrifying at first, but the purpose is to have only the students work through the problem. If the student at the board makes a mistake, it is up to the other students to help fix it. The idea is to help the students become more confident in their work, while exposing them to the common pitfalls. I take time to explain this goal before we start, and to remind them of it throughout the process. Meanwhile my role is encouraging the students while they are at the board and when they think they have spotted a mistake. This method worked well, and after a few tries, the students themselves could see its value and warmed up to it.
These boardbased active learning techniques are infeasible for very large classes like my algorithms course at Duke. In that class, I employ thinkpairshare. I provide students with a prompt. They then have a few minutes to talk about it with their neighbors while I wander the room, listen in, and sometimes join discussions. When enough time has passed that a few groups have started to hit on the important concepts, I bring the class back together and have some of the students share what their group discussed.
Remote Learning Adaptations
In the fall of 2020, I was forced to adopt a few new techniques for my algorithms course. I still had over a hundred students, but now almost half were in China, and almost all were learning remotely. I decided to alter the schedule and taught four sections for 50 minutes each MWF. This way I could have about 30 students per section. I had always wanted to make my algorithms class more interactive, and this year seemed like a good opportunity to try inclass worksheet sessions through the use of breakout rooms in Zoom. I prerecorded some short lecture material for those worksheet days, and then spent the class time having students split into groups to talk through the provided worksheets. Overall this worked out quite well.
Of course, this approach had to change in this remote environment. I found it difficult to facilitate oneonone interactions in a Zoom meeting with multiple students present. Originally, I tried separating students into individual breakout rooms to ask questions, but found that this took too long. After some feedback about this from students, I ended up just staying in the main zoom room while conducting the oneonone interactions as usual. Effectively, the office hours were the same, but the student I was working with had an audience. This actually ended up being quite effective, since the students asking the questions got the same amount out of the process as usual, and sometimes the observing students were able to provide insightful followup questions.
Encouraging Active Participation
Because I believe that office hours are so important, and because my office hours have received such positive feedback , I have ways to encourage students to attend. I tell my students that if they are willing to put in the effort to seek me out and ask questions, then I am willing to work with them for as long as it takes to understand the answers. For me, these are not just words: I follow through. I have often extended office hours to help a couple struggling students, have scheduled individual meetings with students who have asked, and have made myself available to answer questions after hours and over weekends through email or a course forum.
Learning Through Homework
Another way I try to engage my students with the course material is the design of the homework assignments and projects. My homework assignments typically have a handful of easy, more standard problems, but also include a couple difficult, complex, and hopefully fun problems that force my students to really think. While this is not something that works for the limited time inclass active learning techniques, these problems fit much better for longer term homework assignments where the students have plenty of time to ask questions and seek help at my office hours. For projects, I like designing complex problems that can be broken down into a series of relatively easy tasks. This gives the students a clearly defined objective, while also providing them with that sense of satisfaction at having completed a rather complex task.
Learning Through Research
Over the past two summers I got to experience teaching in a different context, outside of the classroom: through summer research projects. I was the project manager of a team of students (which included undergraduates and MS students) working for Duke's Data+ program. In 2020, my group was working on a continuing project, American Predatory Lending, while this past summer, my team was tasked with an exploratory investigation of election patterns in North Carolina. I have found that this research mentoring requires a balance between wanting to let the student explore the problem themselves, while still guiding their exploration in the direction I find most promising.
To help manage this balancing act, I took a technique from discussions I had with my friend who was an organizer for a political campaign. I set up daily checkin meetings with my students, while holding special meetings at the beginning and end of the week. These weekly meetings were for us to discuss the big picture. At the beginning of the week, I would give broad goals to the students and we would work on a plan for how to break the goal down into specific tasks. In the daily meetings over the course of the week, I could check on their progress and help guide their work as needed. The large meeting at the end of the week would be a chance for them to present their work for the week and that would be my opportunity to critique their results. This gave them the freedom to explore themselves without too much interference, but still allowed me to guide their exploration, while intervening when necessary on specific points at the end of the week.
Teaching Is Learning
This past year of remote and hybrid teaching has really reaffirmed that teaching is, itself, a learning process. I was forced to try a large swath of new ideas, many of which I found promising and intend to take with me into future classes. I will continue to experiment and seek out new techniques to create an engaging course environment for my students as I grow as an educator.
Course Evaluations:

Sample Lecture Notes:
algs_bellmanford_lecture_notes.pdf  
File Size:  421 kb 
File Type: 
algs_greed_lecture_notes.pdf  
File Size:  981 kb 
File Type: 
Sample Course Syllabus:
algssyllabus.pdf  
File Size:  330 kb 
File Type: 
Sample Homework:
590_algshw5.pdf  
File Size:  108 kb 
File Type: 
290_ppimhw6.pdf  
File Size:  112 kb 
File Type: 
dwarves.pdf  
File Size:  58 kb 
File Type: 