Back to home page.
Information for (2D1375) Programming Languages Implementation - Fall 1998
Instructor
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.
Examination
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).
Lab
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:
- 3 for two modules
- 4 for three modules
- 5 for four or more modules
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:
- A description of the input and output interfaces.
- A sample input and output corresponding to a sample piece of Tiger code of your
choosing
that clearly illustrates that your module really works. You can generate the input corresponding to
your sample code any way you like, including by hand. The output will naturally be generated by
your module.
- A well documented test program to run your module on your sample input.
- A beautifully documented copy of the source code for your module implementation.
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: <rand@nada.kth.se>
Technical support: <webmaster@nada.kth.se>