[plt-scheme] A Couple of Questions on DrScheme/Mzscheme
Why do young students object to Scheme as a language? Or do they?
-----------------------------------------------------------------
Neil's experience is not all too uncommon with MIT students and
SICP based courses at other places. There is a large number of
students who see that they are exposed to ideas beyond the
regular run-off-the-mill course. Many also understand that, in
principle, they are being handed a very powerful tool.
Don't get me wrong .. SICP is a wonderful book and it can be
the basis of a wonderful course, but SICP cannot possibly be
the basis of a good introductory course if programming and
program design are the goal. MIT students become decent programmers
despite this course, not because it. Places with similar students
have the same experience -- and admit it if they have the courage
to analyze what's going on.
You need to do two things in the first course that SICP completely
fails at, if you want to bring across the power of the approach:
1. You need to accept that the second course is NOT going to be
in Scheme, even if the first one is. The second course must
be in TCFPL (the currently fashionable PL). Ergo, you need to
prepare students for the second course -- with Scheme and a
programming philosophy. That's why we called our book
"How to Design Programs."
2. You need to assign homeworks and projects that indicate how
powerful the tool is that you're using in this course. You
must make them hate whatever TCFPL is used afterwards, by
showing them what they think is cool and what TCFPL can't
do easily right.
At Rice, students disliked the Scheme (first) course as much as
anything when PLT and I took over the course. By the time we left
they had revolts and town meetings, but student after student got
up to say that the first course is okay.
If you want to see how we do it at NU, go to my home page and follow
the teaching link to my current course (Fall 2002). If you want to
read a deeper analysis and design rationale, see the FDPE 2002 paper
at http://www.ccs.neu.edu/scheme/pubs/ -- for which I should build
a talk right now ...
Final thought. The power of a PL comes in two ways:
1. The power of inherent PL abstraction. As some of you know
I have developed a theory on that topic, and I think it
pretty much holds up.
2. The power of libraries to do "real" thinsg in a compact way.
There is no theory. There is only hard labor and good taste
and the ambition to do it as right as possible within these
constraints.
That's what PLT Scheme is about. And that's where we need everyone's help.
-- Matthias