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-