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.
Latest news
- 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
mosmlyac.
- 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.
Course information
- Plan
- 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.
- Teachers
-
- Teaching language
- All course materials are in English but the
lectures will be given in Danish (unless there is a strong demand to
the contrary).
- 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
Using SML.
- We shall use the Moscow ML
implementation and the associated tools mosmllex and mosmlyac,
described in the Owner's
Manual.
- To present the concepts of lexing and parsing we shall use Torben
Mogensen's Basics of Compiler Design (June 2001). Copies will be
handed out.
- 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
Bertelsen's SML-JVM
Toolkit.
- 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.
- Form
-
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.
- Warning
- 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
learn from.
- Exam
- There is a written examination on Wednesday 19 June 2002
(better check with the course database) with books etc. but without
computers.
- Additional literature
- Here are a few pointers to the literature on compilers and
interpreters.
- Projects
- Here is a list of project
proposals. It would make good sense to do a four-week project
following the course.
Participants
Peter Sestoft (sestoft@dina.kvl.dk) 2002-01-07,
2002-02-25