Programming Languages ITU F2005
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.
- June 29:
The exam questions: June 2005 with solutions
- March 22: On April 6, there will be a guest lecture in the
morning by Kasper Østerbye about Beta, an object-oriented
language very different from Java and C#. Kasper is associate
professor at the ITU and co-developer of Beta.
There will be no
exercises in the afternoon of April 6 because both Andrzej and Peter
are in Edinburgh that day.
- Lecture plan with links to lecture
notes, slides, etc.
- When and where
- We meet Wednesdays at
ITU (Rued Langgaardsvej 7, 2300
København S), starting Wednesday 2 February and ending Wednesday 27
April. Lectures are held in 4A14 (NB: Change) and exercises
are held in 4A54.
- Course format
- There will be lectures in the morning (9h-12h)
and exercises in the afternoon (13h-16h). 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 a Standard ML crash course, using Appendix A
from Programming Language Concepts (see below). Reference
material on the Standard ML libraries is available from on the Moscow
ML homepage. For supplementary reading, a good beginners' book is
Hansen and Rischel's Introduction to Programming
- We shall use the Moscow ML
implementation and the associated tools mosmllex and mosmlyac,
described in the Owner's
- Most of the reading material for the course will be printed and
sold in one volume, including:
- Torben Mogensen's lecture notes Basics of Compiler Design
(DIKU 2004) which are used to present the concepts of lexing and
- Peter Sestoft's lecture notes Programming Language Concepts
(PLC), KVL and ITU 2005, which are used to present concepts of
abstract syntax, dynamic and static semantics, interpreters, virtual
machines, compilers, compilation, byte code, reflection, and runtime
Here is the January 2005
version of these notes (included also in the lecture notes).
- 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.
- 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
- See the Intranet.
- There is a written examination on Wednesday 29 June 2005
(it is your responsibility to check with the course database!) with
books etc. but without computers.
- 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) 2005-01-11