2020-02-27 15:48:20 +01:00
|
|
|
|
# Compiler Construction
|
2020-02-05 13:35:04 +01:00
|
|
|
|
|
|
|
|
|
| Date | Topic / Recommended Schedule / Deadlines |
|
|
|
|
|
| ---------- | ----------------------------------------- |
|
2020-02-29 12:45:02 +01:00
|
|
|
|
| 2020-03-03 | *no proseminar* |
|
2020-02-05 13:35:04 +01:00
|
|
|
|
| 2020-03-10 | Lexer complete |
|
|
|
|
|
| 2020-03-17 | |
|
|
|
|
|
| 2020-03-24 | |
|
|
|
|
|
| 2020-03-31 | Parser complete |
|
2020-03-16 14:56:51 +01:00
|
|
|
|
| 2020-04-07 | |
|
|
|
|
|
| 2020-04-14 | |
|
2020-02-05 13:35:04 +01:00
|
|
|
|
| 2020-04-21 | Semantic checks complete |
|
|
|
|
|
| 2020-04-28 | |
|
|
|
|
|
| 2020-05-05 | AST → TAC conversion complete |
|
|
|
|
|
| 2020-05-12 | |
|
|
|
|
|
| 2020-05-19 | TAC → ASM (no function calls) complete |
|
|
|
|
|
| 2020-05-26 | |
|
|
|
|
|
| 2020-06-02 | TAC → ASM (with function calls) complete |
|
|
|
|
|
| 2020-06-09 | CFG generation complete |
|
|
|
|
|
| 2020-06-16 | Polish |
|
|
|
|
|
| 2020-06-23 | Build test submission deadline |
|
|
|
|
|
| 2020-07-14 | Final submission deadline (no extensions) |
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
|
|
|
|
- [mC Compiler Specification](specification.md)
|
|
|
|
|
- [Getting Started Code-base](https://git.uibk.ac.at/c7031162/mcc)
|
|
|
|
|
- [Submission Guideline](submission.md)
|
|
|
|
|
|
|
|
|
|
## Structure
|
|
|
|
|
|
|
|
|
|
The ultimate goal of this course is to build a working compiler according to the given specification.
|
|
|
|
|
|
|
|
|
|
You are not allowed to use code from other people participating in this course or code that has been submitted previously by somebody else.
|
2020-02-05 13:35:04 +01:00
|
|
|
|
A *getting started* code-base is provided, but you can also start from scratch.
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
During the lab, short QA sessions will be held.
|
|
|
|
|
You can work on your compiler in the meantime.
|
2018-12-31 15:26:22 +01:00
|
|
|
|
I'll be present for questions all the time, yet a big part of this course is to acquire the necessary knowledge yourself.
|
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
Please note that minor modifications may be made to the specification until 2 weeks before the final deadline.
|
2018-12-31 15:26:22 +01:00
|
|
|
|
Therefore, double check for modifications before submitting — Git provides you the diff anyway.
|
|
|
|
|
|
2019-03-01 20:49:04 +01:00
|
|
|
|
You may work together in teams of 1–3 people.
|
|
|
|
|
Teams may span across pro-seminar groups.
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
### Programming Language
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
Any of the following programming languages can be used:
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
- modern C (used for the getting started code-base)
|
|
|
|
|
- modern C++
|
|
|
|
|
- Go
|
|
|
|
|
- Rust
|
|
|
|
|
- Haskell
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
Go easy on external dependencies and obscure language extensions — yes, I'm looking at you, Haskell.
|
|
|
|
|
Code readability is paramount.
|
|
|
|
|
Using overly complex and cryptic concepts may negatively impact the evaluation process — again, looking at you, Haskell and your voodoo magic lenses.
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
|
|
|
|
### Evaluation System
|
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
I'll be using a virtualised, updated Ubuntu 20.04 LTS (64 bit) to examine your submissions.
|
2019-03-01 21:21:17 +01:00
|
|
|
|
From this you can infer the software versions I'll be using.
|
2018-12-31 15:26:22 +01:00
|
|
|
|
The submitted code has to compile and run on this system.
|
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
## Grading
|
|
|
|
|
|
|
|
|
|
The final grade is computed as the weighted average of the final submission (80%) and the QA sessions (20%).
|
|
|
|
|
Both of these parts as well as the majority of QA session grades must be positive to pass this course.
|
|
|
|
|
|
|
|
|
|
Be sure to adhere to the specification, deviating from it (without giving proper reason) will negatively impact your grade.
|
|
|
|
|
See [Final Submission Evaluation Scheme](evaluation_scheme.md) for more details.
|
|
|
|
|
|
2020-03-16 14:56:51 +01:00
|
|
|
|
### Remote Seminar
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
2020-03-16 14:56:51 +01:00
|
|
|
|
While university grounds are locked down, no attendance is required and no QA sessions are held.
|
|
|
|
|
I'll stream during the regular seminar times [over at Twitch](https://www.twitch.tv/AlexWarhawk), feel free to tune in and ask questions.
|
|
|
|
|
Streams should be recorded by Twitch automatically and remain online for 14 days.
|
|
|
|
|
|
|
|
|
|
I recommend sending me snapshots of your code-base, I'll provide feedback while streaming.
|
|
|
|
|
See [Submission Guideline](submission.md).
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
|
|
|
|
## Contacting Me
|
|
|
|
|
|
|
|
|
|
If you have questions or want to know more about a certain topic, I am always glad to help.
|
|
|
|
|
|
2020-03-16 14:56:51 +01:00
|
|
|
|
You can contact me by email, just be sure to send it from your university account.
|
2018-12-31 15:26:22 +01:00
|
|
|
|
Please keep your email informal and include the course number in the subject.
|
|
|
|
|
Preferably use the following link.
|
|
|
|
|
|
2020-03-28 18:49:01 +01:00
|
|
|
|
📧 [send email](mailto:alexander.hirsch@uibk.ac.at?subject=703602%20-%20)
|