Lecture slides and videos will be published twice a week (on Monday and Tuesday). Assignments for theoretical (TE) and practical (PE) exercises will be handed out weekly on Friays, alternating between theoretical and practical exercises. You have two weeks to hand in the solutions (Deadline is Friday 14:00).
The C crash course serves as an introduction to C for students who have only programmed in Java (or other languages) before. It is also useful as a refresher of your knowledge. This part is identical for the operating systems (TDT4186) and compilers (TDT4205) course.
Week | Day | Date | Mode | Topic | Video | |
---|---|---|---|---|---|---|
2 | Mon | 11.01.2021 | video | C "crash course" part 1 | c-course.pdf | video |
Tue | 12.01.2021 | video | C "crash course" part 2 | video | ||
Fri | 15.01.2021 | Handout TE1 - C theory | Compilers_TE1.pdf | |||
3 | Mon | 18.01.2021 | video | Lecture 1: Motivation and History | compilers01.pdf | video 1 |
Mon | 18.01.2021 | Welcome and Q&A session (17:15-18:00) | qa01.pdf | |||
Tue | 19.01.2021 | video | Lecture 2: Compiler structure, automata and scanning | compilers02.pdf | video 2.1 (structure) video 2.2 (scanning) | |
How difficult is it to write a compiler? (additional material: blog) | link | |||||
Fri | 22.01.2021 | Handout PE1 - C practice | Compilers_PE1.pdf (now with points!) | |||
Fri | 22.01.2021 | Moved to next week! | ||||
4 | Mon | 25.01.2021 | Lecture 3: Scanner Generators | compilers03.pdf | video 3 | |
Mon | 25.01.2021 | Q&A session (17:15-18:00) | qa02.pdf | video | ||
Tue | 26.01.2021 | Lecture 4: Lexical analysis in the real world | compilers04.pdf | video 4.1 (DFA minimization) video 4.2 (lex) | ||
Fri | 29.01.2021 | Deadline Handin TE1 (14:00) | ||||
Fri | 29.01.2021 | Discussion session for TE1 (14:15-16:00) | solution sheet solution slides | |||
Fri | 29.01.2021 | Handout TE2 | Compilers_TE2.pdf | |||
5 | Mon | 01.02.2021 | Lecture 5: Introduction to parsing | compilers05.pdf | video 5 | |
Which parsing approach? (additional material: blog) | link | |||||
Mon | 01.02.2021 | Q&A session (17:15-18:00) | ||||
Tue | 02.02.2021 | Lecture 6: Top-down parsing and LL(1) parser construction | compilers06.pdf | video 6.1 (parsing)
video 6.2 (recursive descent) video 6.3 (LL(1) and table-driven parsing | ||
Fri | 05.02.2021 | Deadline Handin PE1 (14:00) | ||||
Fri | 05.02.2021 | Discussion session for PE1 (14:15-16:00) | video | |||
Fri | 05.02.2021 | Handout PE2 - Hands-on with scanner generators | Compilers_PE2.pdf
Compilers_PE2_skeleton.tar.gz Compilers_PE2_testcases.tar.gz | |||
6 | Mon | 08.02.2021 | Lecture 7: Bottom-up parsing | compilers07.pdf | video 7 | |
Mon | 08.02.2021 | m | Q&A session (17:15-18:00) | |||
Tue | 09.02.2021 | Lecture 8: LR(k) parsers | compilers08.pdf | video 8.1: LR1() DFA video 8.2: LR(1) parsing | ||
Fri | 12.02.2021 | Deadline Handin TE2 (14:00) | ||||
Fri | 12.02.2021 | Discussion session for TE2 (14:15-16:00) | solution sheet PDF
slides PDF | video | ||
Fri | 12.02.2021 | Handout TE3 (Update: clarification of 3.1!) | Compilers_TE3_v2.pdf | |||
7 | Mon | 15.02.2021 | Lecture 9: Practical parsing issues and yacc introduction | compilers09.pdf | video 9.1 video 9.2 | |
Compiling is like skiing: the art of compiler architecture (video by Paul Kelly, Imperial College) | video | |||||
Mon | 15.02.2021 | Q&A session (17:15-18:00) | ||||
Tue | 16.02.2021 | Lecture 10: Context-sensitive analysis | compilers10.pdf | video 10.1 video 10.2 | ||
Fri | 19.02.2021 | Deadline Handin PE2 (14:00) | ||||
Fri | 19.02.2021 | Discussion session for PE2 (14:15-16:00) | video | |||
Fri | 19.02.2021 | Handout PE3 - Parsing and VSL specification: grammar error and example programs fixed! | Compilers_PE3_v3.pdf
PE3_skeleton_v2.zip | |||
8 | Mon | 22.02.2021 | Lecture 11: Type analysis and attribute grammars | compilers11.pdf | video 11 | |
Mon | 22.02.2021 | Q&A session (17:15-18:00) | ||||
Tue | 23.02.2021 | Lecture 12: Intermediate representations and three-address code | compilers12.pdf | video 12 | ||
Fri | 26.02.2021 | Deadline Handin TE3 (14:00) | ||||
Fri | 26.02.2021 | ---- | Discussion session for TE3 (14:15-16:00) moved to next week! | moved! | ||
Fri | 26.02.2021 | Handout TE4 | Compilers_TE4.pdf | |||
9 | Mon | 01.03.2021 | Lecture 13: Intermediate representations and Static Single Assignment | compilers13.pdf | video 13 | |
Mon | 01.03.2021 | zoom | Q&A session (17:15-18:00) | zoom | ||
Tue | 02.03.2021 | Lecture 14: The procedure abstraction | compilers14.pdf | video 14 | ||
Fri | 05.03.2021 | Deadline Handin PE3 (14:00) | ||||
Fri | 05.03.2021 | Discussion session for PE3 (14:15-16:00) | TE3
PE3 | video | ||
Fri | 05.03.2021 | Handout PE4 - Syntax tree simplification | Compilers_PE4.pdf
PE4_skeleton.zip | |||
10 | Mon | 08.03.2021 | Lecture 15: Assembler and real world procedures | compilers15.pdf | video 15 | |
Mon | 08.03.2021 | Q&A session (17:15-18:00) | ||||
Tue | 09.03.2021 | Lecture 16: Introduction to optimizations | compilers16.pdf | video 16 | ||
Fri | 12.03.2021 | Deadline Handin TE4 (14:00) | ||||
Fri | 12.03.2021 | |||||
Fri | 12.03.2021 | Handout TE5 | Compilers_TE5.pdf | |||
11 | Mon | 15.03.2021 | Lecture 17: Optimizations in detail: control-flow graphs | compilers17.pdf | video 17.1 video 17.2 | |
Mon | 15.03.2021 | Q&A session (17:15-18:00) | ||||
Tue | 16.03.2021 | Lecture 18: Data-flow analysis framework | compilers18.pdf | video 18 | ||
Fri | 19.03.2021 | Deadline Handin PE4 (14:00) | ||||
Fri | 19.03.2021 | Discussion session for TE4 & PE4 | video | |||
Fri | 19.03.2021 | Handout PE5 - Symbol table construction |
Compilers_PE5.pdf
PE5: guidelines PDF PE5: new skeleton files PE5: sources and output files PE5 new VSL examples | |||
12 | Mon | 22.03.2021 | Lecture 19: Data-flow and liveness analyses | compilers19-1.pdf
compilers19-2.pdf | video 19.1
video 19.2 | |
Mon | 22.03.2021 | Q&A session: Guidelines for PE5 | slides | video | ||
Tue | 23.03.2021 | Lecture 20: Reaching definitions | compilers20.pdf | video 20 | ||
Fri | 26.03.2021 | Deadline Handin TE5 (14:00) | ||||
Fri | 26.03.2021 | Discussion session for TE5 (14:15-16:00) | video | |||
Fri | 26.03.2021 | Handout TE6 | Compilers_TE6.pdf | |||
13 | š° Easter break ā pĆ„skeferie š£ | |||||
14 | Mon | 05.04.2021 | š° Easter break ā pĆ„skeferie š£ | |||
Tue | 06.04.2021 | š° Easter break ā pĆ„skeferie š£ | ||||
Fri | 09.04.2021 | Additional Q&A session for PE5 | video | |||
15 | Mon | 12.04.2021 | Lecture 21: Available expressions and very busy expressions analysis | compilers21-1.pdf
compilers21-2.pdf |
video 21.1
video 21.2 | |
Mon | 12.04.2021 | |||||
Mon | 12.04.2021 | Deadline Handin PE5 (23:59) | ||||
Tue | 13.04.2021 | Lecture 22: Code generation | compilers22.pdf | video 22 | ||
Tue | 13.04.2021 | Handout PE6 - Code generation | Compilers_PE6.pdf
PE6: guidelines PDF PE6: new skeleton files | guidelines video | ||
Fri | 16.04.2021 | Deadline Handin TE6 (14:00) | ||||
Fri | 16.04.2021 | Discussion session for TE6 (14:15-16:00) | ||||
Fri | 16.04.2021 | Handout Example exam | example exam 2020
solutions example exam 2020 (updated) exam 2020 solutions exam 2020 | |||
16 | Mon | 19.04.2021 | Lecture 23: Register allocation | compilers23.pdf | video 23 | |
Mon | 19.04.2021 | |||||
Tue | 20.04.2021 | Lecture 24: SSA generation and optimization | compilers24.pdf | |||
Fri | 23.04.2021 | Discussion session for the exam preparation | ||||
17 | Mon | 26.04.2021 | Semester summary | compilers25.pdf | zoom | |
Mon | 26.04.2021 | Deadline Handin PE6 (23:59) |
Week | Publication date | Handin date | Topic | Code | |
---|---|---|---|---|---|
3 | 22.01.2021 | 05.02.2021 | Practical C exercises | ||
5 | 05.02.2021 | 19.02.2021 | Hands-on with scanner generators | ||
7 | 19.02.2021 | 05.03.2021 | Parsing and VSL specification | ||
9 | 05.03.2021 | 19.03.2021 | Syntax tree simplification | ||
11 | 19.03.2021 | 09.04.2021 | Symbol table construction | ||
14 | 09.04.2021 | 23.04.2021 | Code generation |
Authors | Keith Cooper and Linda Torczon |
Title | Engineering a Compiler, Second Edition |
ISBN | 9780120884780 (hardcover) / 9780080916613 (ebook) |