LOG8505E Model-Driven Software Engineering
Department of Computer Engineering and Software Engineering, Polytechnique Montreal - Fall 2024
This graduate course is designed for advanced undergraduates and graduate students interested in exploring the principles of Model-Driven Engineering (MDE). The course covers standard Model-Driven Development (MDD) techniques and methodologies applied in industry and teaches students how to leverage MDE methodologies to design and build domain-specific languages. This project-based course offers students opportunities to collaborate with industry partners, such as NASA JPL, on real-world applications.ECSE 539 Advanced Software Language Engineering
Department of Electrical and Computer Engineering, McGill University, Fall 2018
This graduate course is designed for advanced undergraduate and graduate students seeking practical and theoretical knowledge in developing software languages and models. It provides a foundation for model-based software development, covering topics such as the principles of model-driven engineering, concern-driven development, intentional, structural, behavioral, and configuration models, constraints, language engineering, and domain-specific languages. Additional topics include meta-modeling, model transformations, models of computation, model analysis, and the use of modeling tools.COMP 533 Model-Driven Software Development
School of Computer Science, McGill University, Winter 2021
This graduate course is designed for advanced undergraduate and graduate students interested in exploring key concepts such as abstraction, modularity, separation of concerns, and reuse. The course covers standard Model-Driven Engineering (MDE) techniques and methodologies widely used in industry, as well as advanced MDE topics aimed at enhancing modularity, separation of concerns, and reuse. These advanced topics include aspect-orientation and concern-oriented reuse.ECSE 223 Model-Based Programming
Department of Electrical and Computer Engineering, McGill University, Fall 2020, Winter 2020, Fall 2019, and Winter 2019
This undergraduate course provides students with a strong foundational understanding of how to integrate programming with Model-Driven Development principles. Students learn to design and implement software applications, progressing from requirements elicitation and analysis to architectural design, implementation, and deployment, all while applying model-based approaches to create efficient and reliable software systems. Working in groups, students design and develop simple games, combining model-driven techniques with programming to reinforce their learning.ECSE 326: Software Requirements Engineering (McGill University)
Department of Electrical and Computer Engineering, McGill University, Fall 2019
This undergraduate course provides students the opportunity to learn key techniques for eliciting requirements, as well as languages and models for specifying them. It covers analysis and validation methods, including feature-based, goal-based, and scenario-based analysis, along with approaches to addressing quality requirements, traceability, and management. Students learn to handle the evolution of requirements, apply requirements documentation standards, and understand requirements within the context of system engineering. The course also emphasizes the integration of requirements engineering into broader software engineering processes.COMP 361 Software Engineering Project
School of Computer Science, McGill University - Winter 2022, Fall 2021, Winter 2021, Fall 2020, Winter 2020, and Fall 2019
This undergraduate course provides students with the opportunity to design and develop a board game by applying rigorous and systematic software development principles. The project guides students through all phases of the software development life cycle, including requirements elicitation and specification, architectural and detailed design, implementation, deployment, and maintenance. Throughout the project, students adopt a model-driven engineering approach, creating software models at various levels of abstraction using different modeling formalisms. The final implementation is completed by the students using an object-oriented programming language of their choice.CCCS 300: Programming Techniques 1
School of Continuing Studies, McGill University, Winter 2022
This undergraduate course provides students with the opportunity to learn object-oriented programming, along with fundamental programming techniques, concepts, and data structures. Key topics include modularization, maintainability, and effective software development paradigms. The course also emphasizes fostering clear communication and understanding between systems analysts and programmers to support enhanced decision-making and collaboration.