When I signed up to be a teaching assistant for MIT’s performance engineering course (6.172) in Fall 2017, multiple people warned me about how much work it would be. Their advice made me nervous about taking on the responsibility, but I had TA’d three times as an undergrad, so I thought I was a veteran.
I took 6.172 during my first semester as PhD student in Fall 2016, exactly one year prior to my TA appointment. My advisor, Prof. Charles Leiserson in CSAIL, suggested I take it since he was co-teaching it at the time. Of course I agreed, as my experience taking this professor’s classes in the past had been rewarding but not too much effort. Little did I know that 6.172 is well-known among the MIT undergrads in CSAIL for basically being a full-time job. 6.172 is listed as 18 hours of work a week, but many students report spending upwards of 30 or even 40 hours per week on the course. Despite its reputation for being a huge time commitment, around a hundred students take it each year. The teaching staff also has to keep up by producing, maintaining, and presenting a huge amount of course material.
MIT’s unofficial motto is that learning here is like drinking from a firehose, and I can’t think of a more accurate description for the course. My calendar for the entire semester was covered in multiple layers of royal purple (the color Google had assigned to 6.172). There are weekly exams, two midterm exams, four projects, writeups for the projects, and code reviews in addition to weekly recitations and lectures. At the time, I was just trying to keep my head above water because I was taking other classes and adjusting to life as a grad student while trying to get research done. I had many sleepless nights and anxious mornings because of 6.172 during my first semester. I was hit with waves of impostor syndrome - if I was struggling with the first class of my PhD, it would only be a matter of time until my advisor fired me. I wouldn’t have made it through without my labmates, who assured me that I was far from the only person to have felt this way.
Despite the work required, I enjoyed the class because it teaches advanced, real-world programming skills and is unlike any course I’ve ever seen. All of my previous coding courses required students to implement something from scratch. In contrast, 6.172 gives students correct code and asks them to make it as fast as possible using the techniques taught in lecture and the homeworks. Performance engineering (what we teach in 6.172) is often more complicated than writing code from scratch because it requires not only an understanding of the underlying structure and goals of the code, but a deep understanding of the specific implementation decisions in an existing codebase. It often requires reading hundreds if not thousands of lines of existing code to find potential optimizations and is often more frustrating than writing constructive code because some optimizations may not produce the expected speedups.
6.172 is unique to MIT, not only because of the effort expected of the students, but also due to the technical experience and creativity demanded of the course staff. In Fall 2017, there were two dedicated lecturers, one faculty administrator, four graduate TAs, and five undergraduate TAs for 6.172. In addition to holding office hours and attending staff meetings, the course staff was in charge of creating and grading assignments and exams. I was also partly responsible for maintaining the cloud-based virtual environment that the students use to complete their assignments.
Suggestions for future TAs:
1. Practice your presentations. I think it would have been helpful for me to practice a couple of recitations with some of the other TAs. Since the course staff was just trying to keep up with the pace of the material, the actual teaching portion was often an afterthought. There are communications workshops (for example, during IAP) that may help TAs with their presentation techniques.
2. Ask for feedback earlier rather than later. Although there are course evaluations at the end of the semester, I would suggest asking students for feedback on your teaching during the semester to try to improve during the semester as well as for the next TA assignment.
3. Try to be confident during your recitation section. Even if only a few students are answering questions, continue with answering the questions and use it as an opportunity for students to see how you solve problems.
4. Try to balance your responsibilities in advance. If possible, schedule fewer things during the semester that you are teaching.
5. Set boundaries between teaching and the rest of your responsibilities. It’s easy to let teaching take over your life. I had students drop by a couple of times unannounced at my office or try to schedule meetings outside of class and office hours. Although I wanted to help, I also had to set aside time for my other tasks.
Although TAing 6.172 was a huge amount of work, it was a valuable experience because I got to interact with students through my recitation section and office hours. It was my first time TAing at MIT, and I was inspired by how motivated and hardworking the students were. I would see some students every week at my office hours. I was amazed at how some students would come up with new solutions or questions that I had never considered. As a result of my experience TAing 6.172, I am working on my presentation skills for research and teaching so I can be better prepared to TA other classes at MIT.