Note: this is the 2010 dOvs homepage. The 2011 edition runs under CourseAdmin.
DescriptionThe participants will after the course have insight into the theory of translation of programming languages and practical experience with the application of compiler technology. The working method of the course will also train the participants to independently seek information and to plan and complete projects. The participants must at the end of the course be able to describe and apply principles and theories of translation of programming languages, to plan and implement a compiler for a modern programming language, and to describe and evaluate how compiler technology influences the design of programming languages. The contents are concrete and abstract syntax, parsing, scopes and environments, type checking, virtual machines, code generation, optimization, static analysis, garbage collection, program transformations, and domain-specific languages.
Time and PlaceTuesdays 12-14 in Store Aud
Fridays 9-11 in Store Aud
Teaching MaterialSlides and selected online material:
PhorumThe Phorum is used for discussions about the course and the programming project. Please follow the posting guidelines.
LecturerJan Midtgaard <>
Teaching AssistantsAsger Feldthaus <>
Lasse Klųjgaard Staal <>
Jakob Sandholm <>
LecturesThe lectures will cover the general topics, Java specific issues, and solutions to the weekly exercises. The language of the lectures is English.
Project GroupsThe participants must work in groups of size 3. Each group will collaborate on a solution to the programming project and will share 70% of their final grades.
Group HomepagesEach group has a homepage, which contains information about the group members and their preliminary evaluation. It is also used for handing in and testing the various parts of the project and for providing documentation through a (private) group blog. Do not use this homepage as the only repository for your source code!
Programming ProjectEach group will in Java 1.5 implement a compiler for the language Joos 1, which is a large subset of Java 1.3. The compiler must be implemented as a completion of a skeleton compiler for the Joos 2 superset. For inspiration, a complete compiler for the Joos 0 subset is presented during the lectures. For extra credit, the compiler may be extended with features from the full Joos 2 language (don't attempt this until you have a complete Joos 1 solution). The project consists of several individual parts that must be handed in at specific times during the semester. Note that different groups are not permitted to share source code (but discussions of general techniques are of course allowed).
Joos 2 is implemented by Aske Simon Christensen and Johnni Winther.
ConsultationsEach group must arrange a weekly 30-minute consultation with a teaching assistant to receive help and guidance with the programming project and the general topics. Note that such a meeting is only productive if the group is well prepared in advance. Additional help may be obtained by e-mail or through the Phorum and the group blog.