2021-2022 / INFO0085-1

Compilers

Durée

25h Th, 75h Proj.

Nombre de crédits

 Master : ingénieur civil en informatique, à finalité5 crédits 
 Master en sciences informatiques, à finalité5 crédits 
 Master en sciences informatiques5 crédits 
 Master en sciences mathématiques, à finalité6 crédits 
 Master en sciences mathématiques6 crédits 

Enseignant

Pascal Fontaine

Langue(s) de l'unité d'enseignement

Langue anglaise

Organisation et évaluation

Enseignement au deuxième quadrimestre

Horaire

Horaire en ligne

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 de l'unité d'enseignement

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) de l'unité d'enseignement

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 un 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), INFO0016 (Introduction to the theory of computation) ou cours équivalents.

Activités d'apprentissage prévues et méthodes d'enseignement

Le cours est donné en anglais. Leçons théoriques et pratiques (relatives au projet) ex-cathedra. 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, à distance, hybride)

Cours en présentiel.

Lectures recommandées ou obligatoires et notes de cours

Les contenus du cours seront disponibles, sur l'espace eCampus du cours, ainsi que les projets et autres informations utiles.

Modalités d'évaluation et critères

Examen(s) en session

Toutes sessions confondues

- En présentiel

évaluation orale

Travail à rendre - rapport


Explications complémentaires:

En première session: les étudiants seront évalués sur la base suivante:


  • Projet: implémentation d'un compilateur complet pour un mini-langage.  Le projet sera divisé en quatre échéances. A chaque échéance, le code source fourni par les étudiants sera testé automatiquement par la plateforme de soumission sur certains tests standardisés. L'évaluation finale du projet se fera sur base des performances aux tests intermédiaires, des rapports intermédiaires, du rapport final, et du code source final. NB: Généralement, la même note est affectée à l'ensemble du groupe. Cependant, dans certains cas particuliers (par exemple, lorsqu'il existe des preuves qu'un membre d'un groupe n'a pas participé suffisamment au projet), la note peut être attribuée individuellement, reflétant l'implication personnelle de chaque membre d'un groupe.
  • Examen oral individuel: 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. Les étudiants auront l'occasion d'améliorer leur compilateur par rapport à la première session.

Stage(s)

Remarques organisationnelles

Les contenus du cours théorique seront disponible sur l'espace eCampus du cours, ainsi que les projets et autres informations utiles.

Contacts

Enseignant: Pascal Fontaine, 04 366 28 75, Pascal.Fontaine@uliege.be Assistant: Cyril Soldani, cyril.soldani@ulg.ac.be

Notes en ligne

Espace du cours
Le matériel et les liens sont disponibles sur l'espace e-Campus du cours.

Page web du cours
Les transparents du cours ainsi que les instructions pour les projets sont disponibles sur cette page web.