Programming Languages: Application and Interpretation
Copyright © 2003-07, Shriram Krishnamurthi
Creative Commons Attribution-NonCommercial-ShareAlike 3.0 United States License
Version 2007-04-26

Please see my brief essay about the educational philosophy behind this book. In particular, I discuss why this is a much more appropriate book for a modern programming languages course than a traditional one based on “paradigms”.

At present count, 30 universities (and some high-schools) use part or all of the book. Users range from major research universities to liberal arts colleges, from public to private universities, and cover four continents.

If you're an educator (teaching at a University, College, High School, Grammar School, Hochschule, Gymnasium, etc.), please let me know!

Electronic Version Print Version

You can download the April 26, 2007 Version as a single PDF file (~1.4Mb), free-of-cost.

If you prefer, you can also pay to download. No, this is not a joke. You're being given a choice in case you want to reward the author in kind. You lose nothing, however, by opting for the free version: the free PDF really is the entire book, with no strings attached.

I recommend using DrScheme version 4.2 (and subsequent releases). In DrScheme, choose the Pretty Big Language level, type

(require (planet plai/plai:1:3))
in the Definitions window, and click Run. This automatically installs the language for the text. Please re-start DrScheme. The language will be visible from the Language menu's Choose Language... entry (or via the language chooser at the bottom-left). Choose the PLAI Scheme language.

If you are familiar and more comfortable with using #lang, you can use

#lang planet plai/plai:1:3
in the module language instead.

Note: For now on, there will be just one language level for the book. There are additional languages to support the garbage collection assignment.

Please examine the FAQ. (Perhaps you're wondering why this book isn't published formally?)

If you're here because you want to learn more about programming languages, I suggest taking a look at our new creation, Flapjax.

There will be no new versions until sometime in 2009.

2007-04-26: (mostly small changes; no significant, high-level modifications)
addressed over fifty email messages containing suggestions and corrections
revised section on substitution
removed some more font problems
2006-01-15:
significantly expanded and improved discussion of programming by searching
improved discussion of lambda calculus, continuations, state, types
introduced first-order functions before higher-order functions
removed sections on stack and heap transformations
improved language support
significantly improved index
made several prose improvements
fixed some font problems
2004-12-08: (76 new pages of material)
significantly improved language support
appended final versions of interpreters to each section
created initial version of index
integrated notes on Programming in Haskell
significantly improved and integrated notes on Lambda Calculus
expanded discussion of continuations
added variable mutation to complement value mutation
improved discussion of polymorphism
added brief section on Programming Interactive Systems
made several local changes, including:
- removed colloquialisms and rough prose
- fixed typos
- added examples
2003-12-19:
added course organization details to preface
fixed several typos
improved font usage
appended final versions of interpreters to sections
2003-12-15:
first release