The following courses are offered by the Faculty of Engineering.
SEG 2105 Introduction to Software Engineering (3 units)
Principles of software engineering: Requirements, design and testing. Review of principles of object orientation. Object oriented analysis using UML. Frameworks and APIs. Introduction to the client-server architecture. Analysis, design and programming of simple servers and clients. Introduction to user interface technology.
Course Component: Laboratory, Lecture, Tutorial
Prerequisite: ITI 1121.
SEG 2106 Software Construction (3 units)
General principles and techniques for disciplined low-level software design. BNF and basic theory of grammars and parsing. Use of parser generators. Basics of language and protocol design. Formal languages. State-transition and table-based software design. Formal methods for software construction. Techniques for handling concurrency and inter-process communication. Tools for model-driven construction. Introduction to Middleware. Hot-spot analysis and performance tuning.
Course Component: Laboratory, Lecture
SEG 2505 Introduction au génie logiciel (3 crédits)
Les principes du génie logiciel : Requis, conception et tests. Revue des principes de l'orientation objet. Analyse orienté objet avec UML, des cadres de conception et des interfaces. Introduction à l'architecture client-serveur. Analyse, conception et programmation de clients et serveurs simples. Introduction à la technologie des interfaces utilisateurs.
Volet : Laboratoire, Cours magistral, Tutoriel
Préalable : ITI 1521.
SEG 2506 Construction de logiciels (3 crédits)
Principes généraux et techniques pour la conception logicielle de bas niveau. BNF et théorie de base des grammaires et de l'analyse syntaxique. Utilisation de générateurs d'analyseurs syntaxiques. Fondements de la conception de langages et de protocoles. Langages formels. Conception à base de tableaux et de transitions d états. Méthodes formelles pour la construction de logiciels. Techniques de gestion du parallélisme et de la communication interprocessus. Outils pour la construction guidée par modèle. Introduction aux couches intergicielles. Analyse de points chauds et mise au point de la performance.
Volet : Laboratoire, Cours magistral
SEG 2900 Communication et responsabilité professionnelle / Professional Communication and Responsibility (3 crédits / 3 units)
Une introduction aux responsabilités des ingénieurs logiciels à leur employeur, à leur profession et à la sécurité publique, en mettant l'accent sur le développement des compétences en communication orale et écrite. Présentations orales, rédaction de rapports techniques, des lettres commerciales, des pages Web, et les directives de sécurité. Introduction à la gestion de code source et de contrôle de version. / An introduction to the responsibilities of software engineers to their employer, their profession and public safety, with emphasis on the development of skills in oral and written communication. Practice presentations and writing technical reports, business letters, web pages, and safety guidelines. Introduction to source code management and version control.
Volet / Course Component: Cours magistral / Lecture, Tutoriel / Tutorial
ITI 1520, FRA 1528 sont concomitants à SEG 2900. Réservé aux étudiants et étudiantes inscrits au Baccalauréat en génie logiciel. / ITI 1120, ENG 1112 are corequisite to SEG 2900. Course reserved for students registered in the Software Engineering Program.
SEG 2901 Stage de travail I / Work Term I (3 crédits / 3 units)
Un stage rémunéré en milieu de travail d'une durée d'un trimestre comportant des responsabilités et de l'expérience en génie logiciel de niveau de base, supervisé quotidiennement par un employeur. Évaluations formelles à mi-parcours et à la fin du stage avec l'employeur. Les étudiants rédigent un rapport de stage de nature technique, conforme aux directives du programme. / A paid, full-semester internship with responsibilities and experience related to software engineering at a basic level, with daily supervision and guidance by an employer. Formal mid-term and end-term review and evaluation with employer. Students complete a written technical report, conforming to program guidelines, on the internship.
Volet / Course Component: Stage / Work Term
Préalable : SEG 2900, ITI 1520, FRA 1528. / Prerequisite: ENG 1112, ITI 1120, SEG 2900.
SEG 2911 Pratique de la profession d'ingénieur logiciel / Professional Software Engineering Practice (3 crédits / 3 units)
Principes de professionnalisme et d'éthique professionnelle dans la pratique de l'ingénieur logiciel, incluant ses obligations envers la société et l'environnement. / Principles of professional software engineering practice and ethics, societal and environmental obligations of the software engineer.
Volet / Course Component: Cours magistral / Lecture, Tutoriel / Tutorial
SEG 3101 Software Requirements Analysis (3 units)
Techniques for eliciting requirements. Languages and models for representing requirements. Analysis and validation techniques, including need, goal and use-case analysis. Requirements in the context of system engineering. Specifying and measuring external qualities: performance, reliability, availability, safety, security, etc. Specifying and analyzing requirements for various types of systems: embedded systems, consumer systems, web-based systems, business systems, systems for scientists and other engineers. Resolving feature interactions. Requirements documentation standards. Traceability. Human factors. Requirements in the context agile processes. Requirements management: Handling requirements changes.
Course Component: Laboratory, Lecture, Tutorial
Prerequisite: SEG 2105.
SEG 3102 Software Design and Architecture (3 units)
An in-depth look at software design. Continuation of the study of design patterns, frameworks and architectures. Survey of current middleware architectures. Design of distributed systems using middleware. Designing for qualities such as performance, safety, security, reusability, reliability, etc. Measuring internal qualities and complexity of software. Evaluation and evolution of designs. Basics of reengineering and reverse engineering.
Course Component: Laboratory, Lecture, Tutorial
Prerequisite: SEG 2105.
SEG 3103 Software Quality Assurance (3 units)
Quality: how to assure it and verify it, and the need for a culture of quality. Avoidance of errors and other quality problems. Inspections and reviews. Testing, verification and validation techniques. Process assurance vs. Product assurance. Quality process standards. Product and process assurance. Problem analysis and reporting.
Course Component: Laboratory, Lecture, Tutorial
Prerequisite: SEG 2105.
SEG 3125 Analysis and Design of User Interfaces (3 units)
Psychological principles of human-computer interaction. Evaluation of user interfaces. Usability engineering. Task analysis, user-centered design and prototyping. Conceptual models and metaphors. Software design rationale. Design of windows, menus and commands. Voice and natural language I/O. Response time and feedback. Colour, icons and sound. Internationalization and localization. User interface architectures and A PIs. Case studies and project.
Course Component: Laboratory, Lecture, Tutorial
Prerequisite: SEG 2105.
SEG 3501 Ingénierie des exigences (3 crédits)
Techniques pour l'élicitation d'exigences. Langages et modèles pour représenter les exigences. Techniques d'analyse et de validation, incluant l'analyse de besoins, de buts et de cas d'utilisations. Exigences dans le contexte de l'ingénierie des systèmes. Spécification et mesure de qualités externes: performance, fiabilité, disponibilité, sûreté, sécurité, etc. Spécification et analyse d'exigences pour divers types de systèmes: embarqués, grand public, applications Web, d'affaires, pour scientifiques et autres ingénieurs. Résolution d'interactions entre services. Normes de documentation d'exigences. Traçabilité. Facteurs humains. Exigences dans le contexte de processus agiles. Gestion des exigences et des changements.
Volet : Laboratoire, Cours magistral, Tutoriel
Préalable : SEG 2505.
SEG 3502 Architecture et conception de logiciels (3 crédits)
Regard approfondi sur la conception des logiciels. Suite de l'étude de patrons de conception, de cadres de développement et d'architectures. Survol d architectures intergicielles contemporaines. Conception de systèmes répartis à l'aide d'intergiciels. Conception pour des qualités externes: performance, sûreté, sécurité, réutilisabilité, fiabilité, etc. Mesure de qualités internes et complexité logicielle. Évaluation et évolution de conceptions. Notions de réingénierie et d'ingénierie inverse.
Volet : Laboratoire, Cours magistral, Tutoriel
Préalable : SEG 2505.
SEG 3503 Assurance de la qualité logicielle (3 crédits)
Qualité: comment s'en assurer et la vérifier, et le besoin d'une culture de la qualité. Évitement d'erreurs et d'autres problèmes de qualité. Inspections et revues. Techniques de test, de vérification et de validation. Assurance de processus vs assurance de produit. Normes de qualité des processus. Rapport et analyse de problèmes.
Volet : Laboratoire, Cours magistral, Tutoriel
Préalable : SEG 2505.
SEG 3525 Conception et analyse des interfaces usagers (3 crédits)
Principes psychologiques de l'interaction humains-machines. Évaluation des interfaces. Ingénierie de l'utilisabilité. Analyse des tâches. Conception centrée sur l utilisateur et prototypage. Modèles conceptuels et métaphores. Justification de la conception d'un logiciel. Conception de fenêtres, menus et commandes. Entrées/sorties vocales en langage naturel. Temps de réponse et rétroaction. Couleurs, icônes, et sons. Localisation et internationalisation. Architectures des interfaces usagers et interfaces de programmation. Études de cas et projet.
Volet : Laboratoire, Cours magistral, Tutoriel
Préalable : SEG 2505.
SEG 3901 Stage de travail II / Work Term II (3 crédits / 3 units)
Un stage rémunéré en milieu de travail d'une durée d'un trimestre comportant des responsabilités et de l'expérience en génie logiciel de niveau intermédiaire faible, supervisé quotidiennement par un employeur. Évaluations formelles à mi-parcours et à la fin du stage avec l'employeur. Les étudiants rédigent un rapport de stage de nature technique, conforme aux directives du programme. / A paid, full-semester internship with responsibilities and experience related to software engineering at a low intermediate level, with daily supervision and guidance by an employer. Formal mid-term and end-term review and evaluation with employer. Students complete a written technical report, conforming to program guidelines, on the internship.
Volet / Course Component: Stage / Work Term
Préalables: SEG 2901, ITI 1500, ITI 1521, MAT 1748. / Prerequisite: SEG 2901, ITI 1100, ITI 1121, MAT 1348.
SEG 3902 Stage de travail III / Work Term III (3 crédits / 3 units)
Un stage rémunéré en milieu de travail d'une durée d'un trimestre comportant des responsabilités et de l'expérience en génie logiciel de niveau intermédiaire moyen, supervisé quotidiennement par un employeur. Évaluations formelles à mi-parcours et à la fin du stage avec l'employeur. Les étudiants rédigent un rapport de stage de nature technique, conforme aux directives du programme. / A paid, full-semester internship with responsibilities and experience related to software engineering at an intermediate level, with daily supervision and guidance by an employer. Formal mid-term and end-term review and evaluation with employer. Students complete a written technical report, conforming to program guidelines, on the internship.
Volet / Course Component: Stage / Work Term
Préalables: SEG 3901, SEG 2505, CSI 2510, CEG 2536. / Prerequisites: SEG 3901, SEG 2105, CSI 2110, CEG 2136.
SEG 3904 Projet de recherche novateur / Innovation Research Project (3 crédits / 3 units)
Un projet de recherche d'une session portant soit sur le développement d'une application logicielle novatrice ou sur une recherche en génie logiciel, ou les deux. / A one-semester research project, which involves the development of innovative industrial software or academic research in software engineering, or both.
Volet / Course Component: Recherche / Research
Préalables: SEG2506 or SEG3101 or SEG3102 or SEG3103 or SEG3125. / Prerequisites: SEG 2106 or SEG 3101 or SEG 3102 or SEG 3103 or SEG 3125.
SEG 4105 Software Project Management (3 units)
Project planning, cost estimation and scheduling. Project management tools. Factors influencing productivity and success. Productivity metrics. Analysis of options and risks. Planning for change. Management of expectations. Release and configuration management. Software process standards and process implementation. Software contracts and intellectual property. Approaches to maintenance and long-term software development. Case studies of real industrial projects.
Course Component: Laboratory, Lecture, Tutorial
Prerequisites: SEG 2105 plus two third year SEG or CSI courses.
SEG 4110 Advanced Software Design and Reengineering (3 units)
Aspect-oriented design and metaprogramming. Model driven architecture. Reverse engineering, program understanding, re-engineering, automated program transformation and refactoring. Other advanced techniques for design and generation of software systems.
Course Component: Laboratory, Lecture, Tutorial
Prerequisite: SEG 3102.
SEG 4135 Cloud Systems and Networks (3 units)
Cloud computing systems and cloud networks with emphasis on software defined networks / network function virtualization, mobile cloud computing and software engineering approaches for inter-data-center networks. Cloud computing service models. Cloud management issues focusing on mobile cloud computing. Cloud data center management and service provisioning. Security and privacy in the cloud. Sustainability of cloud systems. Case studies and project.
Course Component: Lecture
Prerequisite: SEG 2105.
SEG 4145 Real Time and Embedded Software Design (3 units)
The nature of hard and soft real time systems. Avoidance, detection and resolution of deadlocks and races. Strategies for guaranteeing timely response. Architectures for real-time systems, including control and monitoring systems. Real-time monitors, operating systems and run-time environments. Languages and tools for designing, constructing and analysing real-time systems. Device drivers and other embedded software that interacts in real-time with hardware. Case studies of a wide variety of real time systems.
Course Component: Laboratory, Lecture, Tutorial
SEG 4156 Telecommunications Software Design and Analysis (3 units)
Formal models for telecommunications software design and analysis. Protocol specification, design and validation. Protocol verification and testing. Conformance testing. Protocol synthesis. Protocol conversion.
Course Component: Laboratory, Lecture, Tutorial
SEG 4170 Enterprise Architecture and Models (3 units)
Enterprise architecture is a rigorous planning methodology that harmonizes and integrates the needs of society, management, and engineering in both business and government. Based on an analysis of currently available frameworks and standards, the course addresses the design of enterprise business architectures and the derivation of supporting information systems infrastructure using specialized modeling tools. Students who complete this course will have the necessary background to apply for international certification based on the TOGAF standard from the OpenGroup standards body
Course Component: Lecture
SEG 4189 Introduction to Electronic Commerce (3 units)
Basic e-commerce concepts, business models, and functional architectures. Mobile Internet infrastructure and tools. Cloud computing services, APIs, standards and related technologies. Privacy, security and electronic payment. Introduction to technical, legal and business issues in e-commerce . Case studies and hands-on project.
Course Component: Lecture
SEG 4300 Topics in Software Engineering (3 units)
Recent and advanced topics in the field of Software Engineering and its related areas. Topics vary from year to year.
Course Component: Lecture
Prerequisite: SEG 2105
SEG 4505 Gestion de projets en génie logiciel (3 crédits)
Notions de planification de projet, estimation des coûts et établissement du calendrier. Outils de gestion de projet. Facteurs influençant la productivité et le succès. Mesures de productivité. Analyse des options et des risques. Planification des changements. Gestion des attentes. Gestion de versions et de configurations. Normes de processus de développement, et mise en oeuvre des processus. Contrats de développement de logiciels et propriété intellectuelle. Démarches d'entretien et développement à long terme. Études de cas de projets industriels réels.
Volet : Laboratoire, Cours magistral, Tutoriel
Préalables : SEG 2505 plus deux cours de troisième année en SEG ou CSI.
SEG 4510 Conception avancée de logiciels et réingénierie (3 crédits)
Conception orientée aspect et métaprogrammation. Architecture guidée par modèle. Ingénierie inverse, compréhension de programmes, réingénierie, transformations de programmes automatisées et réusinage. Autres techniques avancées pour la conception et la génération de systèmes à base de logiciels.
Volet : Laboratoire, Cours magistral, Tutoriel
Préalable : SEG 3502.
SEG 4535 Systèmes et Réseaux Informatiques en Nuage (3 crédits)
Systèmes informatiques en nuage et réseaux en nuage mettant l'accent sur les réseaux définis par logiciel / la virtualisation des fonctions de réseau, informatique en nuage mobile et approches d'ingénierie logicielle pour les réseaux inter-centres de données. Modèles de services de l'informatique en nuage. Problèmes de gestion du nuage axés sur l'informatique en nuage mobile. Gestion de centre de données en nuage et fourniture de services. Sécurité et confidentialité dans le nuage. Durabilité des systèmes en nuage. Études de cas et projet.
Volet : Cours magistral
Préalable : SEG 2505.
SEG 4545 Conception de systèmes embarqués et en temps réel (3 crédits)
Nature des systèmes en temps réel dur et en temps réel mou. Évitement, détection et résolution de situations d'interblocage et de concurrence critique. Stratégies pour garantir des réponses ponctuelles. Architectures pour systèmes en temps réel, y compris les systèmes de contrôle et de surveillance. Moniteurs temps réel, systèmes d'exploitation et environnements d'exécution. Langages et outils pour concevoir, construire et analyser des systèmes en temps réel. Pilotes et autres logiciels embarqués qui interagissent en temps réel avec le matériel. Études de cas d'une grande variété de systèmes en temps réel.
Volet : Laboratoire, Cours magistral, Tutoriel
SEG 4556 Conception et analyse de logiciels de télécommunications (3 crédits)
Modèles théoriques pour la conception et l'analyse de logiciels de télécommunications. Spécification, conception et validation de protocoles. Vérification et test de protocoles. Test de conformité. Synthèse et transformation de protocoles.
Volet : Laboratoire, Cours magistral, Tutoriel
SEG 4570 Architecture et modèles d'entreprise (3 crédits)
L'architecture d'entreprise est une méthodologie de planification rigoureuse qui harmonise et intègre les besoins de la société, de la gestion et de l'ingénierie dans les entreprises et le gouvernement. Basé sur une analyse des cadres et des normes actuellement disponibles, le cours aborde la conception d'architectures d'entreprises et la dérivation de l'infrastructure des systèmes d'information qui les supportent à l'aide d'outils de modélisation spécialisés. Les étudiants qui terminent ce cours auront l'expérience nécessaire pour postuler à une certification internationale basée sur la norme TOGAF de l'organisme de normalisation OpenGroup
Volet : Cours magistral
SEG 4589 Introduction au commerce électronique (3 crédits)
Modèles de base en commerce électronique. Infrastructures de l'Internet Mobile. Services de l'informatique en nuage, API, normes et technologies connexes. Confidentialité, sécurité et paiement électronique. Introduction aux questions techniques, juridiques et commerciales dans le commerce électronique. Études de cas et projet pratique.
Volet : Cours magistral
SEG 4700 Sujets en génie logiciel (3 crédits)
Sujets actuels et avancés en génie logiciel et disciplines connexes. Les sujets varient d'année en année.
Volet : Cours magistral
Préalable : SEG 2505
SEG 4901 Stage de travail IV / Work Term IV (3 crédits / 3 units)
Un stage rémunéré en milieu de travail d'une durée d'un trimestre comportant des responsabilités et de l'expérience en génie logiciel de niveau intermédiaire supérieur, supervisé quotidiennement par un employeur. Évaluations formelles à mi-parcours et à la fin du stage avec l'employeur. Les étudiants rédigent un rapport de stage de nature technique, conforme aux directives du programme. / A paid, full-semester internship with responsibilities and experience related to software engineering at an upper intermediate level, with daily supervision and guidance by an employer. Formal mid-term and end-term review and evaluation with employer. Students complete a written technical report, conforming to program guidelines, on the internship.
Volet / Course Component: Stage / Work Term
SEG 4902 Stage de travail V / Work Term V (3 crédits / 3 units)
Un stage rémunéré en milieu de travail d'une durée d'un trimestre comportant des responsabilités et de l'expérience en génie logiciel de niveau avancé faible, supervisé quotidiennement par un employeur. Évaluations formelles à mi-parcours et à la fin du stage avec l'employeur. Les étudiants rédigent un rapport de stage de nature technique, conforme aux directives du programme. / A paid, full-semester internship with responsibilities and experience related to software engineering at an advanced level, with daily supervision and guidance by an employer. Formal mid-term and end-term review and evaluation with employer. Students complete a written technical report, conforming to program guidelines, on the internship.
Volet / Course Component: Stage / Work Term
SEG 4903 Stage de travail VI / Work Term VI (3 crédits / 3 units)
Un stage rémunéré en milieu de travail d'une durée d'un trimestre comportant des responsabilités et de l'expérience en génie logiciel de niveau avancé intermédiaire, supervisé quotidiennement par un employeur. Évaluations formelles à mi-parcours et à la fin du stage avec l'employeur. Les étudiants rédigent un rapport de stage de nature technique, conforme aux directives du programme. / A paid, full-semester internship with responsibilities and experience related to software engineering at an advanced level, with daily supervision and guidance by an employer. Formal mid-term and end-term review and evaluation with employer. Students complete a written technical report, conforming to program guidelines, on the internship.
Volet / Course Component: Stage / Work Term
Prerequisite: SEG 4902
SEG 4910 Projet génie logiciel de fin d'études 1re partie / Software Engineering Capstone Project Part 1 (3 crédits / 3 units)
Formation des équipes et réalisation des premières étapes d'un projet de logiciel. Gestion du projet, analyse, contrôle de qualité, conception et implantation. Documentation et présentations en classe. Ce travail est dirigé par un professeur, mais est exécuté pour un 'client externe' qui doit être satisfait des résultats. Le projet doit aussi comprendre toute étude de risque, de coûts, d'impact communautaire, de litiges légaux, afin de respecter les obligations et responsabilités d'un ingénieur professionnel. / Formation of teams and development of the first iterations of a significant software system. Work includes project management, analysis, quality assurance, design, and implementation. Deliverables include written documentation and presentations in class. Work is guided by a professor, but is performed for an external entity designated the 'customer', who must be satisfied with the group's work. Students are expected to address any risks or societal concerns raised by their project (legal liability, financial costs, community impact) in keeping with the obligations and responsibilities expected of a professional engineer.
Volet / Course Component: Cours magistral / Lecture, Recherche / Research
Préalables : SEG 3501, SEG 3502, SEG 3503, SEG 3525, 2 stages parmi SEG 2901, SEG 3901, SEG 3902, or SEG 4901. / Prerequisites: SEG 3101, SEG 3102, SEG 3103, SEG 3125, 2 work terms from SEG 2901, SEG 3901, SEG 3902, or SEG 4901.
SEG 4911 Projet génie logiciel de fin d'études 2e partie / Software Engineering Capstone Project Part 2 (3 crédits / 3 units)
Suite du projet commencé en SEG 4910. Gestion du projet, analyse, contrôle de qualité, conception et implantation. Rapport final et présentations en classe. / Completion of work started in SEG 4910. Work includes project management, analysis, quality assurance, design, implementation and a final report. Deliverables include written documentation and presentations in class.
Volet / Course Component: Cours magistral / Lecture, Recherche / Research
Prerequisite: SEG 4910, taken the previous semester, working on the same project with the same group for the same customer.