uibk_703602-Compiler-Constr.../slides/intro_slides.md

126 lines
3.3 KiB
Markdown
Raw Normal View History

2019-03-06 15:55:44 +01:00
% Compiler Construction
% Alex Hirsch
2020-02-22 14:59:37 +01:00
% 3 March 2020
2019-03-06 15:55:44 +01:00
# This ProSeminar
## Curriculum
2020-02-22 14:59:37 +01:00
> […] development of a compiler for a simple procedural programming language
2019-03-06 15:55:44 +01:00
2020-02-29 12:43:22 +01:00
<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>
2019-03-06 15:55:44 +01:00
## Prerequisites
2020-02-22 14:59:37 +01:00
- This is a master's course!
2019-03-06 15:55:44 +01:00
- Brain
2020-02-22 14:59:37 +01:00
If you struggle too much, do this course at a later time.
You can unregister until the end of April.
2020-02-29 12:43:22 +01:00
<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.
Otherwise, skip it for now and come back to it when you have acquired the necessary knowledge.
</aside>
2019-03-06 15:55:44 +01:00
- - -
2020-02-22 14:59:37 +01:00
- Fluent in C (or C++, or Go, or Rust, or Haskell)
- General programmer mindset
- Knowing your tools
2019-03-06 15:55:44 +01:00
- Algorithms and data structures
- Graphs + traversal
- Operating systems
- Utilising your software stack
2020-02-22 14:59:37 +01:00
- Assembly (preferably x86)
2020-02-29 12:43:22 +01:00
<aside class="notes">
Since this course is very programming intensive, you need to be fluent in one of these languages.
If 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 revisit the corresponding lecture would be a good idea.
</aside>
2019-03-06 15:55:44 +01:00
- - -
- Software development
- Version control system
- Build systems
2020-02-22 14:59:37 +01:00
- Testing
2019-03-06 15:55:44 +01:00
2020-02-22 14:59:37 +01:00
- Project management
- Organisation
- Team communication
2019-03-06 15:55:44 +01:00
2020-02-29 12:43:22 +01:00
<aside class="notes">
As already mentioned, the schedule is quite tight, hence good organisation and software development skills are paramount.
</aside>
2019-03-06 15:55:44 +01:00
- - -
- Formal languages and automata theory
2020-02-22 14:59:37 +01:00
- Grammars + transformations
- Lexer / parser
2019-03-06 15:55:44 +01:00
2020-02-29 12:43:22 +01:00
<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>
2019-03-06 15:55:44 +01:00
## Ultimate Goal
- Building a compiler
- Specification provided
- Evaluation scheme provided
## In the Lab
- QA sessions
- I'll be present for questions
- You can work on your compiler
## Requirements
- Working compiler
2020-02-22 14:59:37 +01:00
- More positive than negative QA sessions
## Recommended Schedule
- March: lexer / parser
- April: semantic checks, start IR generation
- May: finish IR generation, start ASM generation
- June: finish ASM generation, CFG generation, polish
2019-03-06 15:55:44 +01:00
2020-02-29 12:43:22 +01:00
<aside class="notes">
You are free to deviate from this schedule.
</aside>
2020-02-22 14:59:37 +01:00
## Submissions
2019-03-06 15:55:44 +01:00
2020-02-22 14:59:37 +01:00
- End of June: build test submission (optional)
- Mid of July: final submission (no extensions)
2019-03-06 15:55:44 +01:00
## Teams
2020-02-22 14:59:37 +01:00
- 13 people
2019-03-06 15:55:44 +01:00
- May span across PS groups
2020-02-22 14:59:37 +01:00
- Send me your team composition via mail within March
2019-03-06 15:55:44 +01:00
## Further Details
- See course material
<https://git.uibk.ac.at/c7031162/703602-Compiler-Construction>