Path: utzoo!attcan!uunet!van-bc!ubc-cs!manis From: manis@cs.ubc.ca (Vincent Manis) Newsgroups: comp.lang.scheme Subject: Re: Scheme as 1st language Message-ID: <6835@ubc-cs.UUCP> Date: 20 Feb 90 19:20:31 GMT References: <9002200317.aa29279@mintaka.lcs.mit.edu> Sender: news@cs.ubc.ca Reply-To: manis@cs.ubc.ca (Vincent Manis) Organization: Bucky Bits Cereal Keyboards, Ltd. Lines: 38 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 "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