Staff
Lectures:
Practical Exercises:
Theoretical Exercises on the Board and Exams:
Assistants-Étudiants:
Secretary: Danielle Chamberlain
Schedule
Grading
-
- 20% - homework exercises in the first part of the course
- 25% - continuous-control quiz in the last week of classes
The deadlines for the various steps of the project are set on Moodle.
You should do your homework exercises individually.
Collaboration Policy
You are encouraged to work in groups of 2 people on project
- everyone should understand every part of code
- we may ask you to explain specific parts of your solution
Do not copy solutions from other groups
- we will use plagiarism detection tools
- we may ask you to explain specific parts of your solution
If you have general clarification questions, you can discuss them in the online forum, or set up an appointment with teaching staff.
If you discussed the solution to the labs or homeworks with others, you must explicitly write on top of your report that you did so. In such case, we reserve the right to give you partial credit or verify that you now know how to solve similar problems.
If you do not report your collaboration, this will be considered cheating, a violation of the EPFL honor code, and it can lead to severe consequences for you. EPFL's legal team has experience in dealing with such cases, to ensure that students who do not cheat are treated fairly.
Course Material
Official Textbook: Tiger book although we do not strictly follow it:
- program in Scala instead of Java
- use pattern matching instead of visitors
- use hand-written parsers in the project (not parser generators)
Additional material will be provided on the wiki
- wiki is simple, non-proprietary, linked to WWW
Other useful texts:
- Alfred V. Aho, Jeffrey D. Ullman: Theory of Parsing, Translation and Compiling (in-depth explanations of parsing)
- Parsing Techniques - A Practical Guide (1st edition is online)
- Formal Syntax and Semantics of Programming Languages: A Laboratory-Based Approach by Ken Slonneger and Barry L. Kurtz
Prerequisites
The following courses of their equivalents are prerequisites for this course:
- Discrete structures (CS-150)
- Algorithms (CS-250)
- Theoretical Computer Science (CS-251)
- see Introduction to the Theory of Computation by Michael Sipser if you did not take this course
- if you know Java but not Scala, try these resources
Not required but highly recommended are:
- Advanced Theoretical Computer Science