INF7845 - Principes avancés des langages à objets
Session d’automne 2025
Documents
- Horaires
- Plan de cours
- Notes de cours de Roland Ducournau : ancienne version, nouvelle version
- Mon mémoire de thèse : les chapitres 3 et 4 sont pertinents dans le cadre du cours.
- Le site du langage Nit avec le code, la doc et les exemples.
- Le site du langage Pharo avec le code, la doc et les exemples.
Échéancier approximatif
- 3 septembre: Concepts fondamentaux
- 10 septembre: Spécialisation
- 17 septembre: Typage statique
- 24 septembre: Spécialisation multiple, problèmes avancés
- 1 octobre: Laboratoire sur la spécialisation et sous-typage
- 8 octobre: Généricité et typage statique avancé
- 15 octobre: Laboratoire sur la généricité + deadline choix du sujet de recherche
- 22 octobre: Examen
- 29 octobre: Correction examen + présentation d’article
- 5 novembre: méta-programmation + livrable 1 du projet à remettre
- 12 novembre: Laboratoire sur la méta-programmation
- 19 novembre: projet: présentation livrable 2
- 26 novembre: Laboratoire sur le raffinement de classes
- 3 décembre: à déterminer
- 10 décembre: projet: présentation livrable 3
Laboratoires
Dans le cadre du cours, 4 laboratoires notés seront mis en place.
Une connaissance minimale préalable sera demandée (créer des classes, compiler, exécuter). Des connaissances spécifiques seront indiquées environ une semaine avant le début des lab.
- Rappel d’installation et de compilation pour les langages étudiés en lab.
- Lab1: spécialisation et sous-typage: Java (et/ou C#), C++ (et/ou Nit), Python 3 et Ruby. Première partie (à faire à la maison)
- Lab2: généricité: Java, C#, C++, Python3 (et/ou Ruby) et Nit (et/ou Eiffel)
- Lab3: meta: Ruby (ou Python3) et Java (et/ou C#)
- Lab4: raffinement: Nit et Java (et/ou C#)
Présentation d’articles
Une liste d’articles est disponible dans ce répertoire partagé OneDrive. Un article qui n’est pas dans la liste peut être acceptable, demandez au professeur.
- Préparer une présentation orale avec support visuel (diapositives en pdf) + présentation imprimée (3x2)
- 20 minutes + 10 minutes de questions
- Contenu :
- Mise en contexte : année, domaine de la conférence/ du journal
- Problématique générale, état de l’art
- Question de recherche, cadre de la recherche (scope)
- Méthodologie, réalisation, expérimentation
- Validation
- Résultats et discussion
- Limites
Artices choisis et ordre de présentation
- Capabilities for Java: Secure Access to Resources. Hugo Genesse
- Java Typestate Checker. Benjamin Zhang
- Understanding Type script from the share point. Hamidreza Maneshti
- The concept of class invariant in object-oriented programming. Kenza Homce
- Modular Moose: A new generation software reverse engineering environment. Kémo Sané
- Do Developers Benefit from Generic Types? Mehdi Medkour
Travail de session
Sujets choisis
- Programmation parallèle avec des Acteurs. Benjamin Zhang
- Développement d’une mini-bibliothèque en Nit pour la manipulation d’images. Kenza Homce
- Développement de bibliothèque en Pharo. Kémo Sané
- Étude d’un langage de programmation: Kotlin. Mehdi Medkour