====== Compiler Construction 2011 ====== For latest version see [[http://lara.epfl.ch/w/cc|this page]]. **Quick links: [[http://moodle.epfl.ch/course/view.php?id=4241|Moodle page]] , [[http://larasrv05.epfl.ch/cc11/|Repository server]] , [[Tool Compiler Project]]** ===== General Information ===== Note that: * lectures, exercises, and labs are interchangeable * attendance is strongly recommended in all slots Will follow closely the structure of [[cc10:top|Compiler Construction in 2010]]. [[http://isa.epfl.ch/imoniteur_ISAP/!itffichecours.htm?ww_i_matiere=24092156&ww_x_anneeAcad=2011-2012&ww_i_section=249847&ww_i_niveau=6683117&ww_c_langue=en|Official Calendar]] ===== Staff ===== | **Instructor** | [[http://lara.epfl.ch/~kuncak|Viktor Kuncak]] | | **Practical exercises** | [[http://people.epfl.ch/etienne.kneuss|Etienne Kneuss]] and [[http://lara.epfl.ch/~psuter|Philippe Suter]] | | **Theoretical exercises** | [[http://people.epfl.ch/eva.darulova|Eva Darulova]] and [[http://people.epfl.ch/giuliano.losa|Giuliano Losa]] | | **Assistant-étudiant** | [[http://people.epfl.ch/regis.blanc|Régis Blanc]] | | **Secretary** | [[http://people.epfl.ch/yvette.gallay|Yvette Gallay]] | ===== Course Materials ===== ==== Week 01, September 19 ==== * Wednesday 8:15am: [[Lecture 01]]: Introduction to Compilers (INM 202) * Wednesday 10:15am: [[Labs 01]] (read also: [[Labs setup]]) (INJ 218) ==== Week 02, September 26 ==== * Monday 10:15am: [[Lecture 02]]: Lexical Analyzer by Hand. Regular Expressions and Automata (INM 202) * Wednesday 8:15am: [[Lecture 03]]: Automatic Construction of Lexical Analyzers. Basics of Parsing (INM 202) * Wednesday 10:15am: [[Labs 02]] (INJ 218) * [[Homework 01]]: due 5th October ==== Week 03, October 3 ==== * Monday 10:15am: [[Exercises 01]]: Regular expressions and finite automata (INM 202) * Wednesday 8:15am: [[Lecture 04]] (INM 202) * Wednesday 10:15am: [[Labs 03]] (INJ 218) ==== Week 04, October 10 ==== * Monday 10:15am: [[Lecture 05]]: Parsing (INM 202) * Wednesday 8:15am: [[Labs 04]] (INF 3) * Wednesday 10:15am: [[Exercises 02]] (INJ 218) * [[Homework 02]]: due 17th October ==== Week 05, October 17 ==== * Monday 10:15am: [[Lecture 06]]: CYK Parsing, Chomsky Form and Earley Parsing. Also Exercises (INM 202) * Wednesday 8:15am: [[Labs 05]] (INF 3) * Wednesday 10:15am: [[Lecture 07]]: Earley Parsing. Semantic Actions (INJ 218) * [[Homework 03]]: due 24th October ==== Week 06, October 24 ==== * Monday 10:15am: [[Lecture 08]]: Idea of LR Parsing and Priorities. Symbol Tables * Wednesday 8:15am: [[Labs 06]] (INF 3) * Wednesday 10:15am: Discussion of homework 2 and, if time permits, homework 3 (INJ 218) * [[Homework 04]]: due 31st October ==== Week 07, October 31 ==== * Monday, 10:15am: [[Lecture 09]]: Name Analysis and Type Checking * Wednesday 8:15am: [[Labs 07]] (**INM 202**) * Wednesday 10:15am: Discussion of homework 3 and 4 (INJ 218) * [[Homework 05]]: due 14th November ==== Week 08, November 7 ==== * Monday, 10:15am: Lecture 10: Type Checking and Subtyping * Wednesday 8:15am: Labs in INM 202 * Wednesday, 10:15am: Labs in INJ 218 ==== Week 09, November 14 ==== * Monday, 10:15am: Lecture 11 on Type Soundness. Homework discussion * Wednesday 8:15am: [[Lecture 12]]: Type inference, in INM 202 * Wednesday, 10:15am: Labs in INJ 218 * [[Homework 06]]: due 21st November **This is the last homework.** ==== Week 10, November 21 ==== * Monday, 10:15am: [[Lecture 13]]: Fist (Byte) Code Generation Lecture, in INM 202 * Wednesday, **8:15am: [[Labs 10]], in INM 202** * Wednesday, 10:15am: [[Lecture 14]]: Second (Byte) Code Generation Lecture, in INJ 218 * Friday, midnight: **Deadline** for bidding on [[labs 11|mini-projects]]. {{cc11:jvm_bytecodes.pdf|Here}} is also a list of selected (most relevant) bytecode instructions. ==== Week 11, November 28 ==== * Monday, 10:15am: [[Lecture 15]] Introduction to Program Analysis * Wednesday, 8:15am: [[Labs 11]]: Start working on the mini-project. Discuss it with us. * Wednesday, 11:15am: Exercises: Discussion of Homework 6 ==== Week 12, December 5 ==== * Monday, 10:15am: [[Lecture 16]] on Data-Flow Analysis * Wednesday, 8:15am: Labs: work on mini-projects. come and prepare questions * Wednesday, 10:15am: [[Exercises 03]] on code generation and data-flow analysis (quiz preparation) ==== Week 13, December 12 ==== * Monday, 10:15am: [[Lecture 17]]: Data Mapping including Register Allocation and Liveness * Wednesday, 8:15am - noon: [[Project presentations]] ==== Week 14, December 19 ==== * Monday, 10:15am: Quiz Preparation Exercises * Wednesday, 8:15am: Quiz for no more than 4 hours, INJ218 ===== Upcoming Deadlines ===== {{url>http://lara.epfl.ch/~psuter/cc11calendar.html 800px, 200px, noscroll noborder| Google Calendar}} **End of year quiz will take place on Wednesday, 21 December, at 8:15AM in INJ218.** **All project material is due by 14 January 2012.** Project assignment: Group 1 : Optimizations: Tail-Calls Elimination Group 2 : Generics: Type-Parametric Programming Group 3 : LLVM: Generate LLVM Intermediate Representation Group 4 : Garbage Collection Group 5 : Exceptions Group 6 : Your Own Idea: Dictionaries Group 8 : First-class Functions Group 9 : Liberal Syntax Group 11 : ADTs with Pattern-Matching Group 14 : Type Inference: Write Less Type Annotations **[[http://lara.epfl.ch/w/cc11:final-report|Final report instructions]]** **{{cc11:presentation_template.ppt|Project presentation template}}**