uibk_703602-Compiler-Constr.../slides/intro_slides.md
2021-02-23 14:59:54 +01:00

103 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

% Compiler Construction
% Alex Hirsch
% 5 March 2021
# This Proseminar
## Curriculum
> […] development of a compiler for a simple, procedural programming language
<aside class="notes">
As stated by the curriculum, your task is to build a simple compiler for a small procedural programming language.
It's quite hard to fit this goal into the 5 ECTS budget of this module (lecture included), nevertheless I think I found the right trade-offs with the given specification.
Still, it is highly recommended to work in teams and that you start early — always trying to be ahead of schedule.
</aside>
## Prerequisites
- This is a master's course!
- Brain
<aside class="notes">
By now, this course is notorious for requiring a lot of effort.
The legends are true; I am indeed expecting a decent level of skill from all of you.
This is a master's course after all.
While I don't care whether you have officially finished your bachelor, you should only take this course if you are certain that you meet the prerequisites.
</aside>
- - -
- Fluent in C (or C++, or Go, or Rust, or Haskell)
- General programming mindset
- Knowing your tools
- Algorithms and data structures
- Graphs + traversal
- Operating systems
- Utilising your software stack
- Assembly (preferably x86)
<aside class="notes">
Since this course is very programming intensive, you need to be fluent in one of these languages.
If you choose C and think strings are compared using `==` you'll have a very hard time.
For OS, if you think calling `exec` without `fork` while implementing a library is a good idea, maybe consider revisiting the OS course.
</aside>
- - -
- Software development
- Version control system
- Build systems
- Testing
- Project management
- Organisation
- Team communication
<aside class="notes">
As already mentioned, the schedule is quite tight, hence good organisation and software development skills are paramount.
</aside>
- - -
- Formal languages and automata theory
- Grammars + transformations
- Lexer / parser
<aside class="notes">
I also recommend doing this course only after having completed FLAT.
The lecture and proseminar assumes that you are familiar with the basics of grammars (plus related transformations), lexers, and parsers.
</aside>
## Ultimate Goal
- Building a compiler
- Specification provided
- Evaluation scheme provided
## Recommended Schedule
- See README
<aside class="notes">
You are free to deviate from this schedule.
</aside>
## Teams
- 13 people
- May span across PS groups
- Send me your team composition via mail within March
## Further Details
- See course material
<https://git.uibk.ac.at/c7031162/703602-Compiler-Construction>