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**
- s-expression reading and printing
- symbol table
- expression evaluator
- syntactic sugar
- garbage collector
Scheme Interpreter Contest
- Fastest
- Smallest
- Most R4RS compliant
- Coolest
- Best Garbage Collector***
Homeworks
Grading
- Homeworks (approx. 5): 25%
- Programming Projects (approx. 5): 50%
- Class Participation: 25%
* 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.