Sprog og Oversættere (SPO) – Spring 2004

(Programming Languages and Compilers)


Welcome to the home page of the SPO course given to DAT2, SW4 and F6S students at the Department of Computer Science, Aalborg University, Denmark.



The purpose of the course is for the student to gain knowledge of important principles in programming languages and for the student to gain an understanding of techniques for describing and compiling programming languages.

Course Schedule:


Follow the links to further information about topics and exercises for each lecture.


Lecture 1

Lecture 2

Lecture 3

Lecture 4

Lecture 5

Lecture 6

Lecture 7

Lecture 8

Lecture 9

Lecture 10

Lecture 11

Lecture 12

Lecture 13

Lecture 14

Lecture 15




Follow this link for information about the syllabus and the exam.


The course is given by Bent Thomsen

The teaching assistants Jens Dalgaard Nielsen, Yin Xuepeng and Mette Thøgersen.


We will us the following two books:


Concepts of Programming Languages (Sixth Edition), Robert W. Sebesta, Prentice Hall, ISBN 0 321 20458 1


Programming Language Processors in Java – Compilers and Interpreters, David A Watt and Deryck F Brown, Prentice Hall, ISBN 0-13-025786-9


An errata for this book has been published on http://www.dcs.gla.ac.uk/~daw/books/PLPJ/errata.html


Why do we need two books for this course?


Well – you could use a lot more books, but these two books cover the two main topics of Design and Implementation of Programming Languages.


For further motivation why you would need more than one book for this course, follow the link to Amazon.com: So You'd Like to... Write or Create a Compiler

Additional Literature:


For those of you who would like additional reading I can recommend the following books:


Programming Languages – Design and Implementation (Fourth Edition), Terrence W. Pratt and Marvin V. Zelkowitz, Prentice Hall, ISBN 0-13-027678-2


Concepts in Prograzmming Languages, John C. Mitchell, Cambridge University Press, ISBN 0 521 78098 5.


Compiling for the .NET Common Language Runtime (CLR), John Gough, Prentice Hall, ISBN 0 13 062296 6


Modern compiler implementation in Java (second edition), Andrew W. Appel, Cambridge University Press, ISBN 0-521-82060-X.


Be sure you get the second edition, as it is much improved over first and the preliminary editions!

However the first edition comes in three variants:

Modern compiler implementation in Java

Modern compiler implementation in C

Modern compiler implementation in ML


If you are using ML as your implementation language I will recommend that you read the ML variant of Appel’s book

The above books are often referred to as the Tiger books, although it is left unspecified which version of the book is the Tiger book.


If you are implementing ML, an extension to ML or an ML like language you should read the book:


Compiling with Continuations, Andrew W. Appel, Cambridge University Press, ISBN 0521416957


A classic compiler book, often refered to as the Dragon book, is:


Compilers: Principles, Techniques and Tools, Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman, Addiso-Wesley, ISBN 0201100886




Last updated 19.04.2004