Programming Languages IT-C F2002
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 19: Here are the real exam questions.
- June 7: At long last, some trial exam questions have been posted.
- June 6: Spørgetime (last questions before the exam)
will be held June 14 from 11.00 to 12.00 in room 0.15.
- May 24: Pensum til skriftlig eksamen:
- Torben Mogensen: Basics of Compiler Design (DIKU, University of
Copenhagen, June 2001), afsnit 2.1-2.5, 3.1-3.5, 3.15.
- Forelæssningsplancherne for forelæsning 1-12, noterne notes01.txt
til notes12.txt, samt de opgaver på opgaveark 1-11 som ifølge
opgavearkene skal afleveres.
- Moscow ML Owner's Manual, især beskrivelsen af mosmllex og
- Hansen og Rischel, Introduction to Programming Using SML,
Addison-Wesley 1999, kapitel 1, 2, 3, 5, afsnit 7.1--7.5, afsnit
8.1, 8.3, 8.4, kapitel 9.
- Lecture plan with links to lecture
notes, slides, etc.
- When and where
- We meet Wednesdays at
IT-C Glentevej, starting Wednesday 6
February and ending Wednesday 1 May.
- Course format
- There will be exercises in the morning (9h-12h in
room 3.19, with overflow to 3.15 if necessary) and lectures in the
afternoon (13h-16h in room 2.59). The weekly exercises require
implementation of programming language concepts.
- 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 SML crash course. 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
- To present the concepts of lexing and parsing we shall use Torben
Mogensen's Basics of Compiler Design (June 2001). Copies will be
- To present concepts of abstract syntax, dynamic and static
semantics, interpreters, virtual machines, compilers, compilation,
byte code etc we shall use lecture notes mostly.
- 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
SML 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 SML, which is quite different from Java. Secondly, and
mostly, by creating implementations of other kinds of programming
languages: imperative (C style), functional (SML-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 SML early on; this requires solving
the weekly exercises.
- Official course description
- Although the description
in the official course database recommended a textbook by Friedman,
Haynes, and Wand, I have come to the conclusion that it is not really
well-suited for our purpose. The meta-language used in that
book, called Scheme, introduces a number of artificial complications.
If you can deal with those complications, it is an interesting book to
- There is a written examination on Wednesday 19 June 2002
(better check with the course database) with books etc. but without
- Additional literature
- Here are a few pointers to the literature on compilers and
- Here is a list of project
proposals. It would make good sense to do a four-week project
following the course.
Peter Sestoft (firstname.lastname@example.org) 2002-01-07,