# Planning of the compilation course (CAP, Compilation and Program Analysis) _Academic first semester 2024-2025_ # Week 1: - :book: Course: Monday 09/09/2024, 13h30-15h30. Amphi K (Gabriel Radanne) * Introduction: [transparents](course/capmif_cours01_intro_et_archi.pdf). * ISA [ref pdf RISCV](course/riscv_isa.pdf). * [Demo Assembly](course/demo20.s). * Lexing, Parsing, [slides](course/capmif_cours02_lexing_parsing.pdf). * [Demo Parsing](course/ANTLRExamples.tar.xz). - :hammer: Lab 1: Thursday 12/09/2024, 10h15-12h15. Room E001 (Samuel Humeau & Emma Nardino) - :rocket: Additional ressources (mainly in english) * A nice YT video on [structural induction](https://www.youtube.com/watch?v=2o3EzvfgTiQ) by F. Pereira. * Fernando Pereira's other videos on operational semantics : [video1](https://www.youtube.com/watch?v=bOzbRhXvtlY), [video2](https://www.youtube.com/watch?v=aiBKOuM5iEA). # Week 2: - :book: Course: Monday 16/09/2024, 13h30-15h30. Amphi SVT (Bio) (Yannick Zakowski) * Semantics: [transparents](course/capmif_cours_03_semantics.pdf). - :book: Course: Thursday 19/09/2024, 10h15-12h15. Amphi B (Yannick Zakowski) * Typing: [transparents](course/capmif_cours_04_typing.pdf). # Week 3: - :hammer: Lab 2: Thursday 23/09/2024, 13h30-15h30. Room E001 103 & -138 (Grenat) (Samuel Humeau & Emma Nardino) * Lexing & Parsing with ANTLR4 [TP02](TP02/tp2.pdf). * Code in [TP02/](TP02/). - :book: Course: Thursday 26/09/2024, 10h15-12h15. Amphi B (Gabriel Radanne) * Interpreters: [transparents](course/capmif_cours03_interpreters.pdf). * 3 Address code generation: [transparents](course/capmif_cours05_3ad_codegen.pdf). # Week 4: - :hammer: Lab 3: Monday 30/09/2024, 13h30-15h30. Room E001 (Samuel Humeau & Emma Nardino) * Interpreter & Typer [TP03](TP03/tp3.pdf). * Code in [TP03/](TP03/) and [MiniC/TP03/](MiniC/TP03/). - :book: Course: Thursday 3/10/2024, 10h15-12h15. Amphi B (Gabriel Radanne) * CFG [slides in english](course/capmif_cours06_irs.pdf). # Week 5: - :hammer: Lab 4a: Monday 07/10/2024, 13h30-15h30. Room E001 (Samuel Humeau & Emma Nardino) * Syntax directed code generation [TP04](TP04/tp4a.pdf). * Code in [MiniC/TP04/](MiniC/TP04/). * Documentation [here](docs/html/index.html). - :book: Course: Thursday 10/10/2024, 10h15-12h15. Amphi B (Gabriel Radanne) * SSA [slides in english](course/capmif_cours06a_ssa.pdf). # Week 6: - :hammer: Lab 4b: Monday 14/10/2024, 13h30-15h30. Room E001 (Samuel Humeau & Emma Nardino) * Control Flow Graph [TP04b](TP04/tp4b.pdf). * Code in [MiniC/TP04/](MiniC/TP04/). * Documentation (updated) [here](docs/html/index.html). - :book: Course: Thursday 17/10/2024, 10h15-12h15. Amphi L (Gabriel Radanne) * Register allocation [slides in english](course/cap_cours07_regalloc.pdf). # Week 7: - :hammer: Lab 5a: Monday 21/10/2024, 13h30-15h30. Room E001 (Samuel Humeau & Emma Nardino) * Control Flow Graph under SSA Form [TP05a](TP05/tp5a.pdf). * Code in [MiniC/TP05/](MiniC/TP05/). * Documentation (updated) [here](docs/html/index.html). - :book: Course: Thursday 25/10/2024, 10h15-12h15. Amphi B (Gabriel Radanne) * SSA Optims [slides in english](course/cap_cours06b_ssa_optim.pdf). # Week 8: - :hammer: Lab 5b (1/2): Monday 04/11/2024, 13h30-15h30. Room E001 (Samuel Humeau & Emma Nardino) * Smart Register Allocation [TP05b](TP05/tp5b.pdf). * Code in [MiniC/TP04/](MiniC/TP05/). - :book: Course: Thursday 7/11/2024, 10h15-12h15. Amphi B (Gabriel Radanne) * Beyond Imperative [slides in english](course/cap_cours_bonuscomp.pdf). # Week 9: - :hammer: Lab 5b (2/2): Monday 18/11/2024, 13h30-15h30. Room E001 (Samuel Humeau & Emma Nardino) - :book: Course: Thursday 21/11/2024, 10h15-12h15. Amphi J (Yannick Zakowski) * Functions: code generation [slides in english](course/cap_cours08_func_codegen.pdf). # Week 10: - :notebook: TD: Monday 25/11/2024, 13h30-15h30. Room E001 (Samuel Humeau & Emma Nardino) - :book: Course: Thursday 28/11/2024, 10h15-12h15. Amphi B (Yannick Zakowski) * Functions: semantics [slides in english](course/cap_cour309_func_semantics.pdf). # Week 11: - :hammer: Choice Lab (1/3): Monday 02/12/2024, 8h00-13h30. Room E001 (Samuel Humeau & Emma Nardino) * Optimisations under SSA form [TP5c](TP05/tp5c.pdf), code in [MiniC/TPoptim/](MiniC/TPoptim/). * Parsing and typechecking functions [TP06a](TP06/tp6a.pdf), code in [MiniC/](MiniC/). * Code generation for functions [TP06b](TP06/tp6b.pdf), code in [MiniC/](MiniC/). - :book: Course: Thursday 05/12/2024, 10h15-12h15. Amphi B (Yannick Zakowski) * On parallelism [slides in english](course/cap_cours10_parallelism.pdf). # Week 12: - :hammer: Choice Lab (2/3): Thursday 09/12/2024, 13h30-15h30. Room E001 (Samuel Humeau & Emma Nardino) * Optimisations under SSA form [TP5c](TP05/tp5c.pdf), code in [MiniC/TPoptim/](MiniC/TPoptim/). * Parsing and typechecking functions [TP06a](TP06/tp6a.pdf), code in [MiniC/](MiniC/). * Code generation for functions [TP06b](TP06/tp6b.pdf), code in [MiniC/](MiniC/). * Going Parallel with futures [TPfutures](TPfutures/tpfutures.pdf), code in [TPfutures/MiniC-futures/](TPfutures/MiniC-futures/). - :book: Course: Thursday 12/12/2024, 10h15-12h15. Amphi B (Yannick Zakowski) * Verified Compilation [introduction slides](course/cap_cours11_verified.pdf). * Course on black board * Additional resources: [Xavier Leroy's class at Collège de France](https://www.college-de-france.fr/en/agenda/lecture/mechanized-semantics-when-the-machine-reasons-about-its-languages) # Week 13: - :hammer: Choice Lab (3/3): Monday 16/12/2024, 13h30-15h30. Room E001 (Samuel Humeau & Emma Nardino)