CS 491/591: Advanced Topics in Non-typed Functional Programming *

Instructor: Lance Williams <williams@cs.unm.edu>
Time: MWF 2:00-2:50 (initially)
Location: TAPY 218
Office Hours: Mon. 4:00-5:00, Wed. 4:00-5:00.
Office: FEC 349C

Description

After a quick review of the basic features of the Scheme programming language, we will explore advanced language features not normally covered in CS 257. These include macros, lazy evaluation, streams, non-determinism, and continuations. We'll also look at the lambda calculus and the Y-combinator. The bulk of the course will focus on implementation of a Scheme interpreter. Topics will include scanning, parsing, evaluation, and garbage collection. Each student will write a working Scheme interpreter in a non-garbage-collected language (e.g., C). Undergraduates who have taken CS 257, and who want to learn more about Scheme and Scheme interpreters are welcome to take CS 491. Graduate students who have taken CS 257 (or have equivalent proficiency in Scheme) are welcome to take CS 591.

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. You might also want to look at The 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

The R5RS Manual describes the Scheme standard. Teach Yourself Scheme in Fixnum Days by Dorai Sitaram is also useful. The Scheme Programming Language: ANSI Scheme by R. Kent Dybvig, (2nd Edition, Prentice Hall, 1996) is available online in its entirety. Finally, if you are going to program in C, you will probably need a copy of The C Programming Language by Kernighan and Richie.

Course Topics

Programming Projects**

Scheme Interpreter Contest

Homeworks

Grading

An Introduction to Scheme and its Implementation

Pro-Lisp Propaganda

The Lambda Papers

Evolution of Lisp

Knights of the Lambda Calculus

Unlambda Programming Language

A Page about Quines

* This page can be found at http://www.cs.unm.edu/~williams/cs491s02.html
** There will be LOTS of hacking to do! Don't take this course if you don't like to code!
*** This prize provided courtesy of Prof. Stefanovic.