uibk_703602-Compiler-Constr.../README.md

71 lines
3.0 KiB
Markdown
Raw Normal View History

2020-02-27 15:48:20 +01:00
# Compiler Construction
2020-02-05 13:35:04 +01:00
| Date | Topic / Recommended Schedule / Deadlines |
| ---------- | ----------------------------------------- |
| 2021-03-05 | *Introduction* |
| 2021-03-12 | *Explaining lexer & parser code* |
| 2021-03-19 | Lexer complete |
| 2021-03-26 | |
| 2021-04-16 | Parser complete |
| 2021-04-23 | |
| 2021-04-30 | Semantic checks complete |
| 2021-05-07 | |
| 2021-05-14 | AST → TAC conversion complete |
| 2021-05-21 | |
| 2021-05-28 | TAC → ASM (no function calls) complete |
| 2021-06-04 | |
| 2021-06-11 | TAC → ASM (with function calls) complete |
| 2021-06-18 | CFG generation complete |
| 2021-06-25 | Build Test Submission deadline |
| 2021-07-16 | 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 Guidelines](submission.md)
2018-12-31 15:26:22 +01:00
## 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
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 13 people.
Teams may span across proseminar groups.
The proseminar takes place online [over at Twitch](https://www.twitch.tv/AlexWarhawk), attendance is not mandatory.
I recommend sending me snapshots of your code-base, I'll provide feedback on stream.
Please follow the submission guidelines.
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 or 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
2020-02-05 13:35:04 +01:00
## Grading
The final grade is computed solely from the final submission.
2020-02-05 13:35:04 +01:00
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.
2018-12-31 15:26:22 +01:00
## Contacting Me
Just message me on Discord if you need anything.
Alternatively, you can send me an email using the following link.
2018-12-31 15:26:22 +01:00
2020-03-28 18:49:01 +01:00
📧 [send email](mailto:alexander.hirsch@uibk.ac.at?subject=703602%20-%20)