At McGill University research and teaching in software engineering is offered mainly through the Department of Electrical and Computer Engineering (ECE) in the Faculty of Engineering and through the School of Computer Science (SOCS) in the Faculty of Science. Faculty members in both units collaborate in the development and delivery of undergraduate programs and in research initiatives.


Professors working in various areas of software engineering, in alphabetical order with their primary affiliation (ECE or SOCS).

Jin Guo (SOCS)
Research: Software traceability, requirements engineering, software evolution and maintenance. Especially techniques and tools to support trace link construction and maintenance, requirements satisfaction analysis, software artifact processing.
Laurie Hendren (SOCS)
Research: Techniques and tools for program analysis, transformation and refactoring.
Teaching: COMP 520 - Compiler Design; COMP 621 - Program Analysis and Transformations
Jörg Kienzle (SOCS)
Research: Techniques and tools to support model-driven software development (requirements, architecture, design, code generation) and reuse; Model-driven engineering; Aspect-orientation; Variability; Software composition; Concern-oriented reuse.
Teaching: COMP 361D1/D2 - Software Engineering Project; COMP 533 - Model-Driven Software Development; COMP 667 - Software Fault-Tolerance
Shane McIntosh (ECE)
Research: Techniques and tools to support decision-making in software release pipelines; Integration; Build systems; Deployment; Mining software repositories; Software analytics; Empirical software engineering.
Teaching: ECSE 321 - Introduction to Software Engineering; ECSE 6XX - Software Analytics
Gunter Mussbacher (ECE)
Research:Model-driven requirements engineering with goals, features, and scenarios; User Requirements Notation (URN); Modularity in modeling; Concern-driven development and reuse; Sustainability engineering.
Teaching: ECSE 223 - Model-Based Programming; ECSE 326 - Software Requirements Engineering; ECSE 439 - Software Language Engineering; ECSE 529 - Advanced Software Language Engineering
Martin Robillard (SOCS)
Research: Theories, techniques, and tools to support software design and architecture, software evolution, and software reuse; Software documentation; API usability; Empirical software engineering.
Teaching: COMP 303 - Software Design; COMP 529 - Software Architecture; COMP 762 - Software Evolution
Daniel Varro (ECE)
Research: Model-based systems and software engineering, Software tools: development and integration, Cyber-physical systems, Critical systems, Internet-of-things.
Teaching: ECSE 321 - Introduction to Software Engineering
Clark Verbrugge (SOCS)
Research: Program optimization and analysis; concurrent programming; analyzing and formalizing computer games.
Teaching: COMP 409 - Concurrent Programming, COMP 521 - Modern Computer Games


The software engineering group organizes a weekly seminar series where a broad variety of research topics are discussed. The series includes presentations both from guests and group members. Contributions at varying stages of development are welcome. Seminar series announcements are broadcasted on the SE-seminar mailing list.

Undergraduate Programs

McGill University offers different undergraduate programs in software engineering:

The following programs are offered by the Faculty of Engineering:

The following programs are offered by the Faculty of Science:

The following programs are offered by the Faculty of Arts or as interfaculty programs: