Structure of Programming Languages I: <BR>Denotational Semantics

Structure of Programming Languages I:
Denotational Semantics

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.


David A. Schmidt
Denotational Semantics - A Methodology for Language Development, Allyn and Bacon, Boston, MA, 1986.

Joseph E. Stoy
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory, MIT Press, Cambridge, MA, 1977.

Course Slides

Related Projects at RISC-Linz

Wolfgang Schreiner
Wed Dec 27 09:55:49 MET 1995