| Work in type systems for programming languages now touches many parts of computer science, from language design and implementation to software engineering, network security, databases, and analysis of concurrent and distributed systems. The aim of this book, together with its predecessor, Types and Programming Languages (Pierce [2002]—henceforth TAPL) is to offer a comprehensive and accessible introduction to the area’s central ideas, results, and techniques. The intended audience includes graduate students and researchers from other parts of computer science who want get up to speed in the area as a whole, as well as current researchers in programming languages who need comprehensible introductions to particular topics. Unlike TAPL, the present volume is conceived not as a unified text, but as a collection of more or less separate articles, authored by experts on their particular topics.
Most of the material should be accessible to readers with a solid grasp of the basic notations and techniques of operational semantics and type systems— roughly, the first half of TAPL. Some chapters depend on more advanced topics from the second half of TAPL or earlier chapters of the present volume; these dependencies are indicated at the beginning of each chapter. Interchapter dependencies have been kept to a minimum to facilitate reading in any order. |