I was a bit nervous going into this quarter, mostly due to the new class that I was teaching.  Python for Programmers is being created by me as I go, which is always a daunting experience.  I’m happy to report that I think it’s coming together just fine.  We’re covering all the material I promised, and the students seem to be learning something, although the latter assertion will be put to the test by the midterm next Monday.  One of my biggest concerns going into the class was that students who had programmed before wouldn’t be sufficiently challenged.  As it turns out, that’s not the case at all.  They seem to be working hard enough and very few of them seem to be bored.  While there are always things I’d like to improve in my teaching, I’m pleased.

What’s been most interesting to me is the unexpected benefit of teaching more experienced programmers.  Nearly my entire university teaching career has been focused on teaching novices to program.  Yes, I’ve had the occasional upper-level theory class and some experience with introductory discrete math.  But the majority of the sections I’ve taught have been development classes for people with little to no experience coding.  I hadn’t even realized how much I had internalized the tricks for teaching novices to program (be encouraging, coax them toward the answer without giving it away, progressively give more difficult exercises, etc.) until I found myself not needing them anymore.

The most startling example was a recent interaction during office hours.  A student had developed some code for a problem on the assignment which wasn’t working.  I looked it over, realized one issue it was having, and described it to him.  I was about to launch into a more step-by-step breakdown when he took the keyboard away and made the changes suggested by my comment.  I tried to wipe away my stunned expression as we talked about the next issue.  It was amazing and shocking and absolutely wonderful that I didn’t have to do anything more than point out the bug in his code.  There was no need to patiently dance around the solution until he saw it, since he saw it immediately.

I don’t think I’ll move away from teaching novices to program.  It’s difficult but I think I’m skilled at it, which is a great combination.  But every once in a while it is refreshing to teach someone who immediately knows what I mean when I point out a bug, who laughs at my jokes about Java and C++, and who recoils in horror at various Python quirks.