[comp.lang.scheme] Scheme as 1st language

STCS8004%IRUCCVAX.UCC.IE@MITVMA.MIT.EDU (02/19/90)

I am soliciting the community's views  regarding the choice of Scheme as
the  first programming  language to  be taught  to students  majoring in
Computer Science.

The Department  of Computer Science at  University College Cork, Ireland
is undertaking  a major restructuring  of its Honours  Degree program in
the Faculties of Arts and of Science and the question has arisen whether
or not the  time given to Pascal would be  better utilized in some other
way, such as  algorithm design and analysis, for  instance. We presently
teach the full standard Pascal to our first-year students in a course of
52 lectures  over 26 weeks, plus  the usual tutorial/practical sessions.
There is also a 1 hour per  week course of lectures on non-Pascal intro-
ductory Computer Science topics.

I would be interested to receive views on the what the first programming
language should be, and  to learn of the experiences---good  or bad---of
those who have switched away from Pascal to something else.

We  presently  use  Scheme  extensively  in  our  'Data  Structures' and
'Compiler Theory and Practice' courses  with great success, the students
being largely  self-taught Scheme through Friedman  and Felleisen's 'The
Little LISPer'. It  is seeing how much quicker  students can understand,
analyze, and undertake proofs of  correctness of the relevant algorithms
expressed in Scheme that prompts the consideration of using some form of
small non-trivial functional programming language at an earlier stage in
their education.

I consider  that the  fundamentals of  algorithm design  and programming
style should be  taught with the minimum of  syntactic baggage, and only
then should a  study of alternative programming languages  and styles be
undertaken---but what are your views, please?

G. Oulsnam.

manis@cs.ubc.ca (Vincent Manis) (02/21/90)

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

STCS8004%IRUCCVAX.UCC.IE@MITVMA.MIT.EDU (02/28/90)

My thanks to everyone who responded to my request for views on using Scheme
as the first programming language.  I have tried to acknowledge each
individual response but I have had several 'undeliverable mail' messages as
a result.  If you did not get an acknowledgement from me direct please accept
my thanks now!

G. Oulsnam