Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
cc19:top [2019/06/19 12:24] vkuncak |
cc19:top [2019/11/26 07:34] romain [Week 04, October 7] |
||
---|---|---|---|
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 11: | ||
| **Instructor** | [[http://lara.epfl.ch/~kuncak|Viktor Kunčak]] | | | **Instructor** | [[http://lara.epfl.ch/~kuncak|Viktor Kunčak]] | | ||
| **PhD Assistants** | [[https://people.epfl.ch/georg.schmid|Georg S. Schmid]] and [[https://people.epfl.ch/romain.edelmann|Romain Edelmann]]| | | **PhD Assistants** | [[https://people.epfl.ch/georg.schmid|Georg S. Schmid]] and [[https://people.epfl.ch/romain.edelmann|Romain Edelmann]]| | ||
- | | **MSc Assistants** | TBC | | + | | **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** | | ||
+ | | Thursday | [[Labs 06]] in INF 119 | | ||
+ | |||
+ | ---- | ||
+ | ---- | ||
+ | |||
+ | ===== 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 | ||
---- | ---- |