Software Modelling and Design, Model-Driven Engineering, Model-Based Software Development, Model Driven Architecture, Conceptual Modelling, Domain Modelling, Meta-Models, Unified Modeling Language (UML) Profiling, Modelling Behaviour and Interactions, Domain-Specific Modelling Languages, Model Validation and Verification, Model Transformation (e.g., Model to Model (M2M), Model to Text (M2T), Template-Based transformations), Action Specification, Action Languages, Automatic Code Generation.
- Responsable du site: Mohammad Hamdaqa
- Enseignant (éditeur): Nafisa Abdelmutalab Ali Ahmed
- Enseignant (éditeur): Hyacinth Ali
- Enseignant (éditeur): Anum Khattak
Introduction à la sécurité logicielle. Analyse des vulnérabilités, testing de sécurité, stratégies de mitigation. Sécurité multi-niveau des systèmes numériques. Sécuriser la périphérie, sécuriser le logiciel, sécuriser les données (encryption), contrôle d'accès et authentification. Développement de logiciel sécuritaire. Exigences de sécurité, sécurité par conception. Introduction aux DevOps, intégration et déploiement continus, containeurs et microservices. Introduction aux DevSecOps, monitorage et mitigation des menaces dynamiques, automatisation des réponses aux menaces. Systèmes auto-adaptatifs et auto-protecteurs. Analyse des risques des vulnérabilités et des menaces sécuritaires.
- Responsable du site: Nora Boulahia Cuppens
- Enseignant (éditeur): Antoine Boucher
- Enseignant (éditeur): Wiem Tounsi
Rôle des structures discrètes en génie informatique et en génie logiciel. Ensembles et logique de base. Techniques de preuves : règles d'inférence et de déduction. Relations et fonctions. Algorithmes : définition, analyse, récursivité. Théorie des nombres : arithmétique, congruences, application à la cryptographie. Éléments de combinatoire : énumération, permutations et combinaisons. Relations de récurrence. Théorie des graphes. Arbres. Langages et grammaires, automates finis, machines de Turing.
- Responsable du site: Lévis Thériault
- Enseignant (éditeur): Massil Ait Abdeslam
- Enseignant (éditeur): Younes Benabbou
- Enseignant (éditeur): Vincent Brouillard
- Enseignant (éditeur): Mehdi Chekkaf
- Enseignant (éditeur): Sulayman Hosna
- Enseignant (éditeur): Martine Leblanc
- Enseignant (éditeur): Aurel Randolph
Processus du génie logiciel et cycle de vie du logiciel . Phases du cycle de vie du logiciel: analyse, conception, réalisation, test, maintenance et exploitation. Activité d'analyse et de conception dans le processus du génie logiciel : principes, spécifications et méthodes. Méthodes d'analyse et de conception orientée-objet : langages et notation standards, modélisation structurelle, modélisation de comportement et modélisation architecturale. Décomposition en couches logicielles. Patrons de conception.
- Responsable du site: Éric Germain
- Responsable du site: François Guibault
- Enseignant (éditeur): Maxime Aspros
- Enseignant (éditeur): Wajiha Bissola Badirou
- Enseignant (éditeur): Dorine Kim Ngoc Diep Dantrun
- Enseignant (éditeur): Patrick Loic Foalem
- Enseignant (éditeur): Aurel Lucrich Ikama Honey
- Enseignant (éditeur): Martine Leblanc
- Enseignant (éditeur): Nikolay Radoev
- Enseignant (éditeur): Thomas Rouleau
- Enseignant (éditeur): Amélie Simard
Software release engineering process: integration, build, multi-staged testing, deployment, release and operations. Definition and base concepts of mining software repositories. Different types of repositories: version control, bug reports, code review, mailing lists, StackOverflow, project ecosystems, collaboration platforms. Techniques for empirical analysis of repositories: data mining, statistical analysis, natural language processing, source code analysis, qualitative analysis. Integration: configuration management, branching patterns, feature toggles, merge conflicts. Build: maintenance and verification of build, build failures, continuous integration, infrastructure-as-code, software configuration. Multi-staged testing: bug prediction, test selection, continuous testing. Deployment/release: large-scale distributions, deployment/release strategies, source code provenance, app stores. Operations: log analysis, rollback.
- Responsable du site: Véronique Dubé
- Responsable du site: Zohreh Sharafi
- Enseignant (éditeur): Mahta Amini
- Enseignant (éditeur): Mireille Amoussouvi
- Enseignant (éditeur): Maryse Gosselin
- Enseignant (éditeur): Heng Li

Modern software DevOps process. State-of-the-art DevOps research. Methods for conducting and reporting research. Concepts and techniques of DevOps monitoring: logging, tracing, and performance monitoring. Concepts and techniques of DevOps data analytics: static analysis, dynamic analysis, statistical analysis, data mining. Applications of DevOps data analytics: log analytics, performance analytics, anomaly detection, failure diagnosis, incident prediction, security analytics, system configuration, and self-adaptive and self-healing systems. DevOps for machine learning applications.
- Responsable du site: Heng Li
Caractéristiques des logiciels pour le Web. Notions de client, de serveur et de logiciels distribués. Conception d'applications Web pour la génération dynamique de contenu et la gestion d'interactions avec les utilisateurs. Structure d'un document HTML (HyperText Markup Language). Mise en forme d'un document HTML par l'utilisation de CSS (Cascading Style Sheet). Programmation du côté client et du côté serveur. Présentation générale de l'architecture du web et du protocole HTTP (HyperText Transfer Protocol). Approches à la vérification: stratégie et planification des tests, évaluation de tests. Tests unitaires et tests d'intégration. Tests à boîte noire, vérification fonctionnelle d'une application et tests d'acceptation.
- Responsable du site: Nikolay Radoev
- Enseignant (éditeur): Kamel Daoudi
- Enseignant (éditeur): Justin Lachapelle
- Enseignant (éditeur): Mehdi Lahlou
- Enseignant (éditeur): Lizbeth Meneses Flores
- Enseignant (éditeur): Antoine Poellhuber
- Enseignant (éditeur): Emilio Rivera

Basic concepts and definitions relevant to software quality, quality assurance, tests, quality engineering and quality planning. Anomaly prevention and fault classification. Fault tolerance. Software reliability engineering. Quality models. Comparison of different quality assurance techniques. Improvement of the software development process. Measuring the software and its processes. Identification of risks for the quantifiable improvement of quality.
- Responsable du site: Heng Li
- Enseignant (éditeur): Roozbeh Aghili
- Enseignant (éditeur): Roozbeh Aghili
- Enseignant (éditeur): Bhagya Chembakottu
- Enseignant (éditeur): Rhouma Naceur
- Enseignant (éditeur): Bentley Oakes

Réalisme des personnages en intelligence artificielle. Conception de règles de jeu. Sensibilisation à l'utilisation de la physique dans un jeu pour mieux percevoir et agir sur son environnement: intégration de bibliothèque de physique du jeu vidéo, lancer de rayon, cinématique inverse, voxelisation. Sensibilisation à l'animation : vallée dérangeante, animation faciale. Sensibilisation à la génération de contenu procédural: algorithmes génératifs pour la voix, les animations, les niveaux, les personnages, les situations rencontrées, ainsi que le contrôle dynamique et personnalisé de la difficulté du jeu. Navigation. Boucles de perception, de décision et d'action. Systèmes complexes et efficacité.
- Responsable du site: Olivier Gendreau
- Enseignant (éditeur): Daryl Barampanze
- Enseignant (éditeur): Pierre Falticska
- Enseignant (éditeur): Pierre Jean Falticska
- Enseignant (éditeur): Lizbeth Meneses Flores
- Enseignant (éditeur): Sébastien Pausé
Historique des jeux vidéo. Types de jeux vidéo. Rôles impliqués dans la création de jeux vidéo. Conception de jeux : apprentissage, plaisir, document de conception de jeu vidéo. Personnage, caméra et contrôle. Règles et mécaniques de jeu : jeux d'émergence et jeux de progression, économie interne, mécanismes de progression, structures de rétroaction, patrons de conception, incitatifs, monétisation. Conception de niveaux. Interface utilisateur. Notions de jeux multijoueurs. Assurance qualité. Production et communauté.
- Responsable du site: Olivier Gendreau
- Enseignant (éditeur): Jean Pierre David
- Enseignant (éditeur): Hugo Foucrit
- Enseignant (éditeur): Lizbeth Meneses Flores
- Enseignant (éditeur): Simon Roy-Thibault
Importance de la validation et de la vérification dans le processus du génie logiciel. Méthodes de test et de validation. Classification des méthodes. Rappel des méthodes de test structurel. Méthodes de test fonctionnel. Génération de tests pour automates finis. Stratégies de tests d'intégration et d'installation pour programmation procédurale et orientée objet. Approches statistiques en validation et en vérification. Méthodes du développement pour assurer la fiabilité. Planification des activités de test du logiciel.
- Responsable du site: Giuliano Antoniol
- Responsable du site: Véronique Dubé
- Responsable du site: Maxime Lamothe
- Enseignant (éditeur): Altaf Allah Abbassi
- Enseignant (éditeur): Mireille Amoussouvi
- Enseignant (éditeur): Daryl Barampanze
- Enseignant (éditeur): Daryl Barampanze
- Enseignant (éditeur): Anas Bouziane
- Enseignant (éditeur): Coralie Brodeur
- Enseignant (éditeur): Coralie Brodeur
- Enseignant (éditeur): Patrick Loic Foalem
- Enseignant (éditeur): Éric Germain

Introduction à l'analyse de programmes en langages évolués, aux grammaires et aux langages. Analyse structurelle : analyse syntaxique, arbre d'appels des procédures et graphes de flux de contrôle. Introduction et fondements théoriques en analyse statique de flux : théorie des graphes et algorithmes, ordre partiel, treillis, analyse de flux. Analyses élémentaires : définitions, variables vives, expressions disponibles, propagation de copies, initialisation des variables et paramètres, détection des instructions inaccessibles ou inutiles, vérification de l'utilisation efficace des variables, propagation des constantes, analyse des pointeurs ou des alias, analyse des dépendances et analyse d'impact en maintenance du logiciel. Analyse dynamique : instrumentation des programmes, tests à boîte blanche, évaluation des performances.
- Responsable du site: Ettore Merlo
- Enseignant (éditeur): Sara Beddouch
- Enseignant (éditeur): Esther Guerrier
- Enseignant (éditeur): Quentin Guidée
- Enseignant (éditeur): Hakim Mektoub
- Enseignant (éditeur): Lizbeth Meneses Flores
- Enseignant (éditeur): Doriane Olewicki
- Enseignant (éditeur): Doriane Olewicki
- Enseignant (éditeur): Raphaël Tremblay
Conception et réalisation en équipe d'un produit logiciel nécessitant l'application de notions et de méthodes acquises préalablement dans le programme de génie logiciel. Les étudiants auront recours à une méthodologie de conception et de gestion nécessaire pour la réalisation d'un produit logiciel. Une attention particulière sera accordée à l'assurance qualité. Pour chacune des étapes, l'étudiant utilisera les outils logiciels appropriés. L'étudiant mettra en pratique un processus structuré de GL tel que UPEDU (Unified Process for Education) et utilisera quelques pratiques des méthodes Agiles.
- Responsable du site: Olivier Gendreau
- Enseignant (éditeur): Lizbeth Meneses Flores
- Enseignant (éditeur): Alejandro Quintero
Conception, réalisation, validation et test d'une application Web. Concepts techniques intégrés : notions de base en infographie, interfaces utilisateur, structures de données et algorithmes, programmation orientée objet, patrons de conception, révision de code, intégration continue, tests de logiciel. Concepts techniques enseignés: gestion de projet logiciel, services web, approche agile. Travaux en équipe.
- Responsable du site: Olivier Gendreau
- Enseignant (éditeur): Daniel Aloise
- Enseignant (éditeur): Michel Gagnon
- Enseignant (éditeur): Olivier Gendreau
- Enseignant (éditeur): Lizbeth Meneses Flores
- Enseignant (éditeur): Nikolay Radoev
- Enseignant (éditeur): Laurent Tremblay
Évolution et maintenance d'un système logiciel. Ce cours-projet intègre les connaissances acquises en ingénierie des exigences, en analyse et conception et en validation et test de logiciel. Il met en pratique les notions acquises sur le processus de développement du logiciel. Tous les travaux sont réalisés en équipe.
- Responsable du site: Olivier Gendreau
- Enseignant (éditeur): Éric Germain
- Enseignant (éditeur): Lizbeth Meneses Flores
- Enseignant (éditeur): Alejandro Quintero
- Enseignant (éditeur): Nikolay Radoev
- Enseignant (éditeur): Laurent Tremblay

- Responsable du site: Michel Desmarais
- Enseignant (éditeur): Jimmy Bell
- Enseignant (éditeur): Coralie Brodeur
- Enseignant (éditeur): Victoria-Mae Carrière
- Enseignant (éditeur): Mehdi Lahlou
- Enseignant (éditeur): Lizbeth Meneses Flores
- Enseignant (éditeur): Zoé Paradis
Tendances en réalité virtuelle, en réalité augmentée et en réalité mixte. Cycle de développement logiciel en réalité étendue. Techniques de conception en réalité étendue. Caméra et contrôle. Applications en réalité virtuelle. Applications en réalité augmentée. Usages de la réalité étendue.
- Responsable du site: Olivier Gendreau
- Enseignant (éditeur): Maïa-Soleil Chartray
- Enseignant (éditeur): Lizbeth Meneses Flores