Learning to Teach to Learn

I’ve been making steady progress with my Italian podcasts: please (per piacere or per favore) and thank you (grazie), days of the week (oggi è giovedì!), numbers (up to 100), Merry Christmas (Buon Natale! Clearly I’m still working my way towards the present in podcast-land). I’ve also been picking up more vocabulary through livemocha.com‘s Rosetta-Stone-like lessons. They step you through six phases, in increasing difficulty: learn (look at pictures, read the caption, listen to it spoken), reading (match pictures to text), listening (see picture and match audio to text), magnet (drag and drop word tiles in the right order to form a correct caption for a picture), writing (compose your own sentences based on the new vocab), and speaking (record yourself reading a passage aloud).

I finished the first six-part lesson and ran straight into a huge potential time trap. You see, once you submit your writing and speaking “lessons”, they are posted for others to comment on. This is absolutely fantastic, as you can get feedback (for free) from other users of the site, and generally from those who have more expertise in the language you are studying than you do. But once you submit a lesson, the site lists for you the last few entries other people have made on that same lesson. And since it’s fresh in your mind, of course you might click through… and then you might start spotting small mistakes… and writing little helpful comments. And then the teacher in you roars to life and you start clicking through all of these entries, because, well, you can’t let this happen. Not only that, but you get “mochapoints” for commenting on others’ submissions, and extra points for being the “first to review” anything. (Mochapoints aren’t worth anything, they’re just a status marker indicating your level of activity on the site. But apparently this is still motivating on its own.)

An hour later, you realize that you’ve just spent an hour grading other people’s rudimentary Italian essays (e.g., “The woman is tall. The boy is fat. You are rich. I am poor.”). While this is undoubtedly yet another useful way to reinforce your language learning (you end up checking extra-carefully before posting a correction for anyone else!), it’s not clear that this is overall the best use of your time. You step gingerly away from the site, but not after listening to (and commenting helpfully on) one of Vitor-from-Brazil’s spoken English submissions. Sigh.

P.S. Vitor later “friended” me, apparently in gratitude for my comments. Awwww.

Programming by Platonic Ideal

I am teaching a programming class on Data Structures: lists, arrays, trees, heaps, stacks, queues, and other fun things. This is my first time teaching at this particular university, and I’ve had to successively ratchet down my expectations of the students as it became clear that their preparation was not, well, adequate for the topics this course covers. Or rather, they do well catching on to the concepts, but struggle mightily when it comes to implementing them in code. I’ve been somewhat puzzled by this, since even students who have the prerequisite course under their belts seem to be having trouble.

Today, I got my first glimpse into why.

I scheduled a brief post-midterm conference with each student, to give them feedback on their current progress and to answer privately any concerns they might have about the course. One student today launched into a description of what that prerequisite course was like.

“I don’t want to say anything bad about the professor, but I don’t think I learned much. He just showed PowerPoint slides, and never ran any of the code, and we never had to write any code. He said it was more important to know the concepts, and he didn’t want us to write code because then we might get too used to the syntax of one language. You know, each language is different.”

I was flabbergasted, but tried to hide it. Sure, programming languages differ. And it’s great to get to a point where you have a solid grasp of the abstract ideal of an iterative loop, or a recursive method, or, heck, a list or an array or a tree or… all the stuff we’re covering–without being tied to one language’s syntax. But it’s staggeringly unfair to expect a student to get to that point without having worked in any languages at all.

It’s possible that this student’s view of his professor’s pedagogical opinions has been filtered or changed from what the professor actually intended; we don’t always communicate effectively. But the sad fact is that many of these students lack basic programming skills in the language in which these courses are taught, and that leaves them handicapped when facing all of the rest of the courses in the department. I can hope that they’ve gained some skill from the battery of assignments I’ve given them (and knowing what I know now, if I started the course over, I’d reduce the volume of that battery significantly), but any skills have been gained at quite a cost. I continue to be impressed at the amazing amount of energy and hours these students invest to keep up with what I give them.

Interestingly enough, six students (one from my current class) have already signed up for the class I will teach starting in January (Machine Learning!). You’d think they’d be sick of me by now. :)