315.505, WS 95/96
Thu 15.30-17.00, K009D (Start: 12.10.1995)
Wolfgang Schreiner
Denotational semantics is a methodology for giving precise meaning to a programming language. While the syntax of a language is always formally specified in a variant of BNF, the more important part of definining its semantics is mostly left to natural language. which is ambiguous and leaves many questions open. Especially to construct a compiler for this language, we need a much deeper understanding than can be provided by informal descriptions.
In denotational semantics, a programming language is defined by a valuation function that maps programs into mathematical objects considered as their denotation (i.e. meaning). Reasoning about programs is reduced to reasoning about their denotations e.g. two programs compute the same result iff their denotations are equal. Thus the valuation function of a program construct reveals the essence of this construct while neglecting its syntactic surface.
This course presents a practical approach to denotational semantics emphasizing the descriptional and implementational aspects. All relevant mathematics is included; students should be acquainted with one or more general purpose programming languages.
A continuation course in the summer semester 96 will deal with types, modules, and classes in programming languages.