INF600X - Sujets spéciaux en informatique et génie logiciel

Ce cours à contenu variable vise à permettre d'aborder de nouvelles approches prometteuses en informatique et génie logiciel non couvertes par les autres activités de la banque de cours.

INF600A - Langages de script et langages dynamiques

Description

Le cours vise à introduire les étudiant-e-s à la programmation à l'aide de langages de script et de langages dynamiques.
Principales caractéristiques des langages de script. Introduction à un langage de script de bas niveau : variables, structures de données et de contrôle, définitions et appels de fonction, manipulation de chaînes et pattern-matching.  Introduction à un langage de script de haut niveau : Interprétation, compilation et exécution ; évaluation interactive ; variables, méthodes et typage dynamique ; structures de données (tableaux, chaînes, symboles, hashes) ; structures de contrôle ; définitions et appels de méthodes ; classes et modules ; manipulation de chaînes, expressions régulières et pattern-matching ; lambda-expressions et blocs/fermetures.

Utilisation d'un langage de script pour la coordination de programmes et de tâches (glue langage) ; traitement de données textuelles (pattern matching) ; mise en œuvre de DSL (langages spécifiques au domaine) avec interfaces coulantes. Exemples avancés d'outils et de DSL : cadre de tests unitaires, cadre de tests d'acception, assemblage de logiciels, développement d'applications en lignes de commandes.
Approfondissement d'un langage de script de haut niveau : Métaprogrammation,  extension de classes, méthodes appelées ou créées dynamiquement, appels indirects via des "hooks".

Ce cours comporte une séance de laboratoire (2 heures).

Préalables académiques

  • INF3180 Fichiers et bases de données
  • INF3105 Structures de données et algorithmes

INF600C - Sécurité des logiciels et exploitation de vulnérabilités

Description

Cours d'introduction à l'étude des vulnérabilités et à l'exploitation logicielle. Ce cours présente les concepts théoriques des vulnérabilités logicielles et les mises en oeuvre pratiques de l’exploitation de ces vulnérabilités en faisant appel aux notions de programmation, de système d'exploitation, et d’architecture.

Acquérir les ressources nécessaires à la recherche autonome de vulnérabilités logicielles. Saisir la gravité et l’impact réel des différents types de vulnérabilités logicielles et systèmes. Comprendre le processus d’exploitation logicielle et être en mesure d’accomplir le cheminement complet d’une attaque logicielle (audit de codes, rétro-ingénierie, reconnaissance et exploitation de vulnérabilités). Saisir les interactions possibles entre plusieurs vulnérabilités et les conséquences résultantes sur la sécurité des applications. Être en mesure de conduire une analyse forensique de base sur un système d’information Linux.

Ce cours comporte une séance obligatoire de laboratoire (2 heures).

Préalables académiques

  • INF2170 - Organisation des ordinateurs et assembleur
  • INF3135 - Construction et maintenance de logiciels

INF600D - Introduction à l’apprentissage multi-agent

Description

Ce cours introduit à l'apprentissage multi-agent à l'aide de données et présente les concepts fondamentaux et théoriques de l'apprentissage en environnement certain/incertain.

Bref historique de l’apprentissage multi-agent. Présentation et comparaison des différentes méthodes d'apprentissage. Apprentissage interactif avec/sans modèle prédéfini, sans connaissance des structures et fonctions a priori. Apprentissage co-opétitif (coopératif et compétitif) par équipe ; prise de décision interactive ; meta-apprentissage. Des applications concrètes, par exemple dans l'internet, le transport et la gestion de ressources, seront traitées.

Ce cours comporte une séance obligatoire de laboratoire (2 heures).

Préalables académiques

  • INF3105 - Structures de données et algorithmes

INF600E - Création de langages informatiques

Description

Initier les étudiants à la conception de langages informatiques et à la construction rapide d’interpréteurs et de compilateurs à l’aide d’outils modernes.

Types de langages informatiques (programmation, déclaratif, requête et autres). Structure générale d’un interpréteur et d’un compilateur. Éléments de la théorie des langages. Spécification lexicale à l’aide d’expressions régulières. Ambiguïté lexicale. Spécification syntaxique à l’aide d’une grammaire. Ambiguïté syntaxique et conflit. Utilisation d’un générateur d’analyseurs lexicaux et syntaxiques. Arbres syntaxiques hétérogènes. Interprétation simple par visite d’arbre. Structures de données auxiliaires à l’interprétation telles que le dictionnaire de variables. Analyse sémantique. Interprétation abstraite. Analyse de types d’expressions. Génération de texte à l’aide d'un générateur de générateurs de texte. Techniques et structures de données pour l’interprétation de divers concepts tels que les exceptions, les langages à objets et les fermetures.

Ce cours comporte une séance obligatoire de laboratoire (2 heures).

Préalables académiques

  • INF3105 - Structures de données et algorithmes

INF600F - Traitement d'images

Description

Connaître les algorithmes fondamentaux en traitement et analyse d'images. Comprendre les principes de l'imagerie numérique. Être capable de mettre en place un pipeline de traitement d'images simple à l'aide de bibliothèques existantes.

Introduction à l'imagerie numérique. Notions de base en algèbre linéaire, calcul différentiel et intégral. Acquisition et affichage d'images. Transformations dans le domaine spatial et fréquentiel. Rehaussement et restauration d'images. Morphologie mathématique. Détection de primitives, segmentation, et analyse de texture. Autres sujets (selon le temps disponible): Apprentissage machine appliqué au traitement d'images, classification, détection d'objets, introduction à l'apprentissage profond pour la vision par ordinateur.

Ce cours comporte une séance obligatoire de laboratoire (2 heures).

Préalables académiques

  • INF3105 - Structures de données et algorithmes

INF600G Conception de logiciels adaptés

Objectifs

Connaître et se sensibiliser aux besoins particuliers des utilisateurs ayant des incapacités ou limitations visuelles, motrices ou cognitives. Connaître et appliquer des méthodes issues du génie logiciel et de l'intelligence artificielle pour la conception d’interfaces utilisateur adaptées à ces utilisateurs et de modules logiciels destinés à améliorer leur qualité de vie.

Description

Ce cours vise à introduire aux étudiants les méthodes de génie logiciel permettant la mise en oeuvre d’application informatique prenant compte des handicap potentiels de ses utilisateurs.

Survol des diverses formes d’incapacités ou limitations visuelles, motrices ou cognitives ayant un impact sur la conception de systèmes informatiques. Capture des besoins. Démarche centrée utilisateurs. Adaptation dynamique des interfaces personnes-machines. Gestion des conflits d’exigences. Entretien utilisateurs. Démonstrations contrôlées. Intelligence artificielle support au handicap. Interfaces duales. Sécurité et Vie privée. Présentation de travaux de recherche récents.

Ce cours comporte une séance de laboratoire obligatoire (2h)

Préalables

  • INF3135 - Construction et Maintenance de Logiciels

INF600H - Traitement automatique du langage naturel

Version préliminaire

Objectifs

Ce cours présente des modèles, des techniques et des algorithmes de base pour le traitement automatique du langage naturel (TALN). Le cours abordera l’analyse, l’extraction et la recherche d’information dans des textes écrits en anglais et en français.

Sommaire du contenu

Principes fondamentaux du traitement automatique du langage naturel (TALN). Architecture typique d'une application de TALN. Pré-traitement et normalisation de textes (corpus). Analyse lexicale (tokenisation), lemmatisation, racinisation (stemming). Représentation de texte : sac de mots, n-gramme, TF-IDF, plongements lexicaux (word embeddings). Méthodes pour l’analyse syntaxique et l’analyse sémantique de textes. Techniques de classification, de recherche et d’extraction d’information. Modèle de langage. Modèles de Markov. Applications (ex. : traduction automatique, agents conversationnels, analyse et détection d’émotions, synthèse de résumé de textes, moteurs de recherche, systèmes de recommandation).

Préalables

  • INF3105 - Structures de données et algorithmes
  • MAT4681 - Statistique pour les sciences

Département d'informatique

Le département d'informatique compte près de quarante professeur.e.s qui oeuvrent dans divers domaines, tant en enseignement qu'en recherche. De nos jours, l'informatique occupe une place importante dans notre société. L'informatique est devenue plus accessible par l'abondance de logiciels et de systèmes de plus en plus faciles à utiliser. Ceux-ci sont conçus selon des techniques et des approches variées. Nos professeur.e.s travaillent sur ces techniques et approches au sein de nos unités de recherche et les enseignent à nos étudiant.e.s dans les programmes de premier cycle et de cycles supérieurs.

Suivez-nous

Coordonnées

Département d'informatique
Local PK-4150
201, Avenue du Président-Kennedy
Montréal (Québec) H2X 3Y7