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