CS105 -- Programming Languages
Fall, 2009
(last updated 8/14/2009)


Wayne Iba,
office: Math and Computer Science Building,
phone: (805)565-6799
Office hours: see my main teaching page
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 Felleisen, Robert 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 programming languages. 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.

Eureka Course Link
Acknowledgments:  I borrow extensively from courses Professor Krishnamurthi has taught at Brown University. I encourage you to make a link to his pages and use them as additional resources.