For at least the past decade my main teaching focus has been introductory programming. The language and context have differed as our curriculum and the courses I taught shifted, but I primarily spend my time teaching relatively inexperienced people to program. For the most part I love it. There is something special about being a student’s first programming instructor, which is partially why I think many of my students are so enthusiastic when they see me in the hallways or at events. It’s also a challenging enough task that I don’t ever find myself bored, which means I’m generally quite happy about what I do.
But I also have to admit that developing and teaching the accelerated Python course was a revelation for me. It has been historically unusual for me to teach people who have successfully learned a (different) programming language before, and there were a lot of things I didn’t anticipate about it. To begin with, they always get and laugh at my jokes, which seems trivial but is in fact a lot of fun. More significantly, they pay rapt attention to more esoteric things like a discussion of how Python treats objects and memory. They really want to know why it is that an assignment of a variable to a list acts differently than an assignment of a variable to an integer, and you can see it in their eyes and their body posture when you draw pictures of the representations on the board. It’s also easier to give them general hints on assignments and have them run with your vague ideas to produce working solutions. Perhaps more importantly, when they get working results they get genuinely excited about it. For example, I made a suggestion to a student about modifying a nested loop on this week’s assignment, and I got the following response:
Ohhh okay, thank you! I just sat and fiddled with it for awhile after getting it to work in order to fully understand what was actually happening after your hint, and when I realized that the range in the second for loop was getting smaller as the first for loop iterates I kind of exploded. That’s so coooool!
People learning their first language are a little too overwhelmed to experience giddiness rather than relief, so seeing a student so happy about discovering why and how his solution is working is such fun. I enjoy teaching novices too much to completely give it up, but having a class where I interact with more experienced programmers is a good balance and something about which I’m grateful.