Programme des cours 2015-2016
INFO0085-1  
Compilers
Durée :
25h Th, 75h Proj.
Nombre de crédits :
Master en ingénieur civil en informatique, à finalité 5
Master en sciences informatiques, à finalité5
Master en sciences informatiques5
Master en sciences mathématiques, à finalité6
Master en sciences mathématiques, à finalité6
Nom du professeur :
Pierre Geurts
Langue(s) du cours :
Langue française
Organisation et évaluation :
Enseignement au deuxième quadrimestre
Unités d'enseignement prérequises et corequises :
Les unités prérequises ou corequises sont présentées au sein de chaque programme
Contenus du cours :
Ce cours aborde les aspects pratiques et théoriques liés à la construction de compilateurs. Le cours abordera notamment les sujets suivants:
  • Définition et structure générale d'un compilateur
  • Analyse lexicale: expressions régulières, analyse sur base d'automates finis déterministes et non déterministes, implémentation 
  • Analyse syntaxique: grammaires hors contexte, méthode descendantes et ascendantes d'analyse syntaxique, implémentation
  • Analyse sémantique: concept, traduction dirigée par la syntaxe, vérification de portées et de types, table de symboles
  • Génération de code intermédiaire: choix de représentation, forme SSA, optimisation de code, introduction au langage LLVM
  • Génération de code machine final: sélection d'instructions, allocation de registres, gestion de mémoire, optimisation de code
  • Projet: design et implémenation d'un compilateur complet.
Acquis d'apprentissage (objectifs d'apprentissage) du cours :
Au terme du cours, l'étudiant aura une bonne connaissance théorique et pratique de la structure générale d'un compilateur et sera capable d'implémenter une compilateur pour un langage simple.
Savoirs et compétences prérequis :
Prérequis: INFO2009 (Introduction à l'informatique) et INFO0902 (structures de données et algorithmes), ou cours équivalents.
Activités d'apprentissage prévues et méthodes d'enseignement :
Leçons théoriques et pratiques (relatives au projet) ex-cathedra durant le semestre (8-9 leçons). Projet informatique: Les étudiants conçoivent et développent (par groupe de 2) un compilateur complet pour un mini-langage.
Mode d'enseignement (présentiel ; enseignement à distance) :
Cours en présentiel.
Lectures recommandées ou obligatoires et notes de cours :
Les transparents du cours et instructions pour le projet sont disponibles sur la page web du cours:http://www.montefiore.ulg.ac.be/~geurts/compil.html
Modalités d'évaluation et critères :
En première session: les étudiants seront évalués sur base:
  • Projet: implémentation d'un compilateur complet pour un mini-langage. L'évaluation se fera sur base du rapport remis, du code source du projet et d'un présentation orale du projet devant la classe.
  • Examen oral individual: Cet examen portera sur le compilateur développé dans le cadre du projet et sur la matière du cours théorique. L'objectif de l'examen est de s'assurer que l'étudiant a correctement assimilé les concepts discutés au cours et qu'il a effectivement participé au projet.
En deuxième session:
  • Même modalité qu'en première session. Il n'y a cependant plus de présentation orale du projet devant la classe.
Stage(s) :
Remarques organisationnelles :
Contacts :
Pierre Geurts, Tel: 04/366 48 15, p.geurts@ulg.ac.be Assistant: Cyril Soldani, cyril.soldani@ulg.ac.be
Notes en ligne :
Page web du cours
Les transparents du cours ainsi que les instructions pour les projets sont disponibles sur cette page web.