Programming Languages: Application and Interpretation
Programming Languages: Application and Interpretation (PLAI) is a free programming language textbook by Shriram Krishnamurthi. It is in use at over 30 universities, in several high-schools, and for self-study.
The book differs from most other programming language texts in its attempt to wed two different styles of programming language education: one based on language surveys and another based on interpreters. In the former style, it can be too easy to ignore difficult technical points, which are sometimes best understood by trying to reproduce them (via implementation); in the latter, it can be too easy to miss the high-level picture in the forest of details. PLAI therefore interleaves the two, using the survey approach to motivate ideas and interpreters to understand them.
The book is accompanied by supporting software that runs in the Racket programming language.
Since PLAI is constantly under development, some of the newer material (especially assignments) is found on course pages at Brown University.
PLAI is also an experiment in publishing methods. The essay Books as Software discusses why the book is self-published. In addition, the book is currently available not only in (for-pay) print but also both free and for-pay electronic editions.