Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Is SICP really for undergraduates?

7 views
Skip to first unread message

wang yin

unread,
Sep 1, 2003, 10:25:41 PM9/1/03
to
Hi,

I've learned a lot from SICP these days. It's obviously the best book
for learning Scheme and the fundamentals of computer science. I'd like
to introduce it to my friends.

But I think it requires a lot of background knowledge on mathematics,
digital circuits, and algorithms.

I want to know whether all its contents are used for undergraduates at
MIT? If not, which parts are used?

Is it for freshmen? If not, when will the undergraduates take this
course?

Thanks.

Michael Sperber

unread,
Sep 2, 2003, 9:09:55 AM9/2/03
to
>>>>> "wy" == wang yin <w...@wanglab.com> writes:

wy> I've learned a lot from SICP these days. It's obviously the best book
wy> for learning Scheme and the fundamentals of computer science. I'd like
wy> to introduce it to my friends.

SICP is a great book about Computer Science. It's awful for beginners
though, and part of the awfulness is that non-beginners often think it
*must* be great for beginners.

This has partly to do with the choice of examples (as you've noticed),
and partly with the lack of a principled introduction to systematic
programming. I suggest you check out "How to Design Programs" for
your beginner friends (at http://www.htdp.org/). It may seem
pedantic and somewhat less cool than SICP to you, but it will be much
more palatable and rewarding for your friends.

--
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla

Barry Margolin

unread,
Sep 2, 2003, 11:07:39 AM9/2/03
to
In article <phy8x8x...@wanglab.com>, wang yin <w...@wanglab.com> wrote:
>I want to know whether all its contents are used for undergraduates at
>MIT? If not, which parts are used?
>
>Is it for freshmen? If not, when will the undergraduates take this
>course?

It's used as the textbook for the first Computer Science class that EECS
majors take at MIT. CS students generally take this in their freshman
year, as they usually arrive already knowing how to program (the intent is
to convert them from "programmers" to "computer scientists"). I think EE
students are likely to postpone it to their sophomore year if they don't
already have some programming experience.

--
Barry Margolin, barry.m...@level3.com
Level(3), Woburn, MA
*** DON'T SEND TECHNICAL QUESTIONS DIRECTLY TO ME, post them to newsgroups.
Please DON'T copy followups to me -- I'll assume it wasn't posted to the group.

Jim Hefferon

unread,
Sep 2, 2003, 12:01:08 PM9/2/03
to
wang yin <w...@wanglab.com> wrote:

> I've learned a lot from SICP these days. It's obviously the best book
> for learning Scheme and the fundamentals of computer science. I'd like
> to introduce it to my friends.
>
> But I think it requires a lot of background knowledge on mathematics,
> digital circuits, and algorithms.
>
> I want to know whether all its contents are used for undergraduates at
> MIT? If not, which parts are used?
>

Google something like "MIT Structure and Interpretation of Computer Science".
See, for instance
http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/

Jim

Brian Harvey

unread,
Sep 2, 2003, 1:58:03 PM9/2/03
to
wang yin <w...@wanglab.com> writes:
>Is it for freshmen? If not, when will the undergraduates take this
>course?

Our experience at Berkeley is that almost all of our would-be CS majors
come to us as freshman already having had at least one programming
course, usually the AP CS. Therefore SICP is appropriate for us as a
first textbook. We also offer a "zeroth" course, which also serves
as the "programming for poets" course, using _Simply Scheme_. Would-be
CS majors who somehow have never programmed before take that before
taking the SICP course. (More specifically, the entrance requirement
for the SICP course is experience programming recursive functions, in
any language. When more students sign up for the SICP course than we
can fit, we enforce the prerequisite with a first-day quiz; since the
dot-com bust, most semesters that isn't necessary, meaning that we
get only about 350 students instead of the 500-600 students we had
at the peak.)

It's true that some of the examples assume more engineering
knowledge than many of our students have. We therefore use other
examples that make the same CS point. This is particularly a
problem in chapter 1, where they concentrate on numbers to avoid
having to deal with data structures at the same time that they're
introducing control structures. We finesse this problem by
extending Scheme with Logo-like word and sentence operations,
allowing fun problems with no math requirement that still don't
get into things like the asymmetry of pairs in lists.

We get through chapter 4, leaving out some of the example
sections. I once tried including chapter 5 as well, but the
students found the pace too exhausting. MIT does cover all
five chapters in a semester, also leaving out some examples.

By the way, in the past I've taught a summer programming course
for high school students; each summer, out of 20-30 kids, there
are three or four who find _Simply Scheme_ too easy and who
thrive on SICP.

Matthias

unread,
Sep 3, 2003, 9:53:15 AM9/3/03
to
wang yin wrote:
> But I think it requires a lot of background knowledge on mathematics,
> digital circuits, and algorithms.

The advantage of using examples and exercises from these domains is that you
can define interesting problems concisely and precisely. In many other
domains it is really difficult to come up with a short and exact
description of a problem suitable to undergrads. Students complaining
about "too much math" in SICP might find out that the math programming
problems are actually the easy ones.


Max Hailperin

unread,
Sep 4, 2003, 8:59:51 AM9/4/03
to
Matthias <matt...@nospam.pl> writes:

The question is not are they the easy ones -- the question is, for
whom are they the easy ones? Nothing is easy if you need to first set
SICP aside and go off and learn about electrical engineering,
differential equations, etc., before you can come back and dive into
the example itself.

My personal favorite example of where SICP's expectations are out of
line with typical introductory computer science students in the US is
where they try to shed light on the relationship between a procedure
and a process by analogy with the relationship between a differential
equation and the dynamical system whose evolution it describes. The
whole point here is that they are trying to help with something
unfamiliar by creating an analogy to something presumed to be more
familiar -- but it isn't, for typical US intro students.

The significant amounts of background knowledge that SICP presumes was
one of the main reasons why I co-authored Concrete Abstractions(*)
despite being a SICP fan.

-Max Hailperin
Associate Professor of Computer Science
Gustavus Adolphus College
800 W. College Ave.
St. Peter, MN 56082
USA
http://www.gustavus.edu/~max/

(*) http://www.gustavus.edu/~max/concrete-abstractions.html

0 new messages