The course participants work in groups of one or two persons. The project involves implementing, in C, some of the most important algorithms taught in the course. For this, a compiler for a subset of C is provided. This compiler generates code for a typical RISC processor. The code is executed by a simulator.
The project includes the following compulsory parts:
For the competition, only optimisations which are reasonable are
permitted, which in principle only excludes solutions which would
waste enourmous amounts of memory during execution of the optimised
program.
Up to 30000 memory words is OK.
Strict deadline for the project: Sunday November 30th at 23:59.
Jonas will announce the winning group of the competition
on Monday December 5, 2011 at 13.00 at the course home page.
Mail a tar file with your compiler to Jonas. You will then present
your project to Jonas in his office by answering a few questions regarding
your implementation. All (ie, one or two) group members must be present
and be able to answer questions about both compulsory parts.
If you miss that deadline you get a new opportunity to present your
project in November 2012.
The base project code (a non-optimizing C subset compiler) is provided in C. If you would like to use a different language, you are encouraged to translate the base code to another language including Ada, C++, Fortran, Haskell, Java, Lisp, Objective-C, PowerPC assembler, Prolog, Scala, Scheme, Simula, Smalltalk, or SPARC assembler. You need to ask for permission to use other languages.
If you are interested in increasing your grade one step (from 3 or 4), you can implement for instance graph colouring register allocation, or one of the following algorithms on SSA form: operator strength reduction, global value numbering, or partial redundancy elimination. Preferably email Jonas during October, 2008, in case you might be interested so that we can delay entering your grade into LADOK. If you later change your mind to not doing an extra project, that is fine. If you do not notify us, and later want to do the extra project then that is also possible but will require more administration (that's OK).