Tuesday, April 3, 2012
I gave a guest lecture at Carleton last week. It was for the first programming class that both computer science and non-major students take, taught using Processing. I seized the opportunity to use some of my somewhat less conventional techniques and "lecture" as little as I could.
I was lucky to be basing my lecture off of a very solid set of notes. The professor who put these together taught me my very first programming class back in 2002. (I still have a printed and bound copy of his notes from that class.) In my guest lecture, I covered the first part of Chapter 8: Shared Data.
This is how I prepared for the class:
- First I glanced over the notes and then started to type up the source code described within.
- While I wrote out the code, I thought about what might be the best order to present it during class, and in what chunks. (My order did differ from the order in the notes, which makes sense - written and oral communication are not the same thing.) I saved individual files as I went along so that each file showed a bit more progress.
- I went through the notes again and kept a detailed outline of what I wanted to explain and what I wanted to get the class to do.
- I used my outline to create some simple slides (mostly images to help explain concepts) and some printouts I wanted to make for a couple of demonstrations.
- Finally, I made a much briefer version of the outline that I could refer to during the actual class so I didn't get lost (especially useful given how sparse my slides are).
Here are some of the interesting techniques I used that made my lecture a lot more like a tutorial:
- I explained a concept to students and then asked them to implement it in the code (I had them download a file with an initial bit of code to start with, and offered the individual progressive files in case they could not finish the task).
- I had students read code and explain to me what was going on.
- I had students hold signs and point to each other to emphasize how variables can refer to the same data and the implications of doing so. I gave new signs or had them destroy the current ones to illustrate changing the data.
- I asked the class many questions and sometimes lead them to ask a question they would be able to answer by playing with code rather than hearing it from me.
What kinds of techniques do you use in first year programming lectures?