- Methods to analyze context-free languages, upstream and downstream methods
- Generators of lexical analyzers and parsers
- Statistical semantics and attributed grammars
- Methods to translate a source code in a target code, and generation of target code
- Machine virtuelle et byte-code (JVM)
- Garbage Collection et gestion mémoire
- Domain Specific Languages (DSL)
At the end of this learning unit, the student is able to :
Given the learning outcomes of the "Master in Computer Science and Engineering" program, this course contributes to the development, acquisition and evaluation of the following learning outcomes:
During the course, the students will implement their own programming language.
Due to the COVID-19 crisis, the information in this section is particularly likely to change.The course consists of a series of lectures, as well as practical lab session to introduce technologies, and/or office hours with teaching assistants. During the teaching period, the students will have to implement their own programming language.
Face-to-face classes as well as remote teaching or a mix of the two methods are possible, depending on the circumstances.
Due to the COVID-19 crisis, the information in this section is particularly likely to change.The major part of the course's evaluation will consist of the aforementioned language implementation project. A written exam is also under consideration, depending on circumstances.
The modalities for the second session will depend on the number of students involved. It may consist of a written exam, oral exam, or a second project.
In case of doubt about the personal work of a student during the project, or in case of a technical issues, the instructor reserves the right to submit students to an additional oral exam, which complements or replaces the grade obtained during the project(s) and exam(s).
- LINGI1122 : Program design
- LSINF1121 : High-level programming language, algorithmics and data structures
- LINGI1101 : Logic and discrete structures
- Crafting Interpreters, Bob Nystrom (https://craftinginterpreters.com/)
- How To Create Pragmatic Lightweight Languages, Federico Tomassetti
- Introduction to Compiler Construction in a Java World, Bill Campbell, Swamilyer, Bahar Akbal-Deliba
- Modern Compiler Implementation in Jaav, Andrew W. Appel
- Supports du cours en ligne