Programming Languages IT-C F2003
This course introduces programming language concepts and tools, such
as interpreters, compilers, grammars, parsers, parser generators,
abstract machines, type checking, etc. We shall model imperative,
functional, and object-oriented programming languages by means of
interpreters and simple compilers.
- Lecture plan with links to lecture
notes, slides, etc.
- When and where
- We meet Wednesdays at
IT-C Glentevej, starting Wednesday 5
February and ending Wednesday 30 April.
- Course format
- There will be exercises in the morning (9h-12h in
room 3.15) and lectures in the afternoon (13h-16h in room 0.15). The
weekly exercises require implementation of programming language
concepts. The exercises are voluntary, but it is practically
impossible to pass the course without doing them.
- Teaching language
- All course materials are in English but the
lectures will be given in Danish (unless there is a strong demand to
- Programming language
- We shall use Standard ML (SML) as a
meta-language: the language we use to describe other languages, and
the language in which we implement interpreters and compilers.
- Course materials
- We start with an Standard ML crash course. A good beginners'
book is Hansen and Rischel's Introduction to Programming
Using SML. You can get it at Naturfagsbogladen,
Universitetsparken 13 (the first floor of the August Krogh Institute).
- We shall use the Moscow ML
implementation and the associated tools mosmllex and mosmlyac,
described in the Owner's
- For Windows users, there are links to simpler-to-install Moscow ML
and Emacs packages at the FDP E2002
- Torben Mogensen's lecture notes Basics of Compiler Design
(DIKU 2002) are used to present the concepts of lexing and parsing.
Copies can be bought at IT-C office 2.20.
- Peter Sestoft's lecture notes Programming Language Concepts
(PLC), KVL and IT-C 2003, are used to present concepts of abstract
syntax, dynamic and static semantics, interpreters, virtual machines,
compilers, compilation, byte code, reflection, and runtime code
generation. These notes will be handed out in class a few chapters at
a time. Version 0.24 of these notes are available electronically in
and in PDF.
Note the copyright.
- To generate Java Virtual Machine code, we shall use Peter
- Here's a packaging
of the Emacs 20.7 editor for MS Windows NT/2000/XP that includes a
Standard ML mode. Unzip to C:\emacs-20.7 and copy
C:\emacs-20.7\.emacs to C:\.emacs for proper setup. Emacs is included
with all Linux distributions.
- Two files that make life with Emacs and Moscow ML more tolerable
with the somewhat broken IT-C installation (spring 2003): emacs.bat and mosml.bat.
- A configuration file sml.syn for Standard ML
syntax highlighting in the JCreator
Pro editor. Here are the installation instructions.
We shall study programming language concepts in two ways. First, by
learning Standard ML, which is quite different from Java. Secondly,
and mostly, by creating implementations of other kinds of programming
languages: imperative (C style), functional (Standard ML-style), and
object-oriented (Java-style). That way we learn the concepts of those
languages and how they are implemented on the computer.
- It is very hard to follow the remainder of the
course if you do not get a good grasp of Standard ML early on; this
requires solving the weekly exercises.
- Official course description
- Here is the official
- There is a written examination on Wednesday 18 June 2003
(better check with the course database) with books etc. but without
- Old exam questions:
- Last year's course homepage
- Here is last
year's course homepage.
- Additional literature
- Here are a few pointers to the literature on compilers and
- Here is a list of project
proposals. It makes eminent good sense to do a four-week project
following the course.
Peter Sestoft (firstname.lastname@example.org) 2003-01-29