
I finally got around to listening to this interview with Smalltalk Dave Thomas (as opposed to Ruby’s Dave Thomas) from the Agile Toolkit Podcast. There’s a lot of interesting stuff in this puppy, and curriculum design would be a totally different animal if more academics were listening to people like Thomas.
He’s clearly a big fan of functional languages and tools
It’s really too bad we didn’t actually keep that course that taught those students functional programming and make them see Haskell or Scheme.
and also argues that JavaScript (a) is huge (in small part because Google just uses it so much, and so well) and (b) is essentially Scheme with a different (nastier, in his opinion) syntax. We teach a little JavaScript in an introductory non-majors course, but I think we almost entirely don’t touch it after that. Hmmm… Maybe we need to look into that.
Also, and not surprisingly given his Smalltalk history, he’s big into duck typing (like Smalltalk and Ruby) and not a big fan of heavyweight static typing. I twitch a little when I hear this stuff because static typing has always been a big deal in my universe, especially in teaching. An interesting take on this, though, is that
Test first really does the same thing as a typechecker, and in fact it does a little more.
My graduate experience at UT was very much a formalist experience, with lots of emphasis on formal methods and static types. Clearly there’s an alternative model here where serious test driven development provides the safety and correctness. You obviously need the discipline to make this work, but you arguably need discipline to do any sort of interesting software development well. Taking that as your premise, however, would lead to a very different curriculum model than most traditional arrangements.
What would a curriculum look like if you took agile methods and test driven development as your key premises from the very beginning. If all the early assignments were all unit tests that need to be passed? (The students would be writing their own tests for later assignments.) If everything was done in pairs/teams? If you emphasized dynamic tools and languages, using heavy tests to keep the quality high?
I’ll leave everyone with this very cool (for someone who teaches this stuff) line:
There is going to be an acute shortage of talented software people.
We all (and I mean everyone in our society) have come to seriously depend on software, so we all need talented people to be doing that work. This means we need to be encouraging bright young people to consider software development and computer science as an important and exciting option. We need to provide curricula that challenge, excite, and prepare them. I think we’re doing a good job at Morris, but could do better. Unfortunately, I think there are still way too schools that are stuck somewhere in the mid-80’s (”Hey, objects are actually pretty cool!”).
No tag for this post.
Related posts