This course is self-contained; it does not depend on the course given in the last semester!
This course describes the fundamental syntactic and semantic features of modern programming languages and their impact on language design. It presents a rational reconstruction of imperative languages such as Pascal, Ada, and Modula-3 and functional languages such as scheme and ML.
Although few programmers ever actually design a programming language, all programmers should understand the structuring techniques that a designer uses. The course presents such a set of techniques and uses them in a reconstruction of existing languagess and in the design of new ones. This lets the programmer see why existing languages are structured as they are and how new languages can be built as variations of standard themes.
The focus of the course rests upon typed programming languages since types play the central role in structuring a language and serve as the basis of modern constructions like modules and classes.
The course follows closely the textbook [Schmidt, 1994] and presents in detail the paper [Cardelli and Wegner, 1985].
Slide copies will be handed out in class; electronic online material will be available on the World Wide Web.