Programming Languages: Application and Interpretation,
(v.2007-04-26) Shriram Krishnamurthi. (2007). [required. The full text of the book is available at the given link. We will
use version 2007-04-26.] How To
Design Programs: An Introduction to Programming and Computing, by Matthias
Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. MIT
Press (2001). ISBN: 0262062186 [recommended; If you did not take CS010 with me,
I recommend that you obtain a copy of the book and work through Parts I, II, and IV.
You should be very comfortable with lambda; otherwise, you will suffer.
If you have not used Scheme in a long time, you should review these parts.
As a reminder, the full text is available at the given link.]
Time and place: Tue. & Thur., 1:15-3:05, Voskuyl Library, 106.
Syllabus (see Eureka pages).
Tentative class schedule (see Eureka pages).
This course is not about programming. However, you will become a
significantly better programmer for having completed it. The course
introduces the issues surrounding the design and implementation of
Mostly, we will use Scheme to implement interpreters for a variety of
languages (including various subsets of Scheme itself). Because you
will be writing interpreters that support the various features, you
will intimately understand issues such as scope, lazy and eager
evaluation, recursion, mutation, continuations, types, polymorphism,
and much more.
The course will require a significant commitment from you. Plan for it.
Start your readings and assignments early. You will be required to read
the text. If you work the examples as you go through the text, your
assignments will be manageable. You will typically be completing one
assignment each week.