Image by Denise Kribs
I am a learner. I am happy when I am learning new things. The fascination with learning sometimes bleeds over to teaching (though my introversion tends to create an internal struggle). In the past, I have presented at a few user groups and conferences. A few months ago, I got an opportunity to teach an Advanced Application Programming course at SMU as an Adjunct Professor. The opportunity came through one of my colleagues at Improving, Ken Howard, who has himself been teaching as an Adjunct Professor for the last 7 years. It felt like the opportunity of a lifetime, so I jumped on it. It was a very exhausting and rewarding experience at the same time, so I’ll try to write down here what I remember.
Goals and Expectations
My lizard brain struggles with trying to be a perfectionist. For a 60 minute conference presentation, I spend well over a month obsessing over the talk preparation. I knew 5 months before the semester started that I would be teaching, but did not want to spend all of those 5 months on preparing the lectures. I timeboxed the lecture preparation to the last two months, and tried to get other things in order or on autopilot (SqlSmash issues, roadmap etc). I did have to finalize the textbook and the syllabus during the first few months, which took some time in itself. I did this by researching what is currently taught in other universities, and combining that with what I would expect a junior candidate walking in to an interview to know.
Besides teaching, I was excited to get to know the students as well as other professors. I also hoped to make a positive difference and guide a few of the students on what to expect in the industry. I suppose a big goal was to try to not end up like Mr. Mosby.
I decided on Pro C# 5.0 and the .Net 4.5 Framework as the text book since it seemed to have a good balance of the different components of .Net. It’s a thick book, but not having taught a course before, I wasn’t sure if I was covering too much or too little in the course. Luckily, Ken had agreed to guide me through the preparation and pointed out early that I was being too ambitious and should cut back on the content. In hindsight, he was absolutely right and I am really glad I took his advice.
The semester was 16 weeks long and I had two 80 minute class each week. I divided up the material into roughly 3 five week segments, with an exam at end of each segment as well as opportunities for students to provide explicit feedback. I reserved the class before each exam to be a guest lecture where one of my peers (or myself) would cover a topic relevant to the students as programmers, but which was not a part of their exam.
I am really bad with names. To get around that, I printed the list of student names and pictures (I had a class of 26 students) and hung it up on my desk for a few weeks till I knew all their names.
I started preparing the actual content (code demos/slides/assignments) for the classes 2 months before the first class. It was a little overwhelming to prepare so much content, and consumed all my free time outside my day job. Luckily, my wife was really supportive and tried to give me as much time as possible. I think the only things I did for a few months were going to the day job, working out, preparing for class and hanging out with the wife. Like I do in my technical talks, I came up with demo scripts for each class so that the concepts I covered flow nicely from 1 topic to the next.
I love listening to music when I work, but I had to limit myself to instrumental music (mostly movie themes) to avoid it being a distraction as I prepared for the course. I made some other small changes weeks before my class started, like cutting down on the caffeine intake and limiting myself to 2 cups of coffee per day or less. My classes were in the evening and I didn’t want to run out of steam by that time. I was also planning to wear more formal clothing to class than I usually do, and started doing that a month before class started so that there were less “new” things to deal with.
Once class started, things mostly went according to plan. After the first 5 weeks, one feedback item I got regularly was that I went too fast sometimes. I adjusted my teaching style accordingly, and I think the remainder of the class was at a much more student friendly pace. I also kept a log for each class with the things that went well, those that could have been better, and how long the class lasted. This was to help me improve if I teach the class again.
I also offered to talk to any of the students outside the class if they had any questions about working in the industry, or needed any guidance for future jobs/internships. 3 of the students took me up on that and I tried to help them in whatever way I could.
I had a mix of seniors and graduate students in the class. The seniors had done at least a Java programming class before this one, and were able to keep up pretty well. I assumed the graduate students would be more proficient in programming and might even find the class too easy. Well, the graduate students had a high percentage of international students, and a lot of them had not studied at the same level before as their senior counterparts. So they had to put in a lot more effort to keep up in the class.
This didn’t really affect my teaching, but I was surprised at how many students wait till the last hour to submit their assignments.
I usually listen to podcasts during my commute and workouts. Because I had so much going on during this time, I had to stop doing that to give my brain a break and appreciate the silence.
I got official feedback from the university (collected from students) a few weeks after class was done. It was really positive, and that felt really nice. I am still in touch with a few students, and it’ll be interesting to see their journey into the workplace.
I would like to thank Ken Howard for helping me get this opportunity and guiding me through the process. I would also like to thank my friends Amir Rajan and Brian Sullivan for doing guest lectures and sharing their knowledge with the students.