Programming Language Technology

Course codes: Chalmers DAT150, GU DIT230
Spring Term 2012

Official URL:

Google group:

News and changes

22/2 The next versions of the lecture notes will appear in the course Google group, and the old version will not be updated.

4/2 Wednesday lab supervisions cancelled for the rest of the course. Please choose one of the Monday groups.

4/2 CHARM days 7-8 February: no lab class, no exercise on 8 February. Lecture on 7 February as normal.

4/2 lab2 PM now in place.

24/1 Link to exercises 1 on 25/1 was at wrong date in the table. Now corrected. Sorry for the mistake!

10/1 Exceptional time and place of Lecture 2: Fri 19/1 at 15-17 in HC1

10/1 Updated schedules. Link to the lecture notes.

3/1/2012 First version of this page - so far mainly a copy of the 2011 material. Updates forthcoming soon. Major changes are expected, because the course has become a pure MSc course.


All lectures are in HC4, except 20/1. All exercises are in ML 3,4.

The linked material is in plt = lecture notes, dragon = course book by Aho & al. (see below).

Date Time Title material
Tue 17/1 10-12 Introduction plt 1, dragon 1
Fri 20/1 15-17 (in HC1) Grammars: abstract and concrete syntax plt 2, dragon 2.8.2,4.1-4.3
Tue 24/1 10-12 Hands-on with Lab 1 lab1 PM
Wed 25/1 15-17 Exercise on the introduction and grammars exercises 1
Thu 26/1 13-15 Theory of lexing and parsing plt 3, dragon 3,4
Tue 31/1 10-12 Type checking plt 4, dragon 5,6
Wed 1/2 15-17 Exercise on lexing and parsing exercises 2
Thu 2/2 13-15 Interpretation plt 5
Fri 3/2 23 Lab 1 deadline lab1 PM
Tue 7/2 10-12 Hands-on with Lab 2 lab2 PM
Thu 9/2 13-15 Code generation plt 6, dragon 6,7
Wed 15/2 15-17 Exercise on type checking and interpretation to appear
Thu 16/2 10-12 Functional programming languages (by Arnar) old slides, plt 7 (to appear), dragon 6.5,7.3
Mon 20/2 23 Lab 2 deadline lab2 PM
Tue 21/2 10-12 Hands-on with Lab 3 lab3 PM
Wed 22/1 15-17 Exercise on code generation exercises 4
Thu 23/2 13-15 Programming language design plt 8-9, dragon 1
Tue 28/2 10-12 Compiling natural language plt 10
Wed 29/2 15-17 Exercise on functional languages exercises 5
Thu 1/3 13-15 Preparing for the exam Training Exam
Mon 5/3 23 Lab 3 deadline lab3 PM

Official course schema in Time Edit


The aim of the course is to give understanding of how programming languages are designed, documented, and implemented. The course covers the basic techniques and tools needed to write interpreters, and gives a summary introduction to compilation as well. Those who have passed the course should be able to

  1. define the lexical structure of programming languages by using regular expressions, explain the functioning of finite automata, and implement lexical analysers by using standard tools;
  2. define the syntax of programming languages by using context-free grammars, explain the principles of LL and LR parsing, and implement parsers by using standard tools;
  3. define and implement abstract syntax;
  4. master the technique of syntax-directed translation and its efficient implementation in their chosen programming language;
  5. formulate typing rules and implement type checkers;
  6. formulate operational semantic rules and implement interpreters;
  7. write simple code generators;
  8. be familiar with the basic implementation issues of both imperative and functional languages;
  9. design and implement special-purpose programming languages.
  10. master the principles of polymorphic type checking by unification
  11. implement an interpreter for a functional language


Aarne Ranta, course responsible.

Arnar Birgisson, Ramona Enache, Grégoire Détrez, assistants.

The fastest way to get an answer is to mail the course's Google group

Google Group

If you have any general questions regarding the course, the labs or the exercises, please ask them in our Google group This will reach all teachers and fellow students. If you are not yet member of the group, you have to

You can do both on the group page. You will have to give your real name and your person number when you register, otherwise your membership is not approved. This is necessary to identify you as a participant of the course.

Laboration times and supervision

Location: ED 3507


Notice: Wednesday 10-12 classes cancelled from 8 February.

Extra supervisor at some of the times, especially before lab deadlines. The labs rooms and supervision are available from the second week of the course (Monday 23 January).

Normally, each student should attend one supervised laboration time each week. Since attendance is not compulsory, there may be room for more times. But, if there is lack of room, those who attend their first supervision of the week have priority to get a place and supervisor help.


Aho, Lam, Sethi & Ullman: Compilers Principles, Techniques & Tools Second edition, Pearson/Addison Wesley 2007

also known as the Dragon book.

Make sure to get the second edition! The book is available at web bookshops and will be sold at Cremona.

The lecture notes are also being developed in the form of a book. They will cover the material needed for the course, whereas the Dragon book contains much more and will also serve the Compiler Construction course.

More on functional languages, and some help for Lab 3, is given in these slides by Xavier Leroy.


There will be three laborations, written individually or in pairs.

Reporting is done via Fire. Before reporting, you must run your program through a test suite, such as the one for lab 1.

Final deadline is Wednesday 15 March for all returned and corrected labs. No labs will be graded after this deadline.


There are two classes on Wednesday at 15-17:

Exercises give bonus points for the exam: 0.4 points per exercise, the sum rounded to the nearest integer. To claim bonus points, mark the ones you have done in a list in the beginning of the class. Marking an exercise means that you are prepared to present its solution on the blackboard.

To make sure that all your bonus points are counted, you should always go to the same teacher's class.


Written exam, usual grading scales. Extra points will be given for exercises.

Date: 8 March

Time: 14.00-18.00

Place: V

The exam has the same structure as these old exams.


BNF Converter,

Precompiled Java tools (Cup and JLex)