My First-time Teaching Experience.

**Background:**This spring semester, here at Georgia Tech, I got the opportunity to be the full instructor for Automata and Complexity, CS 4510 -- a senior level undergraduate course. I learned about it last summer and started preparing for it during the fall semester. It isn't that common for Ph.D students here in computing to teach a full course, so I was very excited about this class. The course outline, was the following -- regular languages and finite automata, context free languages and pushdown automata, Turing machines, Turing recognizable and decidable languages, undecidable languages, classes P, NP and NP completeness, classes L, NL, NL completeness, NL = co-NL, and PSPACE completeness. If you read Sipser, these are chapters 1, 2, 3, 4, 5, 7 and 8 (with some minimal additions/deletions). These were the material that I was

*expected*to cover.

**Beginning:**As a student instructor, and since I was doing the class for the first time, I was unsure of how much time (more or less) I would have. I was also a bit nervous. In the beginning of the semester, I didn't know if I would be able to do all of the above topics. So I thought I shall try to not cover anything extra till I got an idea of my pace. In the past I held office house. But this is very different from a class. During office hours, I have the student's attention, and can explain again and again till the student gets it. I didn't have any pressure to finish teaching within a given time. But 2-3 classes into this semester, I realized that I don't have that luxury now. I was responsible for the whole class, and it became imperative that I get the explanation right the first time, or at least mostly right. I realized that good preparation was essential.

**The Class:**The class had around 20 students. I quickly learned all their names and that helped me develop a rapport with the class. I started teaching the material rather slowly, because I didn't know the level of the students. I soon learned their comfort level and paced myself better. By mid semester, I had finished decidability theory and started on time complexity, which was better than what I had hoped for in the beginning of the semester. So I could afford to do spend more time on the rest. Another thing that I tried to do was to ask the students for feedback at a regular frequency. I tried my best to let them know that they are welcome to air whatever views they have about the class.

I tried to do more examples in the latter half of the class. Also, I did certain things differently from the Sipser book. To give an example, I covered space complexity a bit differently from Sipser. I preferred defining the space bounded TM with a separate worktape up front. Sipser does it after PSPACE completeness, when defining classes L and NL. Plus we covered L, NL, NL completeness, Savitch's theorem and NL = co-NL before concluding with PSPACE completeness. I finished this with some 2-3 classes left, in which I taught the definition of communication complexity, and a few lower bounding methods. Why communication complexity? I felt that the students are much more likely to see randomized classes in future classes. So it was just a choice between interactive proofs and communication complexity, a choice I left to the students at the end. I did interact with GASARCH after his earlier post on what I should cover during the extra lectures, but I didn't use any of his suggestions. For someone who is interested in how I paced my lectures, look at the class schedule.

**Exams:**We had 2 mid term exams in addition to the final exam. I didn't do a good job of judging the difficulty before the first mid term exam. As a result, there lots of students who were unhappy. I didn't want them to feel demotivated, and wanted to encourage them to continue performing well in the class. So I asked H Venkateswaran, who had the experience of teaching this class before, how I could offer the students a chance to improve their scores. We discussed, and came up with the idea of an optional reading assignment, for those who wanted to improve. This worked well, the students were in general happy for the chance, also they got an opportunity to learn additional material.

**Overall:**It was a wonderful experience for me overall. Really satisfying, and was worth all the effort that I put into it. And I think most of the students returned happy too, at least those who cared to tell me. It would be incomplete if I didn't thank H Venkateswaran who helped me prepare for the course all through last Fall in a very comprehensive manner, and was readily available to answer my queries of all kind throughout the course. And thanks to my advisor Dick Lipton who was very supportive and understanding all throughout. Finally, I had great students, teaching is very interactive, and the class would have been much less fun if not for them.

Subruk is a great teacher. He has set a loacl standard of excellence.

ReplyDeleteSubruk rules!

ReplyDeleteyou got lucky

ReplyDeletethey let you get to the second test

http://chronicle.com/article/A-Professor-at-Louisiana-State/65555/

Three cheers for Subruk!

ReplyDeletei just taught more or less the same class (out of Sipser) at UMass Amherst:

ReplyDeletehttp://www.cs.umass.edu/~barring/cs401/

I spent the last third of the course on complexity while you spent the last half, but I agree with you about switching logspace and PSPACE in Sipser. I did a little bit on circuits at the end where you did communication complexity -- both are reasonable choices.

I'm impressed with your process for the course --you will make a great teacher of undergraduates.

Dave, Dick : Thanks for your kind words.

ReplyDeleteDave : I have looked at your class website to get a general idea on how to go about the class, and also to get an idea of candidate HW problems.

teaching is a pain in the behind, I tell you that...

ReplyDelete