LARA

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
cc19:top [2019/08/16 14:04]
vkuncak
cc19:top [2019/12/09 12:17]
vkuncak [Week 13, December 9]
Line 2: Line 2:
  
 CS-320, Edition 2019 CS-320, Edition 2019
 + 
   * [[http://​moodle.epfl.ch/​course/​view.php?​id=4241|Moodle Page]]   * [[http://​moodle.epfl.ch/​course/​view.php?​id=4241|Moodle Page]]
   *  [[https://​calendar.google.com/​calendar/​embed?​mode=WEEK&​amp;​height=600&​amp;​wkst=2&​amp;​bgcolor=%23FFFFFF&​amp;​src=bknocri186tqu1hmfpdqrs80to%40group.calendar.google.com&​amp;​color=%232952A3&​amp;​ctz=Europe%2FZurich|Google Calendar Link]]   *  [[https://​calendar.google.com/​calendar/​embed?​mode=WEEK&​amp;​height=600&​amp;​wkst=2&​amp;​bgcolor=%23FFFFFF&​amp;​src=bknocri186tqu1hmfpdqrs80to%40group.calendar.google.com&​amp;​color=%232952A3&​amp;​ctz=Europe%2FZurich|Google Calendar Link]]
 +  * [[https://​edu.epfl.ch/​coursebook/​en/​computer-language-processing-CS-320|Coursebook]]
  
 ===== Staff ===== ===== Staff =====
Line 13: Line 13:
 | **MSc Assistants** | Julie Giunta, Maxime Kjaer, Louis Vialar, Rémi Coudert | | **MSc Assistants** | Julie Giunta, Maxime Kjaer, Louis Vialar, Rémi Coudert |
 | **Secretary** ​             | [[http://​people.epfl.ch/​sylvie.jankow|Sylvie Jankow]] ​ | | **Secretary** ​             | [[http://​people.epfl.ch/​sylvie.jankow|Sylvie Jankow]] ​ |
 + 
 +==== Week 01, September 16 ====
  
 +Please note the unusual schedule the first week. The second week schedule is more typical.
 +
 +| Monday ​        | NO CLASSES |
 +| Wednesday ​  | Lecture 01 in INF 213. {{lec01.pdf |Lecture 01 Slides}} and {{lecture01-examples.zip|Scala definitions}} | 
 +| Thursday ​      | [[Labs Setup]] and [[Labs 01]] in INF 119 (**always bring own laptops**) | 
 +
 +Wikipedia articles:
 +  * [[wp>​Programming language]]
 +  * [[wp>​Syntax (programming languages)]]
 +
 +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 23 ====
 +
 +We will generally have exercises on Wednesdays and labs on Thursdays, but please always check the schedule here for up to date information.
 +
 +| Monday ​        | {{lec02.pdf|Lecture 02 in CE1 100}} and {{lecture02-examples.zip|Scala definitions}} ​ |
 +| Wednesday ​  | {{exercise_session_1.pdf|Exercises 01}} in in INF 213. ({{exercise_session_1_solutions.pdf|Solutions}}) | 
 +| Thursday ​      | [[Labs 01]] and [[Labs 02]] in INF 119 | 
 +
 +==== Week 03, September 30 ====
 +
 +| Monday ​        | Lecture 03 in CE1 100: {{lec03-automata.pdf|automata}} (also {{lec03-as-given.pdf|with annotations}}) |
 +| Wednesday ​  | Exercises 02 in in INF 213: {{exercise_session_2.pdf|Exercise sheet}} ({{exercise_session_2_solutions.pdf|Solutions}}) and  {{exes02.pdf|slides}} | 
 +| Thursday ​      | [[Labs 02]] in INF 119 | 
 +
 +==== Week 04, October 7 ====
 + 
 +| Monday ​        | Lecture 04 in CE1 100: {{lec04-grammars.pdf|Context-Free Grammars}} ({{lec04-grammars-annot.pdf|with annotations}}) |
 +| Wednesday ​  | Exercises 03 in INF 213: {{exercise_session_3.pdf|Exercise sheet}} ({{exercise_session_3_solutions.pdf|Solutions}},​ updated 26.11) and {{exercise_session_3_slides.pdf|slides}} | 
 +| Thursday ​      | [[Labs 03]] in INF 119 | 
 +
 +==== Week 05, October 14 ====
 + 
 +| Monday ​        | Lecture 05 in CE1 100: {{lec05-cyk-cnf.pdf|Parsing General Grammars}} (also {{lec05-cyk-cnf-annot.pdf|with annotations}}) ​ |
 +| Wednesday ​  | Exercises 04 in INF 213: {{exercise_session_4.pdf|Exercise sheet}} ({{exercise_session_4_solutions.pdf|Solutions}}) (see also {{http://​grammar.epfl.ch|grammar.epfl.ch}}) | 
 +| Thursday ​      | [[Labs 03]] in INF 119 | 
 +
 +==== Week 06, October 21 ====
 + 
 +| Monday ​        | Lecture 06 in CE1 100: {{lec06-name-type.pdf|Name Analysis and Intro to Type Checking}} ​ |
 +| Wednesday ​  | Exercises 05 in INF 213: {{exercise_session_5.pdf|Exercise sheet}} ({{exercise_session_5_solutions.pdf|Solutions}}) | 
 +| Thursday ​      | [[Labs 04]] in INF 119 | 
 +
 +==== Week 07, October 28 ====
 + 
 +| Monday ​        | Lecture 07 in CE1 100: {{lec07-type-soundness.pdf|Type Soundness}} |
 +| Wednesday ​  | Exercises 06 in INF 213: {{exercise_session_6.pdf|Exercise sheet}} ({{exercise_session_6_solutions.pdf|Solutions}}) | 
 +| Thursday ​      | [[Labs 04]] in INF 119 | 
 +
 +==== Week 08, November 4 ====
 + 
 +| Monday ​        | Lecture 08 in CE1 100: {{lecture08-inference.pdf|Type Inference}} and {{lecture08-codegen1.pdf|Code Generation Part 1}} |
 +| Wednesday ​  | Exercises 07 in INF 213: {{exercise_session_7.pdf|Exercise sheet}} ({{exercise_session_7_solutions.pdf|Solutions}}) | 
 +| Thursday ​      | [[Labs 05]] in INF 119 | 
 +
 +==== Week 09, November 11 ====
 + 
 +| Monday ​        | Lecture 09 in CE1 100: {{lecture09-codegen2.pdf|Compiling Expressions}},​ {{lecture09-codegen3.pdf|Compiling Control}} |
 +| Wednesday ​  | Exercises 08 in INF 213: {{exercise_session_8.pdf|Exercise sheet}} ({{exercise_session_8_solutions.pdf|Solutions}}) | 
 +| Thursday ​      | [[Labs 05]] in INF 119 | 
 +
 +==== Week 10, November 18 ====
 + 
 +| Monday ​        | Lecture 10 in CE1 100: {{lecture10.pdf|Compilation with Jump Destinations. Registers}} |
 +| Wednesday ​  | Exercises 09 in INF 213: {{exercise_session_9.pdf|Exercise sheet}} | 
 +| Thursday ​      | [[Labs 05]] and [[Labs 06]] in INF 119 | 
 +
 +==== Week 11, November 25 ====
 + 
 +| Monday ​        | Exercises: discussion of {{clp2017-quiz.pdf|Quiz 2017}} ({{clp2017-solutions.pdf|solutions}}) and {{clp2018-quiz.pdf|Quiz 2018}} ({{clp2018-solutions.pdf|solutions}}) ​ |
 +| Wednesday (27.11) ​  | **Quiz 8am-10am in room CO 3**: {{clp2019-solutions.pdf|Solutions}} | 
 +| Thursday ​      | [[Labs 06]] and [[Labs 07]] (if time permits) in INF 119 | 
 +
 +==== Week 12, December 2 ====
 + 
 +| Monday ​        ​| ​ {{lecture11-annotated.pdf|Lecture:​ Dataflow Analysis Part 1}} |
 +| Wednesday ​  | Quiz Solutions in INF 213 | 
 +| Thursday ​      | [[Labs 07]] in INF 119 | 
 +
 +==== Week 13, December 9 ====
 +
 +| Monday ​        | {{lecture12.pdf|Lecture 12: Initialization and Liveness Analysis. Overview of High-Level Features}} |
 +| Wednesday ​  | [[Labs 07]] in INF 119 | 
 +| Thursday ​      | [[Labs 07]] in INF 119 | 
 +
 +==== Week 14, December 17 ====
 +
 +| Monday ​        | Extension Project Presentations 1 |
 +| Wednesday ​  | Extension Project Presentations 2 |
 +| Thursday ​      | Extension Project Presentations 3 |
 +
 +----
 +----
 +
 +===== Contact Hours =====
 +
 +  * 2 x 45min lectures: theoretical material
 +  * 2 x 45min exercises: solve problems
 +  * 2 x 45min labs: instructions and help for work on the project
 +
 +Post any remaining questions on Moodle forum (see link on top of the page); ask us for office hours when needed.
  
 ===== Grading ===== ===== Grading =====
  
-  * 50% Projects +  * 50% **Quiz on 27 November 2019, 8am-10am in room CO 3** (individual work, paper and pen) 
-  * 50% Quiz+  * 50% Projects:  
 +    - interpreter 
 +    - lexical analyzer 
 +    - syntax analyzer 
 +    - name analyzer 
 +    - type checker 
 +    - code generator 
 +    - build and present your own compiler extension 
 + 
 +For the project you build a compiler in Scala, based on our templates. The first six parts are done individually and are worth 6.25% whereas the final part (own compiler extension) is done in groups of up to 3 students and is worth 12.5% (the scope of the last projects is four times the others, since it is worth double and done in a group). We have an automated grading system and also provide feedback based on manual source code review. 
 + 
 + 
 +All project assignments will be in Scala. If you do not know Scala, please complete these free EPFL Courseware courses as soon as possible: 
 +  * [[https://​courseware.epfl.ch/​courses/​course-v1:​EPFL+progfun1+2018_T1/​about|Functional Programming Principles in Scala]]  
 +  * [[https://​courseware.epfl.ch/​courses/​course-v1:​EPFL+progfun2+2018_T1/​about|Functional Program Design in Scala]] 
 + 
 +===== Reading ===== 
 + 
 +A useful textbook for this course: **Andrew W. Appel, Jens Palsberg: 
 +Modern Compiler Implementation in Java 
 +(2nd Edition). Cambridge University Press, 2002**, 
 +[[https://​beast-epfl.hosted.exlibrisgroup.com/​primo-explore/​fulldisplay?​docid=TN_dawson9780511562037&​context=PC&​vid=EPFL&​lang=fr_FR&​search_scope=all_blended&​adaptor=primo_central_multiple_fe&​tab=all_tab&​query=any,​contains,​Andrew%20W.%20Appel,​%20Jens%20Palsberg:​%20Modern%20Compiler%20Implementation%20in%20Java%20(2nd%20Edition).%20Cambridge%20University%20Press,​%202002&​offset=0|available through EPFL library]] 
 + 
 +We do not strictly follow it: 
 +  * we program in Scala instead of Java 
 +  * we thus use pattern matching instead of the visitor pattern 
 +  * we use only LL1 parsing using parsing combinators 
 + 
 +===== SCHEDULE ===== 
 + 
 +The typical week schedule is: 
 + 
 +  * **Monday from 13:15 to 15:00**: Lecture in CE1100 
 +  * **Wednesday from 8:15 to 10:00**: Exercises in INF213 
 +  * **Thurday from 8:15 to 10:00**: Labs in INF119 
  
 ---- ----