[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Scheme as 1st language



The classical way to introduce computer science via Scheme is Abelson
and Sussman's `Structure and Interpretation of Computer Programs',
published by MIT Press/McGraw-Hill. Paradoxically, this book is not
about Scheme, and hardly mentions it. Instead, the book concentrates
upon fundamental principles of computer science, paradigms of program
design, and the structures of various evaluators, including interpreters
and compilers for Scheme. The goal isn't so much to have the student be
a good Scheme programmer, as to be able to understand the principles
behind programming and computers.

About 2 years ago, I posted a similar query to this newsgroup. I
received responses from, among others, MIT, UCLA, UC Berkeley, Brandeis,
the University of Delaware, and Indiana. As a result of these highly
positive responses, we at the University of British Columbia decided to
move our first year computer science courses to this curriculum. We've
been teaching a prototype section this year, and it has gone quite well
(we've learned lots of things *not* to do, too!). 

We propose to do what is done in one term at MIT in two terms here (our
students are good, but not as good as MIT students). We will, however,
add a final unit, which introduces Pascal. We are doing this for
pragmatic reasons (a knowledge of Pascal is useful in further computer
science), and for intellectual ones (Pascal takes a rather different--I
would say ``inferior''--view of types from that which Scheme takes, as
the Instructor's Guide to Abelson & Sussman points out). Naturally, the
laboratory project for that part of the course will be to write a Scheme
evaluator in Pascal. 

In answer to the question which was posed, I don't support using Scheme
as a replacement for Pascal in an introductory programming course.
What is needed instead is to replace introductory programming by
introductory computer science; Scheme is an excellent vehicle for that. 

--
\    Vincent Manis <manis@cs.ubc.ca>      "There is no law that vulgarity and
 \   Department of Computer Science      literary excellence cannot coexist."
 /\  University of British Columbia                        -- A. Trevor Hodge
/  \ Vancouver, BC, Canada V6T 1W5 (604) 228-2394