Languages and translators

lingi2132  2020-2021  Louvain-la-Neuve

Languages and translators
Due to the COVID-19 crisis, the information below is subject to change, in particular that concerning the teaching mode (presential, distance or in a comodal or hybrid format).
6 credits
30.0 h + 30.0 h
Q2
Teacher(s)
Laurent Nicolas;
Language
English
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)
Aims

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:
  • INFO1.1-3
  • INFO2.2-4
  • INFO5.2, INFO5.4, INFO5.5
  • INFO6.1, INFO6.4
Given the learning outcomes of the "Master [120] in Computer Science" program, this course contributes to the development, acquisition and evaluation of the following learning outcomes:
  • SINF1.M2
  • SINF2.2-4
  • SINF5.2, SINF5.4, SINF5.5
  • SINF6.1, SINF6.4
Given the learning outcomes of the "Master [60] in Computer Science" program, this course contributes to the development, acquisition and evaluation of the following learning outcomes:
  • 1SINF1.M2
  • 1SINF2.2-4
  • 1SINF5.2, 1SINF5.4, 1SINF5.5
  • 1SINF6.1, 1SINF6.4
Students completing successfully this course will be able to
  • explain in a practical way the structure of compilers dealing with algorithmic languages
  • design and implement a compiler for a practical language which solves a interesting problem
  • show the interest of compiling techniques in problem resolving
Students will have developed skills and operational methodology. In particular, they have developed their ability to
  • treat rigorously a problem, justifying and validating each step of a project to be able to rely on it to implement the following one
  • explain in practical terms how a source code (Java) is finally translated into byte-code.
  • explain the enforcement mechanisms byte code by JVM
  • explain memory management during the execution of a program
  • explain how garbage collection mechanisms
 
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.
Teaching methods

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.
Evaluation methods

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).
Other information
Background :
  • LINGI1122 : Program design
  • LSINF1121 : High-level programming language, algorithmics and data structures
  • LINGI1101 : Logic and discrete structures
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
Teaching materials
  • Supports du cours en ligne
Faculty or entity
INFO


Programmes / formations proposant cette unité d'enseignement (UE)

Title of the programme
Sigle
Credits
Prerequisites
Aims
Master [120] in Computer Science and Engineering

Master [120] in Computer Science

Master [60] in Computer Science