Skip to content
Snippets Groups Projects
Commit e135379e authored by Fatih Yazici's avatar Fatih Yazici
Browse files

Added lab06 (project) materials

parent 6d373f25
No related branches found
No related tags found
No related merge requests found
...@@ -81,3 +81,5 @@ My goal is for lectures to be self-contained. The following books contain overla ...@@ -81,3 +81,5 @@ My goal is for lectures to be self-contained. The following books contain overla
| | Thu | 24.11.2022 | 08:15 | INM202 | Labs + Q&A | Staff answers questions on labs and on [Exam Solutions](past-exams/2022/Solutions-Exam-2022.pdf) for [this year's exam](past-exams/2022/Exam-2022.pdf) | | | | Thu | 24.11.2022 | 08:15 | INM202 | Labs + Q&A | Staff answers questions on labs and on [Exam Solutions](past-exams/2022/Solutions-Exam-2022.pdf) for [this year's exam](past-exams/2022/Exam-2022.pdf) | |
| | **Fri** | 25.11.2022 | 16:00-17:30 | [BC 333](https://plan.epfl.ch//?room=BC333) | View your exam | Staff will be available to answer questions on what you did and how the exam was graded | | | | **Fri** | 25.11.2022 | 16:00-17:30 | [BC 333](https://plan.epfl.ch//?room=BC333) | View your exam | Staff will be available to answer questions on what you did and how the exam was graded | |
| 10 | Mon | 28.11.2022 | 13:15 | INM200 | Lecture 11 | Guest lecture: [Static analysis for Amy](lectures/sonar.md) by Arseniy Zaostrovnykh and Quentin Jaquier from [Sonar](https://www.sonarsource.com/): [Part 1](https://tube.switch.ch/videos/q4JRgz2O0K), [Part 2](https://tube.switch.ch/videos/6o1na9oIfG) | | 10 | Mon | 28.11.2022 | 13:15 | INM200 | Lecture 11 | Guest lecture: [Static analysis for Amy](lectures/sonar.md) by Arseniy Zaostrovnykh and Quentin Jaquier from [Sonar](https://www.sonarsource.com/): [Part 1](https://tube.switch.ch/videos/q4JRgz2O0K), [Part 2](https://tube.switch.ch/videos/6o1na9oIfG) |
| | Wed | 30.11.2022 | 08:15 | INM202 | Labs | [Code Generation Lab](labs/lab05/), [Project Topic Selection](labs/lab06/) |
| | Thu | 01.12.2022 | 08:15 | INM202 | Labs | [Code Generation Lab](labs/lab05/), [Project Topic Selection](labs/lab06/) |
# Labs 06: 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 on top of 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 project has several deadlines, detailed below. Please note that the
first of them (choosing the topic) is already coming up on this Thursday!
Use the sessions on Wednesday and Thursday morning to discuss your own
ideas or choices.
## Selecting a Project Topic
**Deadline: Thursday December 1st**
In the following document, we list several project ideas, but you should
also feel free to submit your own. All groups will rank the
projects in order of preference, and we will then do our best to assign
the preferred projects to as many groups as possible. Because not all
projects are equally difficult, we annotated each of them with the
expected workload. The suggested projects cover a wide range of
complexity, and we will evaluate your submissions with that complexity
in mind. For instance, for a project marked with `(1)` (relatively low
complexity) we will be expecting a polished, well-tested and
well-documented extension, whereas projects on the other end (`(3)`) may
be more prototypical. For all submissions, however, we require that you
deliver code that compiles and a set of example input files that
demonstrate the new functionality.
[Project ideas](material/extensions.pdf)
To announce your preferences, [please fill out this form on Moodle before the deadline](https://moodle.epfl.ch/mod/questionnaire/view.php?id=1231114). You\'ll have to
provide **the numbers corresponding to the top exactly 5** projects you would like to
work on, in order of descending preference. We will do our best to
assign you the project you are most interested in.
## Project Orientation
We will try to inform you about the project assignment during the usual Wednesday and Thursday sessions. We ask you to be **proactive** and validate with the assistants your understanding of the project goals and the expectations of the end product. Think about the following questions and feel free to ask the assistants about them during the exercise sessions:
- What are the features you will add to the compiler/language?
- What would be some (short) programs highlighting the use of these features?
- What changes might be required in each compiler phase and/or what new phases would you add? (Very roughly)
## Project Presentation
You will present your idea during the last two weeks of the semester (Dec 14/15/19/21/22). We'll announce the concrete
schedule of presentations at a later point. [Instructions on what and how to present your project can be found here.](material/presentation.md)
## Project Implementation and Report
You will develop your project on top of your implementation of Amy. Please push all development on a new branch `clplab6`, ideally building on top of the codegen lab. We will refer to this branch in case of problems with your submission.
Deadline: **TBD**.
Submission: content of the clplab6 branch.
Final form of your submission should contain:
- Your implementation, which must, to be graded at all, compile and be able to run non-trivial examples.
- A subdirectory `extension-examples/` which includes **at least 5 examples** that demonstrate your compiler extension in action.
- A subdirectory `report/` which includes a PDF summarizing your extension.
- A subdirectory `slides/` which includes the PDF of the project presentation.
- A README file indicating how we should run and test the implemented functionality, with examples.
**If you did not manage to complete your planned features, or they are
partially implemented, make this clear in your report!**
You are encouraged to use the following (LaTeX) template for your
report:
- [LaTeX sources](material/report-template.tar.gz)
A PDF version of the template with the required section is available
here:
- [PDF Example](material/report-template.pdf)
Although you are not required to use the above 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 you
should not do it in the last minute. The 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 technical description of your implementation, it would be
surprising if it were shorter than 3 pages. Please try to stay within 6
pages. A concise, but well-written report is preferable to a long, but
poorly-written one.
File added
## Compiler Extension Presentation Instructions
Presentations will take place in the weeks 13-14.
**The presentation should be 9 minutes long.**
**Q&A session of 5 minutes** will follow right after the
presentation.
Shortly after, you will receive feedback from us regarding the content
of your presentation, as well as some general feedback on the form.
### Presentation content
Your presentation should summarize your project. In particular, we\'d
expect to see
- a basic overview of the features you added to the compiler/language
- some (short) programs highlighting the use of these features, with a
description of how your extended compiler behaves on them
- possibly some theoretical background you had to learn about to
implement the extension
- an overview of the changes you made to each compiler phase and/or
which phases you added
### Presentation style
Here are some useful resources on how to prepare and give talks:
- [How To Speak by Patrick
Winston](https://www.youtube.com/watch?v=Unzc731iCUY)
- [How to give a great research talk by Simon Peyton
Jones](https://www.microsoft.com/en-us/research/academic-program/give-great-research-talk/)
Please do not use Viktor\'s videos as a model for the presentation, but
instead incorporate as many points of the talk of [Patrick
Winston](https://en.wikipedia.org/wiki/Patrick_Winston) as you believe
apply to your presentation. It is an amazing and entertaining talk,
despite (or because) it is meta-circular: he does as he says. Note:
breaking physical objects or referring to supernatural beings in your
video is not required. Use your own judgment and strike a balance in
being comfortable with what and how you are saying things and trying out
these pieces of advice.
File added
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment