Structure of Programming Languages I: Denotational Semantics
315.505, WS 97/98, T212
The course will be given in blocked form at the following dates:
Sat, November 8 8:30-13:00 T212 Sat, November 15 8:30-13:00 T212 Sat, December 13 8:30-13:00 T212 Sat, January 17 8:30-13:00 T212
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. In order to reason about a language or to construct a compiler for this language, we need a much deeper understanding.
In denotational semantics, a programming language is defined by a valuation function that maps a program into a mathematical object considered as its denotation (i.e. meaning). The valuation function of a program construct reveals the essence of this construct independent of its syntactic surface.
This course presents a practical approach to denotational semantics emphasizing the descriptional and implementational aspects. Furthermore, two alternative methods of charaterizing the meaning of programming languges, operational semantics and axiomatic semantics, are outlined, and their relationship to denotational semantics is established.
A continuation course in SS 98 will deal with types, modules, and classes in programming languages.