CISC 465/3.0 Foundations of Programming LanguagesOriginal Author: Bob Tennent
Last Revised: September 25, 2006
Syntax and semantics. Classification of programming languages. The language of while programs. The typed lambda calculus. Recursive definitions and domain theory.
Prerequisites: CISC 204/3.0, 223/3.0, 260/3.0.
Designers, implementers, and serious users of a programming language need a complete and accurate understanding of the semantics (the intended meaning) as well as the syntax (the form) of every construct of that language. There is a well-developed and widely-known mathematical theory of formal languages which supports accurate description of (the context-free aspects of) the syntax of programming languages, and correct implementation of scanners and parsers. But the descriptions of context-dependent aspects of syntax (such as scope and type checking) and of semantics in reference manuals and language standards are almost always inadequate because they are based primarily on implementation techniques and intuition.
Rigorous mathematical theories of the semantics and context-dependent aspects of the syntax of programming languages are needed to support correct description and implementation of languages, systematic development and verification of programs, analysis of existing programming languages, and design of new languages that are simpler and more regular. This course is an introduction to these theories.
Simple Imperative Languages
Simple Functional Languages