Philosophy of the course

This course was originally 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. Laurie taught it at McGill until 2004, except for Feng Qian teaching it in 2003, and since then Nomair Naeem (2005), Clark Verbrugge (2006), Chris Pickett (2007) and Eric Bodden (2008) have taught it.

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 Java bytecode for execution by a 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 (or potentially code for other targets if students desire).

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.

Maintained by Eric Bodden. [HOME]