State of the art history
I’ve seen a lot of mail fly by lately on the Python edu-sig mailing list about clean code snippets that are easy for students to digest. That made me wonder whether it’s appropriate to shelter students from the complexity of code in the wild throughout most of their university career.
Teaching people how to dissect a huge, largely undocumented code base into more manageable bits was (and still is) the most time-consuming task for me as a professional programmer. That certainly wasn’t taught at any school I’ve attended; I’d be curious if any universities do.
Here’s my take on how such a course could be structured; abstract and link to outline below. I’d be grateful for feedback.
Budding scientists study the well-established experimental techniques of their predecessors. English majors study the works of great writers like Shakespeare. Following this tradition of analyzing the approaches and designs of significant historical figures in the field, this course focuses on the art history of software.
The open source movement has made it possible for anyone to study large, industrial-strength software. Mature code bases have a rich history full of design decisions and trade offs. This course covers why modern software is built the way it is, as well as the design patterns that emerged, while drawing upon the code bases of many open source projects.
Here’s a preliminary outline of the topics I’d want covered. I’m still 5 lectures short by UofT standards—then again, I’m not sure if I’m alloting enough time for the material I’ve already listed.
September 29th, 2009 at 7:59 pm
[…] and designed a course around that idea, which is why I was excited to read Jason Montojo’s recent post, and the course outline he has put together. Jason did several undergrad projects with me, is one […]