Durée
25h Th, 75h Proj.
Nombre de crédits
Enseignant
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 un compilateur pour un langage simple.
Ce cours contribue aux acquis d'apprentissage I.1, I.2, II.1, II.2, III.1, III.3, IV.3, VI.2, VI.3, VII.1, VII.2, VII.3, VII.4, VII.5 du programme d'ingénieur civil en informatique.
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.
- 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.