Study Programmes 2017-2018
WARNING : 2016-2017 version of the course specifications
Duration :
25h Th, 75h Proj.
Number of credits :
Master of science in computer science and engineering (120 ECTS)5
Master in computer science (120 ECTS)5
Master in computer science (60 ECTS)5
Master in mathematics (120 ECTS)6
Lecturer :
Pierre Geurts
Language(s) of instruction :
English language
Organisation and examination :
Teaching in the second semester
Units courses prerequisite and corequisite :
Prerequisite or corequisite units are presented within each program
Learning unit contents :
This course addresses the practical and theoretical aspects of compiler construction. The course will include the following topics:
  • Definition and general structure of a compiler
  • Lexical analysis: regular expressions, analysis based on deterministic and non deterministic finite automata, implementation 
  • Syntax analysis: context-free grammar, top-down and bottom-up parsing, implementation
  • Semantic analysis: concept, syntax-directed translation, scope and type checking, symbol table
  • Intermediate code generation: intermediate representations, SSA form, code optimization, introduction to LLVM
  • Final code generation: instruction selection, register allocation, memory management, code optimization
  • Practicals : design and implementation of a complete compiler
Learning outcomes of the learning unit :
At the end of the course, the student will have a good theoretical and practical knowledge of the general structure of a compiler and will be able to implement from scratch a compiler for a simple language.
Prerequisite knowledge and skills :
Prerequisites: INFO2009 (Introduction to computer science) and INFO0902 (data structures and algorithms), or similar courses.
Planned learning activities and teaching methods :
Ex-cathedra lectures on the theory as well as on the more practical aspects (related to the project). During the semester, about 8-9 lectures in total. Project: The students (by groups of two) design and implement a complete compiler for a mini-language.
Mode of delivery (face-to-face ; distance-learning) :
Recommended or required readings :
Lecture slides and instructions for the project are available on the course website:
Assessment methods and criteria :
First session: the students will be evaluated on the basis of:
  • The practical assignment: the implementation of a compiler for a mini-language. The evaluation of the assignment will be based on a written report, the source code, and an oral presentation of the project in front of the class.
  • Individual oral exam: This exam will focus on the compiler developed during the assignment and on the lecture material. The objective of the oral exam is to ensure that the student has correctly assimilated the concepts discussed during the lectures and that he participated to the practical assignment.
Second session:
  • As in the first session. An oral presentation of the practical assignment will however not be organized in the second session.
Work placement(s) :
Organizational remarks :
Contacts :
Pierre Geurts, Tel: 04/366 48 15, Assistant: Cyril Soldani,
Items online :
Course web page
Lecture slides and instructions for the project are available on this web page.