CS 257: 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

In this course you will learn to program in a new way. This new style emphasizes beauty and generality, and uses programming languages that allow you to express computations simply and elegantly. It emphasizes interactive programming and rapid prototyping. It is done using languages that, like the game of go, are very simple to learn the rules to but take a lifetime to master.

The Scheme language is a higher level language than FORTRAN or C++. It frees the programmer from the details of memory management, storage layout, and word size. It provides facilities like first class functions, true lexical scoping, and surprising simplicity. It allows itself to be extended easily, to create new more powerful languages. Yet is is very simple in both syntax and semantics.

Data and procedures and the values they amass,
Higher-order functions to combine and mix and match,
Objects with their local state, the messages they pass,
A property, a package, the control point for a catch -
In the Lambda Order they are all first-class.
One Thing to name them all, One Thing to define them,
One Thing to place them in environments and bind them,
In the Lambda Order they are all first-class.
--MIT Technical Report AI-848b

Programming a computer is about controlling complexity by using abstraction. As you learn a lot of powerful new abstractions (composition of functions, functions as data, recursion, higher order functions, tail recursion, functions as objects), you will find that you are able to implement things much more quickly and succinctly and elegantly than you previously thought possible.

My promise to you: if you absorb the lambda nature, you will become a monster hacker!

There is no royal road to mathematics.

-Menaechmus, 380-320 BC.

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.


Barak Pearlmutter <bap@cs.unm.edu>