the Communications Web site, http://cacm.acm.org,
features more than a dozen bloggers in the BLoG@cacm
community. in each issue of
Communications, we’ll publish
excerpts from selected posts.

DOI:10.1145/1592761.1592766
http://cacm.acm.org/blogs/blog-cacm
computer science
curriculum,
Deceptive advertising
Ramana Rao writes about the evolution of computer science
curriculum and Greg Linden reflects on ethics and advertising.

from Ramana Rao’s “as i once thunk” A blog posting by a long- ago associate has lin- gered in a Firefox tab for quite some time. The posting by Dan Weinreb is “Why Did MIT Switch from Scheme to Python?” with further discussion on Hacker News. Don’t be fooled by the Hacker News title, because the thread is really about the evolution of a computer science (CS) curriculum.

Thirty years ago this August, I arrived at MIT, and registered in the course 6.031, The Structure and Interpretation of Computer Programs. The lecturer was Robert Fano, an electrical engineer famous for his work in information theory who moved into computer science in the 1960s, at least a decade before the first undergraduate CS curriculum emerged. My recitation instructor was Christos Papadimi-triou, who was already distinguishing himself as a theoretical computer scientist. Within weeks, as I listened to the magic delivered by the Italian- and

the Greek-tinged voices, I decided to major in computer science.

In the next few years Hal Abelson and Gerald Jay Sussman would concentrate 6.031 into 6.001, the very renumbering punctuating an essential victory. They would pack Algol and Lisp into an elemental Scheme, unifying key concepts and intensifying workload in a curricular tour de force. Yet, my initial reaction was I quite liked seeing the two parts separately for their own individual elegances.

I can remember Fano, with a forceful enthusiasm, explaining call-by-name as he dashed out a diagram with contours and the magic of thunks as chalk hit chalkboard in the Green Building lecture hall. And in the second half of the course the same crystalline clarity emerged in Papadimitriou’s recitations of Lisp’s dynamic forms and list structures and meta-forms of representation and computation (that’s data and control abstractions). As 6.001 came into force, my worry was that the sheer grind and the forging of axes into a volume would lose the po-

tency of the original. However, over the years, hearing wows and even avowals of love for 6.001, I accepted that perhaps not much was lost.

The present shift, with the retiring of 6.001 and the introduction of 6.01 this last year, is much more significant, belied by the simple loss of a zero. The course may still contain a good chunk of what was there, but it hits at perhaps one level of abstraction too high and with an abundance of grit and whirl of “real world” engineering and so much more stuff. All considered, I doubt the MIT CS curriculum will be damaged by this. Still, the transformation brings me to active discussions over the last few years in ACM venues on the declining enrollments in CS programs and on the shaping of computing courses for other fields and the primary education system. You see the same vector of replacing elemental formulations with ones that accommodate teaching students in other fields by contextual-izing with relevant or engaging problem domains.

In all this discussion of pragmatic factors and educational theories, I wonder whether what may be lost in translation (for a while, anyway) is exactly the magic at the heart of the field that draws people into it. Thirty years ago the field’s own core curriculum was still being formed for those in the field itself and now with the computing crescendo of the 1990s, we are in the next era of cultural diffusion. Even if it might make sense for MIT to retire 6.001, is it not time for an analogous course for a broader audience—say, simply Computing—to emerge? (Cer-

References:

http://cacm.acm.org

http://cacm.acm.org/blogs/blog-cacm

Archives