Project Proposal
Deadline: 11 December 2012
You should prepare a short report describing:
- a basic description of the features you want to add to the compiler and/or to the language
- some (short) programs highlighting the use of these features, with a description of how your compiler currently behaves on them (if it supports them at all), and how the improvements will change that behaviour
- a sketch of the changes you will make to each compiler phase and of the potential new phases you'll have
- ideas for further extensions
The third point should not be a complete implementation plan, but it should demonstrate that you understand how to tackle the problem you chose. You will (in principle) not have to implement what you describe in the fourth point. You will only be keeping this in mind so as to avoid running out of work in case the project turns out to be simpler that expected (or for extra credit, if you happened to solve the hard problems too quickly).
We will discuss the ideas with the groups during the lab session and help you prepare your proposal. Please make sure that you have selected a project and submitted a short proposal in time. At the end of the project you will have to write a report on your compiler extension, and (part of) this proposal will serve as its introduction. The proposal and the report are to be submitted through Git and using the git repository server.
Projects Assignments
group36 : Alternative Frontend group37 : Improved Arguments and Fields group38 : Liberal Syntax group39 : Macros group40 : Overloading and multi-methods group41 : Garbage Collection group42 : Type Inference: Write Less Type Annotations group43 : REPL group44 : Exceptions group45 : Statements as expressions, remove return group46 : Continuation Passing Transformation group47 : Abstract Interpretation: Prevent More Errors group48 : Generics: Type-Parametric Programming group49 : First-class Functions group50 : Graphics Primitives group51 : Optimizations: Constant Folding, Inlining, Dead-code elimination/partial evaluation group52 : ADTs with Pattern-Matching group53 : LLVM: Generate LLVM Intermediate Representation group54 : Traits: Multiple Inheritance