Durée
25h Th, 75h Proj.
Nombre de crédits
Enseignant
Suppléant(s)
Langue(s) de l'unité d'enseignement
Langue anglaise
Organisation et évaluation
Enseignement au deuxième quadrimestre
Horaire
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 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), INFO0016 (Introduction to the theory of computation) 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. 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 plus individuellement, reflétant l'implication personnelle de chaque membre d'un groupe.
- 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.
- 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
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.