Thursday, November 15, 2007

Well, I'm stuck

After years of lurking, I thought to start my own blog. Actually, I'm thinking about the CS1 class I'll be teaching during our Winter Term and wanted to start to lay out how that might go. It's been two years since I've taught CS1 and watching my two colleagues teach it has been increasingly frustrating for me. You see, they're both young and they grew up with the object-oriented thingie and are all hot to teach CS1 using an objects-first pedagogy.

I'm not young, being 25-years older than either of my colleagues. I grew up when there was just the procedural world, or if you were wacky (and I was, once), the functional world. We've taught CS1 using objects-early or objects-first for the last 5 years at least - we eased into it starting in 2000. I've even taught it that way a couple of times. And for the last 5 years (or more) we've complained that our upper-class students don't know how to program. Is there a connection? I don't know. Are the three of us just incompetent? I don't think so. Are our students all just stupid? Certainly not all of them.

So my idea is to harken back to my youth and teach CS1 in a procedural fashion - at least for the first few weeks. I'm going to teach objects-late, quite late, and emphasize problem decomposition, single class solutions (with multiple methods), unit testing, and debugging techniques. We'll use Java object classes and the API where appropriate, and we'll talk about objects, instance variables, and (horrors!) static variables and methods.

Originally I thought to use Stuart Reges and Marty Stepp's new book Building Java Programs: A Back to Basics Approach. But, while I like their procedural approach, on closer examination, their book seems to be stuck with the same dreary set of examples we got in Pascal textbooks 25 years ago - Fahrenheit to Celsius conversion, ASCII art, gpa calculations, etc. Stuff that our students these days are just crying to try out - not.

My second choice is Mark Guzdial and Barbara Ericson's Introduction to Computing and Programming with Java: A Multimedia Approach. This is the Java version of the Python book Guzdial wrote for the Multimedia curriculum at Georgia Tech. I've used the Python book in our non-majors class for the last 3 years and it works very well for the part of that course where I'm introducing the students to programming. My problem with it is that it's not procedural enough for what I wanted to do.

So my third choice is to use both. Taking the ideas from Reges and Stepp and doing them in a multimedia fashion like Guzdial and Ericson. I haven't finished this thought yet, so the course sequence is unclear, as are the lab and homework assignments. The lab I'll do all this in is a Linux lab, so the students will have some cognitive dissonance there as well. Thinking continues...