CS 257: Non-Imperative Programming: Scheme!

Instructor: Lance Williams <williams@cs.unm.edu>
Time: MWF 3:00 - 3:50 PM
Location: TAPY 201


C++ is a programming language used by the Borg to write word processors and spreadsheets. Scheme is a Vulcan drinking game.
In this course you will learn to program in a new way. This new style emphasizes beauty and generality, and uses a programming language that allows you to express computations simply and elegantly. It emphasizes interactive programming and rapid prototyping. Like the game of go, it is simple to learn the rules, but it takes a lifetime to master.

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 can not 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 a lot of fun.

Teaching Assistants

Related Material

We will use the MzScheme Scheme implementation, which is principled and fast enough for our purposes. You can access the documentation locally via the file ~cslab/CS257/plt/doc/mzscheme/index.html. 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. Also you will want to use the R4RS Manual, which describes the Scheme standard, available locally in ~cslab/CS257/plt/doc/r4rs/index.html.

The text for the course will be Scheme and the Art of Programming by George Springer and Daniel P. Friedman (MIT Press, 1989).

You might also enjoy The Little Schemer by Daniel P. Friedman and Matthias Felleisen (4th edition, MIT Press, 1995). And if you're really hard core, check out The Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman with Julie Sussman (2nd edition, MIT Press, 1996).

Course Syllabus **


Plumbing Graphics Reference Page

Homework Solutions


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. However, it is practical for the TA's to take attendance before recitation section meetings. Failure to attend a recitation section meeting will result in a penalty of 10% on the next quiz. If you fail to attend three recitation section meetings, you will be given a failing grade (F) for the course.

* This page can be found at http://www.cs.unm.edu/~williams/cs257.html
** Subject to change.
*** All assignments are due at the assigned times. The TA's 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!