Software Engineering Minor (B.Eng.) (18 credits)
Offered by: Electrical & Computer Engr (Faculty of Engineering)
Degree: Bachelor of Engineering
Program credit weight: 18
Program Description
The Software Engineering Minor provides a foundation in basic computer science, computer programming, and software engineering practice.
The Minor program does not carry professional recognition.
Students must complete 18 credits (six courses) as follows. Up to 6 credits (two courses) may be double-counted towards a degree program.
Note: For information about Fall 2025 and Winter 2026 course offerings, please check back on May 8, 2025. Until then, the "Terms offered" field will appear blank for most courses while the class schedule is being finalized.
Required Courses (9 credits)
Course | Title | Credits |
---|---|---|
ECSE 223 | Model-Based Programming. | 3 |
Model-Based Programming. Terms offered: this course is not currently offered. Integration of modelling with programming; abstraction in software engineering; structural modelling; state-based modelling; modelling of object-oriented systems, code generation; natural language constraints in modelling notations; architectural and design patterns; integrated development environments; programming tools (debugging, continuous build/integration, version control and code repositories, diff, defect and issue tracking, refactoring); code review processes. | ||
ECSE 321 | Introduction to Software Engineering. | 3 |
Introduction to Software Engineering. Terms offered: this course is not currently offered. Design, development and testing of software systems. Software life cycle: requirements analysis, software architecture and design, implementation, integration, test planning, and maintenance. The course involves a group project. | ||
ECSE 428 | Software Engineering Practice. | 3 |
Software Engineering Practice. Terms offered: this course is not currently offered. Software engineering practice in industry, related to the design and commissioning of large software systems. Ethical, social, economic, safety and legal issues. Metrics, project management, costing, marketing, control, standards, CASE tools and bugs. The course involves a large team project. |
Complementary Courses
3 credits from the following:
Course | Title | Credits |
---|---|---|
COMP 250 | Introduction to Computer Science. 1 | 3 |
Introduction to Computer Science. Terms offered: this course is not currently offered. Mathematical tools (binary numbers, induction,recurrence relations, asymptotic complexity,establishing correctness of programs). Datastructures (arrays, stacks, queues, linked lists,trees, binary trees, binary search trees, heaps,hash tables). Recursive and non-recursivealgorithms (searching and sorting, tree andgraph traversal). Abstract data types. Objectoriented programming in Java (classes andobjects, interfaces, inheritance). Selected topics. | ||
ECSE 250 | Fundamentals of Software Development. 1 | 3 |
Fundamentals of Software Development. Terms offered: this course is not currently offered. Software development practices in the context of object-oriented programming. Elementary data structures such as lists, stacks and trees. Recursive and non-recursive algorithms: searching and sorting, tree and graph traversal. Asymptotic notation: Big O. Introduction to tools and practices employed in commercial software development. |
- 1
Students may choose only one course in each of the following sets:
- COMP 250 Introduction to Computer Science. and ECSE 250 Fundamentals of Software Development.
- COMP 424 Artificial Intelligence. and ECSE 526 Artificial Intelligence.
- ECSE 439 Software Language Engineering. and ECSE 539 Advanced Software Language Engineering.
- ECSE 446 Realistic Image Synthesis. and ECSE 546 Advanced Image Synthesis.
6 credits from the following:
Course | Title | Credits |
---|---|---|
COMP 302 | Programming Languages and Paradigms. | 3 |
Programming Languages and Paradigms. Terms offered: this course is not currently offered. Programming language design issues and programming paradigms. Binding and scoping, parameter passing, lambda abstraction, data abstraction, type checking. Functional and logic programming. | ||
COMP 307 | Principles of Web Development. | 3 |
Principles of Web Development. Terms offered: this course is not currently offered. The course discusses the major principles, algorithms, languages and technologies that underlie web development. Students receive practical hands-on experience through a project. | ||
COMP 409 | Concurrent Programming. | 3 |
Concurrent Programming. Terms offered: this course is not currently offered. Characteristics and utility of concurrent programs; formal methods for specification, verification and development of concurrent programs; communications, synchronization, resource allocation and management, coherency and integrity. | ||
COMP 421 | Database Systems. | 3 |
Database Systems. Terms offered: this course is not currently offered. Database Design: conceptual design of databases (e.g., entity-relationship model), relational data model, functional dependencies. Database Manipulation: relational algebra, SQL, database application programming, triggers, access control. Database Implementation: transactions, concurrency control, recovery, query execution and query optimization. | ||
COMP 424 | Artificial Intelligence. 1 | 3 |
Artificial Intelligence. Terms offered: this course is not currently offered. Introduction to search methods. Knowledge representation using logic and probability. Planning and decision making under uncertainty. Introduction to machine learning. | ||
COMP 512 | Distributed Systems. | 4 |
Distributed Systems. Terms offered: this course is not currently offered. Models and Architectures. Application-oriented communication paradigms (e.g. remote method invocation, group communication). Naming services. Synchronization (e.g. mutual exclusion, concurrency control). Fault-tolerance (e.g. process and replication, agreement protocols). Distributed file systems. Security. Examples of distributed systems (e.g. Web, CORBA). Advanced Topics. | ||
COMP 527 | Logic and Computation. | 3 |
Logic and Computation. Terms offered: this course is not currently offered. Introduction to modern constructive logic, its mathematical properties, and its numerous applications in computer science. | ||
ECSE 326 | Software Requirements Engineering. | 3 |
Software Requirements Engineering. Terms offered: this course is not currently offered. Techniques for eliciting requirements; languages and models for specification of requirements; analysis and validation techniques, including feature-based, goal-based, and scenario-based analysis; quality requirements; requirements traceability and management; handling evolution of requirements; requirements documentation standards; requirements in the context of system engineering; integration of requirements engineering into software engineering processes. | ||
ECSE 420 | Parallel Computing. | 3 |
Parallel Computing. Terms offered: this course is not currently offered. Modern parallel computing architectures for shared memory, message passing and data parallel programming models. The design of cache coherent shared memory multiprocessors. Programming techniques for multithreaded, message passing and distributed systems. Use of modern programming languages and parallel programming libraries. | ||
ECSE 421 | Embedded Systems. | 3 |
Embedded Systems. Terms offered: this course is not currently offered. Definition, structure and properties of embedded systems. Real-time programming: interrupts, latency, context, re-entrancy, thread and process models. Microcontroller and DSP architectures, I/O systems, timing and event management. Real-time kernels and services. Techniques for development, debugging and verification. Techniques for limited resource environments. Networking for distributed systems. | ||
ECSE 422 | Fault Tolerant Computing. | 3 |
Fault Tolerant Computing. Terms offered: this course is not currently offered. Introduction to fault-tolerant systems. Fault-tolerance techniques through hardware, software, information and time redundancy. Failure classification, failure semantics, failure masking. Exception handling: detection, recovery, masking and propagation, termination vs. resumption. Reliable storage, reliable communication. Process groups, synchronous and asynchronous group membership and broadcast services. Automatic redundancy management. Case studies. | ||
ECSE 424 | Human-Computer Interaction. | 3 |
Human-Computer Interaction. Terms offered: this course is not currently offered. The course highlights human-computer interaction strategies from an engineering perspective. Topics include user interfaces, novel paradigms in human-computer interaction, affordances, ecological interface design, ubiquitous computing and computer-supported cooperative work. Attention will be paid to issues of safety, usability, and performance. | ||
ECSE 425 | Computer Architecture. | 3 |
Computer Architecture. Terms offered: this course is not currently offered. Trends in technology. CISC vs. RISC architectures. Pipelining. Instruction level parallelism. Data and Control Hazards. Static prediction. Exceptions. Dependencies. Loop level paralleism. Dynamic scheduling, branch prediction. Branch target buffers. Superscalar and N-issue machines. VLIW. ILP techniques. Cache analysis and design. Interleaved and virtual memory. TLB translations and caches. | ||
ECSE 427 | Operating Systems. | 3 |
Operating Systems. Terms offered: this course is not currently offered. Operating system services, file system organization, disk and cpu scheduling, virtual memory management, concurrent processing and distributed systems, protection and security. Aspects of the DOS and UNIX operating systems and the C programming language. Programs that communicate between workstations across a network. | ||
ECSE 429 | Software Validation. | 3 |
Software Validation. Terms offered: this course is not currently offered. Correct and complete implementation of software requirements. Verification and validation lifecycle. Requirements analysis, model based analysis, and design analysis. Unit and system testing, performance, risk management, software reuse. Ubiquitous computing. | ||
ECSE 437 | Software Delivery. | 3 |
Software Delivery. Terms offered: this course is not currently offered. Design, development, and implementation of code integration processes, release pipelines, and deployment strategies. | ||
ECSE 439 | Software Language Engineering. 1 | 3 |
Software Language Engineering. Terms offered: this course is not currently offered. Practical and theoretical knowledge for developing software languages and models; foundations for model-based software development; topics include principles of model-driven engineering; concern-driven development; intentional, structural, and behavioral models as well as configuration models; constraints; language engineering; domain-specific languages; metamodeling; model transformations; models of computation; model analyses; and modeling tools. | ||
ECSE 446 | Realistic Image Synthesis. 1, 2 | 3 |
Realistic Image Synthesis. Terms offered: this course is not currently offered. Introduction to mathematical models of light transport and the numerical techniques used to generate realistic images in computer graphics. Offline (i.e., raytracing) and interactive (i.e., shader-based) techniques. | ||
ECSE 526 | Artificial Intelligence. 1, 2 | 3 |
Artificial Intelligence. Terms offered: this course is not currently offered. Design principles of autonomous agents, agent architectures, machine learning, neural networks, genetic algorithms, and multi-agent collaboration. The course includes a term project that consists of designing and implementing software agents that collaborate and compete in a simulated environment. | ||
ECSE 539 | Advanced Software Language Engineering. 1, 2 | 4 |
Advanced Software Language Engineering. Terms offered: this course is not currently offered. Practical and theoretical knowledge for developing software languages and models; foundations for model-based software development; topics include principles of model-driven engineering; concern-driven development; intentional, structural, and behavioral models as well as configuration models; constraints; language engineering; domain-specific languages; metamodelling; model transformations; models of computation; model analyses; and modeling tools. | ||
ECSE 546 | Advanced Image Synthesis. 1, 2 | 4 |
Advanced Image Synthesis. Terms offered: this course is not currently offered. Introduction to mathematical models of light transport and the numerical techniques used to generate realistic images in computer graphics. Offline (i.e., raytracing) and interactive (i.e., shader-based) techniques. Group project addressing important applied research problems. |
- 1
Students may choose only one course in each of the following sets:
- COMP 250 Introduction to Computer Science. and ECSE 250 Fundamentals of Software Development.
- COMP 424 Artificial Intelligence. and ECSE 526 Artificial Intelligence.
- ECSE 439 Software Language Engineering. and ECSE 539 Advanced Software Language Engineering.
- ECSE 446 Realistic Image Synthesis. and ECSE 546 Advanced Image Synthesis.
- 2
Restricted to Honours students or Computer Engineering or Electrical Engineering students with CGPA of at least 3.0 and B+ or better in prerequisites