Computer Science Department
Programming Methods Laboratory
Ecole Polytechnique Federale de Lausanne
Programmation Avancee et Compilation     summer semester 2000



In this course, the student should learn the basic principles of compilers and concurrency. Emphasized are parts of the compiler which are of general interest. On the practical side an interpreter for a small programming language will be written. The language used for implementation will be Java.

At the end of the course the student should

  • know about the internal structure of a compiler/interpreter
  • be able to implement a compiler/interpreter for a simple programming language
  • know and be able to use frameworks, patterns, and data structures common in compilation
  • be able to specify the components of a compiler/interpreter
  • understand basic concurreny concepts like monitors and semaphores, and be able to implement and use them in Java
  • have gained experience in programming in a group


    1. Overview Compiler
    2. Lexical Analysis
    3. Syntactic Analysis
    4. Abstract Syntax
    6. Semantic Analysis
    7. Interpretation
    8. Concurrency in Java
    9. Basic Concurrency Patterns
The course and the tutorials are given in English.

     Andrew W. Appel, Modern compiler implementation in Java. Addison-Wesley, 1997.
     Avi Silberschatz, Peter Palvin, Greg Gagne Applied Operating System Concepts . John Wiley, 2000.
     Doug Lea, Concurrent Programming in Java -- Design Principles and Patterns. Addison-Wesley, 1997.
     Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.

Lecturer: Dr. Christoph Zenger


The Exam is on July, 12th, 8.15. It lasts two hours. It is closed books, but everyone is allowed to bring to A4 sheets summary. You may write on th front- and backside of the sheets.


Lectures: Friday 08:00-11:00, room IN/200
Tutorials: Friday 11:00-12:00, IN/1 or IN/200
Practical tutorials are held in room IN/1


The slides are available in three formats, PDF, Postscript and HTML. The PDF format is best read with acroread. The PDF files have a document structure, so you can click through the slides. Make sure you use the setting "View visible area". The Postscript files have 4 slides on each page and are best used if you want to print the slides. The HTML format is not completely supported, so it is generally better to use the first two.


Jex Specification (errors from class corrected) PDF Postscript(4 slides a page)

The project is described here in French.


Here are some review exercises (with solutions). Some of them are from class, some of them are new.


Related Links

LAMP homepage
Last modified: 01.02.2000, Matthias Zenger <>