The Structure of Typed Programming Languages describes the fundamental syntactic andsemantic features of modern programming languages, carefully spelling out their impacts on languagedesign. Using classical and recent research from lambda calculus and type theory, it presents arational reconstruction of the Algol-like imperative languages such as Pascal, Ada, and Modula-3,and the higher-order functional languages such as Scheme and ML.David Schmidt's text is based on thepremise that although few programmers ever actually design a programming language, it is importantfor them to understand the structuring techniques. His use of these techniques in a reconstructionof existing programming languages and in the design of new ones allows programmers and would-beprogrammers to see why existing languages are structured the way they are and how new languages canbe built using variations on standard themes.The text is unique in its tutorial presentation ofhigher-order lambda calculus and intuitionistic type theory. The latter in particular reveals that aprogramming language is a logic in which its typing system defines the propositions of the logic andits well-typed programs constitute the proofs of the propositions.The Structure of Typed ProgrammingLanguages is designed for use in a first or second course on principles of programming languages. Itassumes a basic knowledge of programming languages and mathematics equivalent to a course based onbooks such as Friedman, Wand, and Haynes': Essentials of Programming Languages. As Schmidt coversboth the syntax and the semantics of programming languages, his text provides a perfect precursor toa more formal presentation of programming language semantics such as Gunter's Semantics ofProgramming Languages.