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
cc19:top [2019/08/19 16:40]
vkuncak
cc19:top [2019/12/11 08:17]
georg.schmid
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 12: 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 ====
  
-All assignments will be in Scala. If you do not know Scala, please ​go through the free EPFL Courseware courses:+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 213 |  
 +| 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 ===== 
 + 
 +  * 50% **Quiz on 27 November 2019, 8am-10am in room CO 3** (individual work, paper and pen) 
 +  * 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+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]]   * [[https://​courseware.epfl.ch/​courses/​course-v1:​EPFL+progfun2+2018_T1/​about|Functional Program Design in Scala]]
  
-===== Grading ​=====+===== 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
  
-  * 50% Projects 
-  * 50% Quiz 
  
 ---- ----