TITLE: Dijsktra on Academic Conservatism AUTHOR: Eugene Wallingford DATE: October 22, 2004 9:16 AM DESC: recent events have brought Dijkstra's Turing Award lecture to mind again. ----- BODY: A few different threads at work this week have me thinking again of Edsger Dijkstra's Turing Award lecture, "The Humble Programmer". (I first blogged on this back in July.) The primary trigger was a discussion yesterday of a grant proposal two of my colleagues were preparing. They proposed to teach our first-year courses using a studio approach inspired by the arts and architecture. The essence of the software studio is the concept of reflective practice. Students and instructors work on projects in a common space, with continuous interaction and continuous questioning. Students build things, critique their work and the work of others, and defend their work. A major goal of this approach is to help students develop the analytic and the artistic skills that are the hallmark of the professions. Ideally, students learn how to build, innovate, and invent. That is my own summary of what a software studio might do, not my colleagues'. You see, I've been interested in this approach for my whole career as a CS professor. My interest goes back to my time as an undergrad architecture major in the wonderful B.Arch. program at Ball State University. I began using a studio approach in my senior-level Intelligent Systems course back in 1995. (You can read more of my thoughts in the most recent incarnation of that course.) I've used the idea in other courses, too, though not in my freshman course. So I was quite excited that my colleagues were considering a change in how we teach introductory software development. Studio approaches work in other disciplines, and I have seen the results. Students become used to the give-and-take of constant evaluation, and they do become more deliberate creators. By spending time in a lab rather than a dead classroom, students develop better work habits and more facility with their tools. But the reaction of other faculty members was predictable. Should we be experimenting with our students' education? What do we do when this adversely affects retention? Or even recruitment? The questions were many and various. Maybe these questions reflected healthy skepticism, but they felt a little like an attempt to discourage a new idea. Frankly, given how poorly we seem to be doing educating a broad range of undergraduates to be effective software developers, I have a hard time thinking change is a bad idea. What about all this made me think of Dijkstra? His Turing lecture proposed a new way of thinking about and doing computing, too, and he was aware that some people would reject his proposal:
As [with] each serious revolution, it will provoke violent opposition and one can ask oneself where to expect the conservative forces trying to counteract such a development. I don't expect them primarily in big business, not even in the computer business; I expect them rather in the educational institutions that provide today's training ...
What Dijkstra saw in the early 1970s is every bit as true today. Whatever their political reputations, academics are remarkably reactionary when it comes to their disciplines. This may seem strange in a field like computer science, where the technical horizon advances steadily. But how we think about programming, programming languages, and our courses has really changed very little in the last 20 years. That's one reason I've had Dijkstra's talk on my mind this week. Discussions of classic AI papers with a graduate student are another. And a third is that I'll be heading to OOPSLA tomorrow... -----