Table of Contents
I. Foundations
1. Introduction
2. Programming Language Syntax
3. Names, Scopes, Bindings
4. Semantic Analysis
5. Target Machine Architecture
II. Core Issues in Language Design
6. Control Flow
7. Data Types
8. Composite Types
9. Subroutines and Control Abstraction
10. Data Abstraction and Object Orientation
III. Alternative Programming Models
11. Functional Languages
12. Logic Languages
13. Concurrency
14. Scripting Languages
IV. A Closer Look at Implementation
15. Building a Runnable Program
16. Run-time Program Management
17. Code Improvement
Authors
Michael Scott Professor and past Chair, Computer Science Department, University of Rochester, USA.Michael L. Scott is a professor and past Chair of the Computer Science Department at the University of Rochester. He is best known for work on synchronization and concurrent data structures: algorithms from his group appear in a wide variety of commercial and open-source systems. A Fellow of the ACM and the IEEE, he shared the 2006 Dijkstra Prize in Distributed Computing. In 2001 he received the University's Robert and Pamela Goergen Award for Distinguished Achievement and Artistry in Undergraduate Teaching.
Jonathan Aldrich Institute for Software Research and Computer Science Department, School of Computer Science, Carnegie Mellon University, Pittsburgh, PA, USA. Jonathan Aldrich works at the intersection of programming languages and software engineering. His research explores how the way we express software affects our ability to engineer software at scale. A particular theme of much of his work is improving software quality and programmer productivity through better ways to express structural and behavioral aspects of software design within source code.Professor Aldrich has contributed to object-oriented typestate verification, modular reasoning techniques for aspects and stateful programs, and new object-oriented language models. For his work specifying and verifying architecture, he received a 2006 NSF CAREER award and the 2007 Dahl-Nygaard Junior Prize (press release, article). Right now he's excited to be working on the design of Wyvern, a new modularly extensible programming language.