The strategy will be to study interpreters of languages, explaining the design decisions faced when inventing programming languages and implementing them. The MIT Press, 1992.
Interpreters are formal descriptions that can be executed.
Models are presented as Scheme programs instead of an abstract notation. Algebraic manipulations of programs are used, and we will reason about the correctness of program transformations. Data abstractions are used systematically to separate algorithms from internal representation. Syntactic description with BNF, Deriving Programs from BNF specifications. Reasoning about programs, program transformations.