6.00 credits
30.0 h + 30.0 h
Q2
Teacher(s)
Sadre Ramin;
Language
English
> French-friendly
> French-friendly
Main themes
- 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)
Learning outcomes
At the end of this learning unit, the student is able to : | |
1 |
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:
|
Content
The course presents the theory and practice of programming language implementation, as well as compiler architecture. We will review the standard components of a compiler, from front-end (parsing, lexical analysis) to back-end (machine code generation, or interpreters), also touching on static semantics and type systems. Ultimately, students should be able to understand the ins and outs of the various programming language implementation techniques in use today.
During the course, the students will implement their own programming language.
During the course, the students will implement their own programming language.
Teaching methods
The course consists in a series of pre-recorded video lectures, as well as weekly or bi-weekly consolidation or lecture sessions. There will also be a couple of lab sessions to best prepare the students for the project.
During the semester, students will have to complete the project, which consists of extending a basic programming language interpreter/compiler with new paradigms.
During the semester, students will have to complete the project, which consists of extending a basic programming language interpreter/compiler with new paradigms.
Evaluation methods
June session:
The evaluation consists of two components: The project (done in groups) accounts for 60% of the course's final grade. A written exam accounts for 40%.
August session:
If the student did not successfully pass the course in the first session (i.e., they did not obtained at least 10/20 for the final grade), the student is allowed to redo those components (project or exam or both) of the evaluation for which they did not obtain at least 50% of the respective points. They will keep the points for the component that they passed (if any). The same weights as in the June session are applied for the calculation of the final grade.
Both sessions: The professor may request a student to go through an additional oral exam as a complement of the exam and/or of the project activities, in cases including, but not limited to, technical issues, or suspicion of irregularities.
The evaluation consists of two components: The project (done in groups) accounts for 60% of the course's final grade. A written exam accounts for 40%.
August session:
If the student did not successfully pass the course in the first session (i.e., they did not obtained at least 10/20 for the final grade), the student is allowed to redo those components (project or exam or both) of the evaluation for which they did not obtain at least 50% of the respective points. They will keep the points for the component that they passed (if any). The same weights as in the June session are applied for the calculation of the final grade.
Both sessions: The professor may request a student to go through an additional oral exam as a complement of the exam and/or of the project activities, in cases including, but not limited to, technical issues, or suspicion of irregularities.
Other information
Background :
- LINGI1122 : Program design
- LSINF1121 : High-level programming language, algorithmics and data structures
- LINGI1101 : Logic and discrete structures
Online resources
Teams and/or Moodle
Bibliography
Ouvrage(s) recommandé(s) :
- 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
Faculty or entity
INFO