Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
cc19:top [2019/08/19 16:59] 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&height=600&wkst=2&bgcolor=%23FFFFFF&src=bknocri186tqu1hmfpdqrs80to%40group.calendar.google.com&color=%232952A3&ctz=Europe%2FZurich|Google Calendar Link]] | * [[https://calendar.google.com/calendar/embed?mode=WEEK&height=600&wkst=2&bgcolor=%23FFFFFF&src=bknocri186tqu1hmfpdqrs80to%40group.calendar.google.com&color=%232952A3&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 complete these free EPFL Courseware courses as soon as possible: | + | Please note the unusual schedule the first week. The second week schedule is more typical. |
- | * [[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]] | + | | 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 ===== | ===== Contact Hours ===== | ||
Line 22: | Line 116: | ||
* 2 x 45min exercises: solve problems | * 2 x 45min exercises: solve problems | ||
* 2 x 45min labs: instructions and help for work on the project | * 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% **Quiz on 27 November 2019** (individual work, paper and pencil) | + | * 50% **Quiz on 27 November 2019, 8am-10am in room CO 3** (individual work, paper and pen) |
- | * 50% Projects: build a compiler in Scala, based on our templates, individual except for the own compiler extension (groups up to 3): | + | * 50% Projects: |
- interpreter | - interpreter | ||
- lexical analyzer | - lexical analyzer | ||
Line 33: | Line 129: | ||
- type checker | - type checker | ||
- code generator | - code generator | ||
- | - your own compiler extension | + | - build and present your own compiler extension |
- | For the project we have an automated grading system and also provide feedback based on manual source code review. | + | 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. |
- | ===== SCHEDULE ===== | ||
- | **First class: Wednesday 18 September at 8:15am in the classroom INF213.** | + | 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]] | ||
- | ==== Week 01, September 16 ==== | + | ===== Reading ===== |
- | Please note the unusual schedule the first week. The second week schedule is more typical. | + | 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]] | ||
- | | Monday | NO CLASSES | | + | We do not strictly follow it: |
- | | Wednesday | Lecture 01 in INF 213 | | + | * we program in Scala instead of Java |
- | | Thursday | Labs 01 in INF 119 (**always bring own laptops**) | | + | * we thus use pattern matching instead of the visitor pattern |
+ | * we use only LL1 parsing using parsing combinators | ||
- | Wikipedia articles: | + | ===== SCHEDULE ===== |
- | * [[wp>Programming language]] | + | |
- | * [[wp>Syntax (programming languages)]] | + | 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 | ||
- | 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. | ||
---- | ---- |