6.00 crédits
30.0 h + 30.0 h
Q2
Enseignants
Sadre Ramin;
Langue
d'enseignement
d'enseignement
Thèmes abordés
- Méthodes d'analyse de langages "context-free", méthodes ascendantes et méthodes descendantes. Applications
- Générateurs d'analyseurs lexicaux et syntaxiques
- Sémantique statique et grammaires attribuées
- Méthode de définition de traduction du code source en code cible et génération du code cible
- Machine virtuelle et byte-code (JVM)
- Garbage Collection et gestion mémoire
- Domain Specific Languages (DSL)
Acquis
d'apprentissage
d'apprentissage
A la fin de cette unité d’enseignement, l’étudiant est capable de : | |
1 |
Eu égard au référentiel AA du programme « Master ingénieur civil en informatique », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants :
|
Contenu
Le cours présente la théorie et la pratique de l'implémentation des langages de programmation, et de l'architecture des compilateurs. Nous balayerons les composants standards d'un compilateur, du front-end (analyse lexicale et syntactique) au back-end (émission de code machine, ou interpréteur) en passant par l'analyse statique et les systèmes de types. A terme, les étudiants seront capables de comprendre les tenants et les aboutissants des différentes méthodes d'implémentation de langage en usage aujourd'hui.
Au cours du quadrimestre, les étudiants seront amenés à implémenter leur propre langage de programmation.
Au cours du quadrimestre, les étudiants seront amenés à implémenter leur propre langage de programmation.
Méthodes d'enseignement
Le cours consiste d'une série de présentations pré-enregistrées, ainsi que de sessions de consolidation/cours hebdomadaire ou bimensuelles. Il y aura également des séances de travaux pratique afin de préparer les étudiants au projet.Au cours du quadrimestre, les étudiants devront réaliser le projet, qui consiste à étendre un interpreteur/compilateur pour un language de programmation basique avec de nouveaux paradigmes.
Modes d'évaluation
des acquis des étudiants
des acquis des étudiants
Session de juin :
L'évaluation se compose de deux composantes: Le projet (réalisé en groupe) compte pour 60% de la note finale du cours. Un examen écrit compte pour 40%.
Session d'août :
Si l'étudiant.e n'a pas réussi le cours lors de la première session (c'est-à-dire qu'il/elle n'a pas obtenu au moins 10/20 pour la note finale), il/elle est autorisée à refaire les composantes (projet ou examen ou les deux) de l'évaluation pour lesquelles il/elle n'a pas obtenu au moins 50% des points respectifs. Il/elle conservera les points de la composante qu'il/elle a réussie (le cas échéant). Les mêmes pondérations que lors de la session de juin sont appliquées pour le calcul de la note finale.
Les deux sessions : Le professeur peut demander à un.e étudiant.e de passer un examen oral supplémentaire en complément de l'examen et/ou des activités du projet, dans des cas incluant, mais non limités à, des problèmes techniques, ou des suspicions d'irrégularités.
L'évaluation se compose de deux composantes: Le projet (réalisé en groupe) compte pour 60% de la note finale du cours. Un examen écrit compte pour 40%.
Session d'août :
Si l'étudiant.e n'a pas réussi le cours lors de la première session (c'est-à-dire qu'il/elle n'a pas obtenu au moins 10/20 pour la note finale), il/elle est autorisée à refaire les composantes (projet ou examen ou les deux) de l'évaluation pour lesquelles il/elle n'a pas obtenu au moins 50% des points respectifs. Il/elle conservera les points de la composante qu'il/elle a réussie (le cas échéant). Les mêmes pondérations que lors de la session de juin sont appliquées pour le calcul de la note finale.
Les deux sessions : Le professeur peut demander à un.e étudiant.e de passer un examen oral supplémentaire en complément de l'examen et/ou des activités du projet, dans des cas incluant, mais non limités à, des problèmes techniques, ou des suspicions d'irrégularités.
Autres infos
Préalables :
- LINGI1122 : Méthodes rigoureuses de conception de programmes
- LSINF1121 : langage de programmation de haut niveau, algorithmique et structures de données
- LINGI1101 : Logique et structures discrètes
Ressources
en ligne
en ligne
Teams et/ou Moodle
Bibliographie
Ouvrage(s) recommandé(s) :
- Crafting Interpreters, Bob Nystrom (https://craftinginterpreters.com/)
- How To Create Pragmatic Lightweight Languages, Federico Tomassetti
- Introduction to Compiler Construction in a Java World, Bill Campbell, Swamilyer, Bahar Akbal-Deliba
- Modern Compiler Implementation in Jaav, Andrew W. Appel
Faculté ou entité
en charge
en charge
INFO