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. :)