Go to file
2021-02-04 13:21:11 +01:00
examples Add operator_precedence example 2020-02-13 23:25:38 +01:00
images Add fib_ast example source 2019-02-01 17:06:49 +01:00
slides Update course information for next semester 2021-02-04 13:21:11 +01:00
evaluation_scheme.md Update course information for next semester 2021-02-04 13:21:11 +01:00
README.md Update course information for next semester 2021-02-04 13:21:11 +01:00
specification.md Update course information for next semester 2021-02-04 13:21:11 +01:00
submission.md Adjust information for corona situation 2020-03-16 14:57:07 +01:00

Compiler Construction

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)

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. A getting started code-base is provided, but you can also start from scratch.

Please note that minor modifications may be made to the specification until 2 weeks before the final deadline. Therefore, double check for modifications before submitting — Git provides you the diff anyway.

You may work together in teams of 13 people. Teams may span across proseminar groups.

The proseminar takes place online over at Twitch, attendance is not mandatory.

I recommend sending me snapshots of your code-base, I'll provide feedback on stream. Please follow the submission guidelines.

Programming Language

Any of the following programming languages can be used:

  • modern C (used for the getting started code-base)
  • modern C++
  • Go
  • Rust
  • Haskell

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.

Grading

The final grade is computed solely from the final submission.

Be sure to adhere to the specification, deviating from it (without giving proper reason) will negatively impact your grade. See Final Submission Evaluation Scheme for more details.

Contacting Me

Just message me on Discord if you need anything. Alternatively, you can send me an email using the following link.

📧 send email