Enseignants
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 : | |
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, ainsi que l'architecture des compilateurs. Nous passerons en revue les composants standards d'un compilateur, du front-end (parsing, analyse lexicale) au back-end (génération de code).
Nous aborderons entre autres :
Nous aborderons entre autres :
- Les scanners/lexers et les expressions régulières
- L'analyse syntaxique et les grammaires non contextuelle
- Type checking
- L'allocation de registres et la génération de code
Méthodes d'enseignement
Le cours consiste en une série de vidéos préenregistrées, de leçons traditionnelles, de séances de questions-réponses et de séances de laboratoire.
Un projet sera réalisé avec plusieurs échéances réparties sur le quadrimestre.
Un projet sera réalisé avec plusieurs échéances réparties sur le quadrimestre.
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.
Concernant l'utilisation de l'IA générative : les étudiants sont autorisés à utiliser des outils d'IA générative pour soutenir leur travail de projet, par exemple pour comparer des approches de solution, trouver des erreurs dans le code ou améliorer la formulation des rapports. Cependant, les soumissions, qu'il s'agisse de code source, de rapports ou d'autres formes, doivent être principalement votre propre travail. Si des outils d'IA générative ont été utilisés, leur nature et leur portée doivent être décrites en détail dans le travail remis (voir les instructions du projet concerné) et seule la partie originale du travail de l'étudiant sera évaluée. Cela s'applique également lorsque l'on s'inspire du travail de tiers, qu'il provienne d'Internet ou d'une autre personne. Le non-respect de ces directives peut entraîner une réduction des notes ou d'autres sanctions académiques.
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.
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.
Concernant l'utilisation de l'IA générative : les étudiants sont autorisés à utiliser des outils d'IA générative pour soutenir leur travail de projet, par exemple pour comparer des approches de solution, trouver des erreurs dans le code ou améliorer la formulation des rapports. Cependant, les soumissions, qu'il s'agisse de code source, de rapports ou d'autres formes, doivent être principalement votre propre travail. Si des outils d'IA générative ont été utilisés, leur nature et leur portée doivent être décrites en détail dans le travail remis (voir les instructions du projet concerné) et seule la partie originale du travail de l'étudiant sera évaluée. Cela s'applique également lorsque l'on s'inspire du travail de tiers, qu'il provienne d'Internet ou d'une autre personne. Le non-respect de ces directives peut entraîner une réduction des notes ou d'autres sanctions académiques.
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
Les étudiants doivent avoir de solides connaissances en programmation dans un langage orienté objet compilé, en algorithmes et structures de données, ainsi qu'en architecture informatique, telles qu'enseignées par exemple dans les cours suivants :
- LEPL1402 et/ou LEPL1509 : Programmation en Java
- LINFO1252 et/ou LINFO2241 : Systèmes informatiques/computer architecture
- LINFO1121 : Algorithmes et structures de données
Ressources
en ligne
en ligne
Teams et/ou Moodle
Faculté ou entité
en charge
en charge