Structure of Programming Languages I: Denotational Semantics

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.