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