Download Programming Languages Theory and Practice by Robert Harper, This note explains the subsequent topics: Transition Systems, defining a Language, A functional Language, control and data Flow, Imperative functional Programming, cost semantics and parallelism, data Structures and Abstraction, Lazy evaluation, Dynamic typing, Subtyping and Inheritance, Storage Management. Download pdf from below to explore all topics and start learning.


I Preliminaries

1 Inductive Definitions
2 Transition Systems

II Defining a Language

3 Concrete Syntax
4 Abstract Syntax Trees
5 Abstract Binding Trees
6 Static Semantics
7 Dynamic Semantics
8 Relating Static and Dynamic Semantics

III A Functional Language

9 A Minimal Functional Language
10 Type Safety

IV Control and Data Flow

11 Abstract Machines
12 Continuations
13 Exceptions

V Imperative Functional Programming

14 Mutable Storage
15 Monads

VI Cost Semantics and Parallelism

16 Cost Semantics
17 Implicit Parallelism
18 A Parallel Abstract Machine

VII Data Structures and Abstraction

19 Aggregate Data Structures
20 Polymorphism
21 Data Abstraction

VIII Lazy Evaluation

22 Lazy Types
23 Lazy Languages

IX Dynamic Typing

24 Dynamic Typing
25 Featherweight Java

X Subtyping and Inheritance

26 Subtyping
27 Inheritance and Subtyping in Java

XI Concurrency

28 Concurrent ML

XII Storage Management

29 Storage Management