Philosophy of the course

This course is designed by Laurie Hendren and Michael I. Schwartzbach. It is offered at the University of Aarhus and at McGill University, as well as several other universities where the course has been adopted.

This is primarily a standard senior undergraduate compiling course, but with a twist in its structure and choice of projects.

There are mainly two points that we seek to emphasize:

  • compiler technology is useful for applications other than full-scale programming languages; and
  • learning by example is very effective.
The first point dictates the choice of two distinct projects. One project involves a largish subset of Java, called JOOS, which is compiled into the Java virtual machine. The other project involves a domain-specific language, called WIG, which compiles high-level specifications of interactive web services into C-based CGI-scripts.

The second point is exploited by providing the students with the source code for an almost complete implementation of the JOOS compiler. This code is studied, extended, and used as a template for the WIG compiler (and hopefully for future compilers and front-ends).

As an added benefit, the two projects combine to provide the students with a detailed and sophisticated knowledge of both client-side and server-side web programming.