INF889X - Sujets spéciaux en informatique
Ce cours est à contenu variable. Il vise à présenter aux étudiants des sujets de recherche de pointe ou en émergence dans le domaine de l'informatique qui ne sont pas couverts par d'autres cours.
- INF889A - Analyse de programmes pour la sécurité logicielle
- INF889B - Algorithmes d'optimisation combinatoire
- INF889C - Technologies émergentes des services de télécommunication
- INF889D - Usines logicielles à grande échelle
- INF889E - Méthodes d’intelligence artificielle en bioinformatique
- INF889F - Cryptographie appliquée
- INF889G - Vision par ordinateur
- INF889H - Algorithmes en bioinformatique
- INF889J - Fondements pratiques des langages de programmation
INF889A - Analyse de programmes pour la sécurité logicielle
Objectifs
Étudier les vulnérabilités et l'exploitation logicielle en utilisant des techniques et outil axés sur l’analyse de programmes et de langages de programmation.
Sommaire du contenu
Principes et techniques mis en œuvre par les outils de sécurité logicielle et les logiciels malveillants pour l’analyse, la détection, l’exploitation, la protection, etc. de problèmes de sécurité dans les programmes informatiques. Analyse des techniques et des mécanismes impliqués dans les failles logicielles modernes et les contre-mesures proposées par la littérature scientifique et l'industrie. Étude des langages de programmation et des pratiques de développement d'un point de vue de la sécurité.
INF889B - Algorithmes d'optimisation combinatoire
Objectifs
Se familiariser avec les méthodes d'optimisation combinatoire exactes, approximatives et adaptatives. Connaître leurs avantages, leurs limites, être en mesure de les implémenter et d'évaluer leur performance.
Sommaire du contenu
Modélisation d'un problème d'optimisation combinatoire. Optimisation exacte: solution naïve, séparation et évaluation progressive, algorithmes paramétrés. Optimisation convexe: programmes linéaires, algorithme du simplexe, théorie de la dualité, programmation linéaire en nombres entiers. Méthodes approximatives et métaheuristiques: recherche locale, recuit simulé, recherche taboue. Méthodes bio-inspirées: algorithmes évolutionnaires, colonies de fourmis, etc. Optimisation par apprentissage: survol des méthodes d'apprentissage automatique, intégration d'apprentissage dans des algorithmes d'optimisation combinatoire.
INF889C - Technologies émergentes des services de télécommunication
Le cours INF889C est accepté comme un des deux cours à choisir pour la concentration en systèmes électroniques.
Objectifs
Ce cours familiarise les étudiants avec les principes fondamentaux des technologies émergentes telle l’infonuagique, les réseaux définis par logiciel, la virtualisation des fonctions des réseaux et l’internet des objets.
Sommaire du contenu
Approvisionnement des services réseaux émergents. Présentation des principes de base de l’infonuagique. Infrastructures et centres de données. Déploiement des nouvelles applications: Internet des objets, réalité augmentée et Internet tactile. Logicielisation et virtualisation. Découpage virtuel des réseaux nouvelle génération. Placement et réplication des données. Stockage et mise en mémoire cache. Évaluation et optimisation de la qualité de service et la qualité d’expérience.
INF889D - Usines logicielles à grande échelle
Objectifs
Ce cours présente les défis du développement de logiciels de grande envergure et illustre, au travers du paradigme de séparation des préoccupations, comment mettre en pratique des approches de décomposition puis de recomposition automatique pour développer des logiciels de grande envergure produits en masse et hautement configurables. À la fin du cours, les étudiants seront capables de mettre en place une usine logicielle permettant de produire des versions à-la-carte d’un logiciel.
Sommaire du contenu
Séparation des préoccupations. Variabilité logicielle. Configuration Logicielle. Décomposition et recomposition. Langages spécifiques au domaine. Déploiement à la carte. Programmation orientée aspects. Composants et intercepteurs. Étude de cas.
INF889E - Méthodes d’intelligence artificielle en bioinformatique
Le cours INF889E est accepté comme un des deux cours à choisir pour la concentration en intelligence artificielle.
Objectifs
Ce cours vise à présenter aux étudiants les récentes méthodes d’intelligence artificielle en bioinformatique. Il vise aussi à passer en revue les fondements, approches et techniques d’intelligence artificielle utilisée en bioinformatique appliquée à la santé et l’agriculture.
Sommaire du contenu
Introduction aux principales approches d’intelligence artificielle en bioinformatique. Méthodes d’apprentissage à partir des données génomiques. Méthodes d'intégration de données. Acquisition et représentation de connaissances. Méthodes génératives. Méthodes appliquées aux diagnostiques et surveillances des maladies. Approches d’intelligence artificielle en agriculture et sécurité alimentaire.
INF889F - Cryptographie appliquée
Objectifs
Etudier le fonctionnement de la cryptographie moderne, ses usages dans des protocoles variés et des applications actuelles.
Sommaire du contenu
Concepts fondamentaux de la cryptographie. Cryptographie symétrique. Modes d’opération. Cryptographie asymétrique. Fonctions de hachage, codes d’authentification de messages et signatures numériques. Protocoles d’échange de clé, certificats et gestion de clés. Preuves à divulgation nulle. Principes et techniques de la cryptographie homomorphe et ses applications dans le calcul sécurisé sur données chiffrées (infonuagique, retrait d’information privé, calcul d’intersection privé, mémoire oublieuse, obfuscation de programmes, génomique privée, base de données chiffrées).
INF889G - Vision par ordinateur
Le cours INF889G est accepté comme un des deux cours à choisir pour la concentration en intelligence artificielle et pour la concentration en systèmes électroniques.
Objectifs
Ce cours vise à familiariser les étudiants avec les notions théoriques et pratiques en vision par ordinateur (aussi nommé vision artificielle, vision numérique ou vision machine). Cette discipline concerne la conception de systèmes et les techniques informatiques permettant de manipuler des images et vidéos, d’extraire l’information contenue afin de permettre à l’ordinateur de comprendre l’information visuelle. À l’issue de ce cours, les étudiant.e.s devraient :
- Connaître les fondements théoriques et pratiques de la vision par ordinateur
- Savoir implémenter des méthodes et algorithmes liés la vision par ordinateur
- Réaliser un projet simple en vision par ordinateur
Sommaire du contenu
Formation d’images numériques, modélisation de la couleur. Fondements du traitement d’images, filtres linéaires, extraction de caractéristiques et représentation des textures. Géométrie binoculaire et perception de la profondeur (stéréopsie). Inférence de la structure à partir du mouvement, segmentation, méthodes de suivi, recalage, classification, et détection. Autres sujets (selon le temps disponible) : analyse de données de distance, modélisation et synthèse basée sur les images, estimation de pose, recherche et récupération d’images, apprentissage automatique pour la vision ...
INF889H - Algorithmes en bioinformatique
Objectifs
Ce cours vise à présenter les algorithmes fondamentaux de bioinformatique. Il vise aussi à passer en revue les modifications et applications récentes. Aucune connaissance en biologie n'est requise, tout sera expliqué durant le cours.
Sommaire du contenu
Introductions aux algorithmes fondamentaux de bioinformatique. Alignement de séquences. Prédiction et design de structures d’ARN. Échantillonnage de Boltzmann. Prédiction de structures de protéine. Analyses de données de séquençage NGS et nanopore. Réseaux d’interactions entre molécules. Phylogénie et reconstruction ancestrale. Analyses de données de cellules uniques. Diverses applications.
INF889J - Fondements pratiques des langages de programmation
Objectifs
Ce cours présente les concepts fondamentaux des langages de programmation. À la fin de ce cours, les étudiants pourront définir de façon rigoureuse un langage de programmation, ainsi que raisonner à son sujet et démontrer ses propriétés de sûreté. Les étudiants pourront aussi reconnaître et raisonner au sujet de diverses abstractions fondamentales et de pointe offertes par les langages de programmation courants ou spécialisés.
Sommaire du contenu
Syntaxe abstraite, variables liées et portée des variables. Systèmes de typage. Sémantique axiomatique, opérationnelle et dénotationnelle. Propriétés de sûreté. Structures de contrôle telles que les exceptions et les continuations. Récursivité. Polymorphisme. Structures de programmation concurrente et parallèle.