Quoting Charles MacFadyen <[log in to unmask]>:
> Since few of the students from the class end up taking the exam,
> we're re-considering whether Java is the way to go. I'd love to hear
> what others are doing.
Interesting question. It made me wonder what MIT is doing (UVM has
introductory programming courses in C++, Java, and MatLab ... ). What
I found was an interesting blog posting that I'll pass on ...
Why Did M.I.T. Switch from Scheme to Python?
I?ve been seeing mail and blog postings, particularly from people in
the Lisp community, why MIT has switched from using Scheme to Python
in the freshman core curriculum for the department of Electrical
Engineering and Computer Science.
At the International Lisp Conference, Prof. Gerry Sussman gave a short
impromptu talk explaining the new freshman curriculum. Just to get a
second opinion, I later called Prof. Jacob White, one of the designers
of the curriculum and lecturers for the core courses. (Digression:
Jacob and I have been close friends since I was six years old!) He
confirmed Gerry?s description.
Asking why they changed languages is, in some sense, the wrong question.
The freshman software engineering course, since 1985, has been based
on the book Structure and Interpretation of Computer Programs (known
as SICP), which uses Scheme. The course is now nearly thirty years
old. Engineering has changed quite a lot in thirty years. Since
1995, Gerry and his co-author Prof. Hal Abelson have advocated
changing the freshman curriculum radically, not basing it on SICP.
In 1980, computer engineering was based on starting with
clearly-defined things (primitives or small programs) and using them
to build larger things that ended up being clearly-defined.
Composition of these fragments was the name of the game.
However, nowadays, a real engineer is given a big software library,
with a 300-page manual that?s full of errors. He?s also given a
robot, whose exact behavior is extremely hard to characterize (what
happens when a wheel slips?). The engineer must learn to perform
scientific experiments to find out how the software and hardware
actually work, at least enough to accomplish the job at hand. Gerry
pointed out that we may not like it this way (?because we?re old
fogies?), but that?s the way it is, and M.I.T. has to take that into
The new approach also has the big advantage that it combines computer
science with electrical engineering, whereas the old one taught them
as entirely separate disciplines. This way, students see how they
interrelate. Also, as Jacob points out, some of the same
macro-principles apply to both software and hardware, and the students
see this illustrated. There is extensive lab work, making robots and
It just so happens that the robotics substrate software that comes
with the system they?re using is programmed in Python. Similarly, the
mobile software environment is based on Python. (Or, at least, the
original plan was to use such a substrate, although it may have
changed for various business reasons.)
Changing programming languages was absolutely not a goal of the
curriculum change. It was merely the result of the consequences of
various decisions. We can always discuss how it came to be that the
robots and mobile devices are using Python instead of some other
language, but that?s not the question being addressed here. M.I.T.
has nothing against Scheme. (And, of course, M.I.T. does teach classic
software engineering, later in the curriculum.)