CS 257: Non-Imperative Programming: Scheme!

Instructor: Lance Williams <williams@cs.unm.edu>
Time: MWF 2:00 - 2:50 PM
Location: TAPY 201
Office Hours: Mon. 4:00-5:00, Tues. 4:00-5:00.
Office: FEC 349C

Description

Pascal is for building pyramids--imposing, breathtaking, static structures built by armies pushing heavy blocks into place. Lisp is for building organisms.
-Alan J. Perlis
C++ is a programming language used by the Borg to write word processors and spreadsheets. Scheme is a Vulcan drinking game.
-Anonymous.

In this course you will learn to program in a new way. To learn this new way of programming, you will use a programming language that allows you to express computations simply and elegantly. The language is called Scheme and you will be amazed by its power and generality. Like the game of go, it is simple to learn the rules, but it takes a lifetime to master.

There is no royal road to mathematics.

-Menaechmus, 380-320 BC.

Wax on, wax off.

-Mr. Miyagi, The Karate Kid, 1984 AD.
You learn to play the piano only by sitting down at a keyboard and pressing the keys. You learn to program in Scheme by sitting down at a keyboard and pressing the keys. You cannot learn Scheme solely by listening and reading; you will need to devote a lot of time to programming. We will try to make that time not only instructive and productive, but also alot of fun.

Teaching Assistant

Leigh Fanning <leigh@cs.unm.edu>
Office Hours: Wed. 3:30-4:30, Thurs. 3:30-4:30
Office: FEC 349F

Textbooks

The text for the course will be Scheme and the Art of Programming by George Springer and Daniel P. Friedman (MIT Press, 1989). You may purchase a copy of the text at the Engineering Copy Center which is located on the first floor of Farris Engineering Center.

For a very different approach, see The Little Schemer by Daniel P. Friedman and Matthias Felleisen (4th edition, MIT Press, 1995). This book is strictly optional, but it is a great supplement to the official text.

If you're really hard core, check out Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman with Julie Sussman (2nd edition, MIT Press, 1996) which is available online in its entirety. This is the introductory programming text used at MIT.

Related Material

We will use the MzScheme Scheme implementation, which is principled and fast enough for our purposes. You probably will want to use GNU Emacs as your editor. I do. Or use XEmacs if you prefer. The brief GNU Emacs Reference Card can be helpful. The R5RS Manual describes the Scheme standard. Teach Yourself Scheme in Fixnum Days by Dorai Sitaram is also useful. Finally, The Scheme Programming Language: ANSI Scheme by R. Kent Dybvig, (2nd Edition, Prentice Hall, 1996) is available online in its entirety.

Course Syllabus **

Grading

Battle Powerset!

Pro-Lisp Propaganda

APL-like Extensions to Scheme

Plumbing Graphics Reference Page

Plumbing Graphics Source Code

Class Mailing List

Attendance

Your attendance at lectures and recitation section meetings is mandatory. Unfortunately, due to the large class size, it is not practical for me to take attendance before each lecture. Consequently, to encourage attendance, quizzes will be unannounced and in-class. Attendance will be taken in recitation. For each unexcused absence from recitation, your final grade will be penalized 1%. If you miss three recitation section meetings, you will be given a failing grade (F) for the course.

Class Policy

Please do not ask the professor whether or not there will be a quiz on a given date. If you know that you cannot attend class in advance of the date, you may inform the TA (by email) of your planned absence and the reason for it. If there happens to be a quiz on that date, the professor may (or may not) allow you to make up the quiz. His decision will be based on the reason for your absence, your prior pattern of attendance, and other factors.

* This page can be found at http://www.cs.unm.edu/~williams/cs257s03.html
** Subject to change.
*** All assignments are due at the assigned times. The TA may, but are not obligated to, accept late submissions at a penalty of no less than 10% per 24 hours late.
**** In creating this page, I have made liberal use of material from Barak Pearlmutter's CS 257 page. Thanks Barak!