^ Back to home page.

Information for (2D1375) Programming Languages Implementation - Fall 1998


I, Rand Waltzman, am responsible for all aspects of the course. I am available to you either by appointment or any other time you can find me.

Course Text and Contents

The text for the course is Andrew W. Appel: Modern Compiler Implementation in (Java | C), Cambridge University Press, 1997, ISBN (0-521-58654-2 | 0-521-58653-4). This, as you have already no doubt noticed, is in fact a reference to two books. They are simply two versions of the same book - one in Java and one in C.

You are free to use whichever one you are most comfortable with or think would be more interesting. This freedom of choice is reflected in the freedom to use either Java or C to do the required programming exercises for the course.

The course roughly covers the material in Chapters 5-11 of the text.

Grading Policy

The course is worth 4 points. It is divided into two parts. The examination part of the course is worth 2 points and the lab part of the course is worth 2 points.


The final examination for the course is oral and is pass/fail - no other grade will be assigned to this examination (the final grade will be based on your lab results - see below). You will only be allowed to take the examination if you have completed the labs. The examination will consist of questions asked during your lab presentation (see below).


In chapters 5-11 of your text, 7 different modules that go into making up a compiler are discussed in some detail. The author of the book has supplied us with a design for a complete end-to-end compiler. His design is broken down into a variety of modules which work together (more or less) in a sequence. Some of these correspond to the modules described in chapters 5-11 (one module per chapter).

The author's design includes a detailed specification of the interfaces for each of the above mentioned modules. The modules can be studied and implemented independently of one another as long as the implementation strictly adheres to the interfaces defined on either end (i.e., the input and output ends) of each module.

In order to pass the lab part of the course you must successfully implement two of the seven above mentioned modules. It is OK to work in groups of two but no more. You may choose any two modules you wish. Each module you implement will be graded on a pass/no pass basis. The grade you get in this part of the course depends on how many modules you successfully implement according to the following schedule:

Given that you pass the final oral exam during the presentations, the grade you get in the lab as described above will be your final grade in the course.

Again, it does not matter which modules you implement. Do the ones that seem most interesting to you.

Each member of a team will receive the same grade.

For each module that you implement, you must make an oral presentation (including a demonstration) to the course instructor AND include a written report consisting of the following sections:

Oral presentations and written reports must be made/turned in no later than January 8, 1998.

The author of the book maintains a site for the book containing files that you will find useful for your implementation projects. At the end of each chapter, he gives advice about implementing the module discussed in that chapter. Everything you need to know should be in the book! If not, just let me know.

Assorted Web Sites of Interest

^ Back to home page.

Course Site Manager: <>
Technical support: <>