On October 3rd, I'd blogged about Diomidis Spinellis' delightful book, Code Reading. Dimodis emailed me this morning and among other things told me of a course he's been teaching the past two years, titled "Software Comprehension and Maintenance." He also pointed me to last year's projects here.
For some time, I've been pushing the idea of (code) reading lists for software engineering, not unlike what one finds for literature studies. I was happy to hear that this is exactly what Dimodis has done in his course. Building on the work in his book, he requires students to study real code from a variety of open source projects.
I've encouraged this concept with other academics, but what better way to lead than to demonstrate by example. In addition to the gallery of software architecture I've started on my Handbook site, I'm starting to collect a code reading list which I'll soon post. At the top of my list is the source code for MacPaint, which - thanks to Bill Atkinson and Andy Hertzfeld - is now sitting at the Computer History Museum (along with a multi-hour interview I conducted with Bill and Andy regarding MacPaint). There's a handshake deal with Apple permitting the Museum to release the code to the public, but we are apparently still waiting for Steve to say the magical words to the legal folks at Apple so that they can cut a suitable letter. Stay posted: this really is a beautiful piece of code.
Do any of you have examples you think I should include in this list? Please email me if you do.