Labs 07: Compiler extension project

You have now written a compiler for Amy, a simple functional language. The final lab project is to design and implement a new functionality of your own choice to the compiler you built so far. In preparation for this, you should aim to learn about the problem domain by searching the appropriate literature. The project includes:

  • designing and implementing the new functionality
  • documenting the results in a written report document

This will be a team project for groups of 1-3. More details below.

This project has several deadlines to ensure that the project extension you pick is reasonable. Please read below.

Selecting a Project Topic

Deadline: Friday, 8 December 2017

This is a group project, so you will need to form a group of 1-3 people. You are of course encouraged to work together!

In the following document, we list several project ideas, but you should also feel free to submit your own by email. All groups will rank the projects in order of preference, and we will then apply a matching algorithm to assign them. Because not all projects are equally difficult, projects indicate the maximum size of a group that can take them. When selecting projects, make sure you respect this restriction. If you are a large group and fail to find enough large projects that interest you, you can suggest an extension to a smaller project, or as a last resort you can take two smaller projects and split.

Project ideas

Send to Manos ( an email titled “Project selection: groups n1,n2,n3” (where ni your group numbers, see also the note below), containing the names of the top exactly 5 projects you would like to do, in order. We will do our best to distribute projects to groups.

You will need to base your projects on one of the group repositories. Discuss among you and decide which one is the best. Just after the submission deadline for Lab 05, we will make sure to move you to the chosen group. Therefore, make sure that the base repository group is the first indicated in your email.

Project Proposal

Deadline: Tuesday, 19 December 2017, 23h59

When the bidding phase is over and a mini-project has been assigned to your group, you should prepare a 8-10 minutes presentation (strictly!) 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 behavior
  • a sketch of the changes you will make to each compiler phase and of the potential new phases you'll have. This should not be a complete implementation plan, but it should demonstrate that you understand how to tackle the problem you chose.

You will present your idea during the lab session on 20/12. We ask that you send us our slides the night before so we streamline the process.

Project implementation and report

Deadline: 12 January 2018 23h59

Your final report is due on the date, and both will be delivered using Git.

You are encouraged to use the following (LaTeX) template for your report:

A PDF version of the template with the required section is available here:

You can submit your report (PDF and optionally sources) under a toplevel directory called report. Additionally, you must include clearly specified runnable examples that showcase what your extension does under the examples directory.

Although you are not required to use this template, your report must contain at least the sections described in it with the appropriate information. Note that writing this report will take some time and that you should not do it at the last minute. This final report is an important part of the compiler project. If you have questions about the template or the contents of the report, make sure you ask them early.

A common question is “how long should the report be?”. There's no definitive answer to that. Considering that the report will contain code examples and a fairly precise description of implementation, it should probably be at least 3 pages. Less would be suspicious. 6 pages is fine. We will not complain for up to 10 pages if the content is meaningful, but extra pages by themselves do not make a report better, so please use as much as you need.