====== Computer Language Processing ====== CS-320, Edition 2016 [[http://moodle.epfl.ch/course/view.php?id=4241|Moodle Page]] ===== Staff ===== | **Instructor** | [[http://lara.epfl.ch/~kuncak|Viktor Kuncak]] | | **PhD Assistants** | [[http://people.epfl.ch/emmanouil.koukoutos|Manos Koukoutos]] and [[http://people.epfl.ch/ravi.kandhadai|Ravi Kandhadai]] | | **MSc Assistants** | [[http://people.epfl.ch/tristan.overney|Tristan Overney]], [[http://people.epfl.ch/ogier.bouvier|Ogier Bouvier]] and [[http://people.epfl.ch/alfonso.peterssen|Alfonso Peterssen]] | | **Infrastructure advice** | [[http://people.epfl.ch/etienne.kneuss|Etienne Kneuss]] | | **Secretary** | [[https://people.epfl.ch/sylvie.jankow|Sylvie Jankow]] | ===== Grading ===== * 50% Projects * 50% Quiz ===== Stuff: Course Materials ===== **NEW: [[https://drive.google.com/drive/folders/0B1baHKTgzjgETlhvdXNxOFFmZXM|All slides]]** ===== Lab materials ==== [[labs_setup|How to set up you programming environment]] [[tool_compiler_project|The Tool compiler project]] [[tool|The specification of Tool]] [[tool_reference_compiler|The Tool reference compiler]] ==== Week 01, September 19 ==== | Monday 10:15am | NO CLASSES | | Wednesday 8:15am | INF213 | [[https://docs.google.com/presentation/d/1O7OR0d3znlniqtE5mOCrVrpNFcW2GxnwODc_LOcqgI0/edit?usp=sharing|Lecture 01: Introduction]] | | Wednesday 10:15am | INF213 | Labs (**always bring own laptops**) [[Labs setup]] and then [[Labs 01]] | You may also wish to check the [[https://www.youtube.com/watch?v=_C5AHaS1mOA|Gobble Gook]] video, which relates the subtle difference between compilers and interpreters to the familiar everyday situation of landing on an alien planet. ==== Week 02, September 26 ==== | Monday 10:15am | CE1103 | [[https://docs.google.com/presentation/d/1TW-zUVsmp8FXijiOrC4KXEzyVzMgov2pO6RRrleeIQc/edit?usp=sharing|Lecture 02:Regular Languages and Lexical Analysis]] | | Wednesday 8:15am | INF213 | [[labs_02|Labs 02]] and cont. [[labs_01|Labs 01]] | | Wednesday 10:15am | INF213 | [[https://docs.google.com/presentation/d/1KFm43fBmJu42Ialy9jBOEeRVrO19VFlvbBrSK11Pt_o/edit?usp=sharing|Lecture/Exercise 03: Lexical Analysis and Automata]] | ==== Week 03, October 3 ==== | Monday 10:15am | CE1103 |[[ https://docs.google.com/presentation/d/1sZ9GvLYKMkAch4IagY7znlfWgcwWjQIkRjh79p0PRKc/edit?usp=sharing|Lecture/Exercise 04: Lexical Analysis and Automata]] | | Wednesday 8:15am | INF213 | [[labs_02|Labs 02]] (cont.) | | Wednesday 10:15am | INF213 | [[https://docs.google.com/presentation/d/1XcYjG97b72MVUzw4tr_AIHtgHFXXdfbOp3Mui8AFzT8/edit?usp=sharing|Lecture/Exercise 05: Lexers and Grammars]] | **Grammar exercise system:** http://grammar.epfl.ch * try "Derivation for a word" * try "Grammar for a language" (except those mentioning LL(1)) ==== Week 04, October 10 ==== | Monday 10:15am | CE1103 |[[https://docs.google.com/presentation/d/1x5x4qAIcimxB7PEkFlcKmmXnxEFl3dq86Nsj0K20BVY/edit?usp=sharing|Lecture 06: CYK Parsing, Ambiguity, Building Trees]] | | Wednesday 8:15am | INF213 | [[https://docs.google.com/presentation/d/1lths7gxldCml8P9jnHRFanQ2NX9ME8WFgS0aBiFoS64/edit?usp=sharing|Lecture 07: Building Trees. LL(1) Parsing]] | | Wednesday 10:15am | INF213 | [[labs_03|Labs 03]] (Parsing) | In http://grammar.epfl.ch after Monday: * try "Conversion to CNF" * try "CYK parsing" In http://grammar.epfl.ch after Wednesday: * try "Grammar for a language" (those asking LL(1)) * try "Tool Expressions" in grammar.epfl.ch ==== Week 05, October 17 ==== | Monday 10:15am | CE1103 | [[https://docs.google.com/presentation/d/1tm2PVccqCljTCKK3NSl8VyzGGv25kkJRWJii41-obNs/edit?usp=sharing|Lecture 08: Follow Sets. Table-Driven LL(1) Parser. Exercises]] | | Wednesday 8:15am | INF213 | [[labs_03|Labs 03]] (cont.) | | Wednesday 10:15am | INF213 | [[https://drive.google.com/file/d/0B1baHKTgzjgEaERjWlROU2hFZE0/view?usp=sharing|Lecture 09: More Name Analysis. Introduction to Type Checking]] ([[https://drive.google.com/file/d/0B1baHKTgzjgEeXFfclZPMFZ4eTQ/view?usp=sharing|PDF]]) | ==== Week 06, October 24 ==== | Monday 10:15am | CE1103 | [[https://drive.google.com/file/d/0B35mooFNMcGBeGNWSHlma2xueHM/view?usp=sharing|Lecture 10: LL(1) Example and Type Checking Rules (pptx)]] ([[https://drive.google.com/file/d/0B35mooFNMcGBd1I4bjI5T2p5Vkk/view?usp=sharing|PDF]]) | | Wednesday 8:15am | INF213 | [[labs_04|Labs 04]] | | Wednesday 10:15am | INF213 | [[https://drive.google.com/file/d/0B1baHKTgzjgEdkxhZGNUQkl0Rm8/view?usp=sharing|Lecture 11: Subtyping and Soundness]] ([[https://drive.google.com/file/d/0B1baHKTgzjgESGRDMkZueEZaVTg/view?usp=sharing|PDF]]) | ==== Week 07, October 31 ==== | Monday 10:15am | CE1103 | [[https://drive.google.com/file/d/0B1baHKTgzjgEa2FRemYwX3VJNk0/view?usp=sharing|Lecture 12: Type System Soundness and Exercises]] ([[https://drive.google.com/file/d/0B1baHKTgzjgEa3lSYjdUQUQ4TmM/view?usp=sharing|PDF]]) | | Wednesday 8:15am | INF213 | Labs | | Wednesday 10:15am | INF213 | [[https://drive.google.com/file/d/0B1baHKTgzjgEaWZTZFFZU3Y3ZmM/view?usp=sharing|Lecture 13: Code Generation Introduction]] ([[https://drive.google.com/file/d/0B1baHKTgzjgEZU02aktpQ0FhdHM/view?usp=sharing|PDF]]) - short | ==== Week 08, November 07 ==== | Monday 10:15am | CE1103 | [[https://drive.google.com/file/d/0B1baHKTgzjgEa1BucFVGb0ExR1k/view?usp=sharing|Lecture 14: Code Generation: Soundness. Conditionals and Loops]] ([[https://drive.google.com/file/d/0B1baHKTgzjgEM096cGl5ZEZwLTQ/view?usp=sharing|PDF]], [[https://github.com/epfl-lara/leon/blob/master/testcases/verification/compilation/ExprCompiler.scala|Leon proof for soundness]]) | | Wednesday 8:15am | INF213 | [[labs_05|Labs 05: Type checking]] | | Wednesday 10:15am | INF213 | [[https://drive.google.com/file/d/0B1baHKTgzjgEVV9PaUF6SnhRdTA/view?usp=sharing|Lecture 15: Code Generation: Complex Control Flow]] ([[https://drive.google.com/file/d/0B1baHKTgzjgEMndEajRSdWhRSmc/view?usp=sharing|PDF]]) and [[https://drive.google.com/file/d/0B1baHKTgzjgEczNJdkoxbEFUTUk/view?usp=sharing|Lecture 15b: Data-Flow Analysis and Control-Flow Graphs]] ([[https://drive.google.com/file/d/0B1baHKTgzjgEcm45dU5wZVd0QXc/view?usp=sharing|PDF]]) | ==== Week 09, November 14 ==== | Monday 10:15am | CE1103 | [[https://drive.google.com/file/d/0B35mooFNMcGBWlRLYjZOV3R0Q2c/view?usp=sharing|Exercises]] ([[https://drive.google.com/file/d/0B35mooFNMcGBOTN3VUdTMlVudms/view?usp=sharing|PDF]])| | Wednesday 8:15am | INF213 | [[labs_05|Labs 05 (cont.)]] | | Wednesday 10:15am | INF213 | [[https://drive.google.com/file/d/0B35mooFNMcGBZnp3RnppZE01Zm8/view?usp=sharing|Exercises]] ([[https://drive.google.com/file/d/0B35mooFNMcGBd1NodGRacmowcU0/view?usp=sharing|PDF]]) | ==== Week 10, November 21 ==== | Monday 10:15am | CE 1103 | Exercises (Continuation of previous exercise session) | | Wednesday 8.15am-11:55 | INF213 and INM 10 | **QUIZ** | ==== Week 11, November 28 ==== | Monday 10:15am | CE 1103 | [[https://drive.google.com/file/d/0B1baHKTgzjgEWk9rNzdJN1ppcEU/view?usp=sharing|Lecture 16: Range Analysis]] ([[https://drive.google.com/file/d/0B1baHKTgzjgEcGNpa2I5VkVvb1E/view?usp=sharing|PDF]]) - first 23 pages | | Wednesday 8:00am - 10:00 | INF213 | [[labs_06|Labs 06: Code Generation]] | | Wednesday 10:00am - 12:00 | INF213 | Lecture: Finish Range Analysis Slides from Monday (see above) | ==== Week 12, December 5 ==== | Monday 10:15am | CE 1103 | [[https://drive.google.com/file/d/0B35mooFNMcGBeWdpWHJoMG9KcXM/view?usp=sharing|Lecture: Analysis Using Constraint Solving]] ([[https://drive.google.com/file/d/0B35mooFNMcGBZkRlcVNYRE5MeHc/view?usp=sharing|PDF]]) | | Wednesday 8:00am - 10:00 | INF213 | [[labs_07|Final Project assignment]]| | Wednesday 10:00am - 12:00 | INF213 | Work on Final Project, Ask Background Questions | ==== Week 13, December 12 ==== | Monday 10:15am | CE 1103 | [[labs_06|Labs 06]] & [[labs_07|Final Project Phase Labs]] | | Wednesday 8:00am - 12:00 | INF213 | [[labs_06|Labs 06]] & [[labs_07|Final Project Phase Labs]] | ==== Week 14, December 19 ==== | Monday 10:15am | CE 1103 | [[labs_06|Labs 06]] & [[labs_07|Final Project Phase Labs]] | | Wednesday 8:00am - 12:00 | INF213 | Presentations of Final Projects | ---- Last year's edition: [[cc15:top|2015]] ---- [[http://creativecommons.org/licenses/by-sa/2.5/| Attribution-ShareAlike 2.5 Generic (CC BY-SA 2.5) Creative Commons Licence]]