Serving a Sturgeon: Making Denotational Semantics

Palatable

Andrew Kitchen

Department of Computer Science, RIT

Abstract

The design of an intellectually respectable course in programming language theory presents a challenge to the instructor. If one is to give a thorough presentation of language theory, one cannot avoid the issues of syntactic and semantic specification. However, while syntactic specifications are already familiar to most students taking a programming theory course, semantics is quite another matter. The understanding of semantic descriptions appears to require a heavy dose of mathematical preparation, as well as an extensive introduction to the theory of formal semantics. Thus, the tail wags the dog: one has to spend so much time laying the foundations that there is little time left in a course to apply them to problems in language design.

I believe that one can dispense with much of the theoretical machinery and still give students a solid introduction to semantics specification as a practical tool, much in the way that calculus is introduced as a tool in physics and engineering.

This talk presents my attempts to make denotational semantics palatable and to introduce it as a tool for the discussion of language structure in a programming language theory course. The challenge is two-fold: to smooth the rough edges from the forbidding notation of the classic ”Oxford School” style of denotational semantics, and to make such descriptions directly relevant to the understanding and implementation of computer languages.

Coffee and cookies will be served