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

112 lines
2.8 KiB
Markdown
Raw Normal View History

2019-03-06 15:55:44 +01:00
% Compiler Construction
% Alex Hirsch
% 5 March 2021
2019-03-06 15:55:44 +01:00
# This Proseminar
2019-03-06 15:55:44 +01:00
## Curriculum
> […] 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-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.
</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 revisiting the OS course would be a good idea.
2020-02-29 12:43:22 +01:00
</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
## Requirements
- Working compiler
2020-02-22 14:59:37 +01:00
## Recommended Schedule
- See README
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>