Zachary Seguin

SE Courses

SE 101 – Introduction to Methods of Software Engineering

An introduction to some of the basic methods and principles used by software engineers, including fundamentals of technical communication, measurement, analysis, and design. Some aspects of the software engineering profession, including standards, safety and intellectual property. Professional development including résumé skills, interview skills, and preparation for co-op terms. Safety-orientation training, including WHMIS assessment, is included in this course. [Offered: F]

SE 102 – Seminar

General Seminar [Offered: W]

SE 201 – Seminar

General Seminar [Offered: F]

SE 202 – Seminar

General Seminar [Offered: S]

SE 212 – Logic and Computation

Formal logic. Proof systems and styles. Rudimentary model theory. Formal models of computation. Logic-based specification. Correctness proofs. Applications in software engineering. [Offered: F]

SE 240 – Algorithms and Data Structures

Design and analysis of data structures and algorithms. Comparison of algorithms on data structures, including operations on sets (balanced search trees, hashing), sorting and priority queues, and graphs. Algorithmic paradigms including greedy algorithms, divide and conquer, dynamic programming, graph exploration, backtracking, and branch and bound. Mathematical analysis of space and time complexity. Overview of NP-completeness. [Offered: S]

SE 301 – Seminar

General Seminar [Offered: W]

SE 302 – Seminar

General Seminar [Offered: F]

SE 350 – Operating Systems

An introduction to the fundamentals of operating system function, and implementation. Topics include concurrency, synchronization, processes, threads, scheduling, memory management, file systems, device management, and security. [Offered: W]

SE 380 – Introduction to Feedback Control

Introduction to control systems. Advantages of closed-loop feedback systems. The role of the system mathematical model. Block diagrams and signal flow graphs. The basic control system design problem, stability in control systems. Frequency response analysis techniques. Root-locus analysis. Elementary lead-lag compensation. [Offered: F]

SE 382 – Human-computer Interaction

The purpose of this course is to introduce students to the design, implementation, and evaluation of contemporary human-computer interfaces. Topics include user-centered design, psychological considerations, and usability. Emphasis is on practical systems, such as PC-based window/mouse/keyboard systems. Labs alternate weeks. [Offered W]

SE 390 – Design Project Planning

Students undertake a substantial customer-driven group project as part of the SE 390/490/491 design-project sequence covering all major phases of the software-engineering lifecycle. Lectures describe expectations and project-planning fundamentals. Students form groups, decide on a project concept, complete a project-approval process, develop high-level requirements for the project, perform a risk assessment, develop a test plan, and complete a first-iteration prototype. Social, legal, and economic factors are considered. [Offered: F]

SE 401 – Seminar

General Seminar [Offered: S]

SE 402 – Seminar

General Seminar. [Offered: W]

SE 463 – Software Requirements Specification and Analysis

Introduces students to the requirements definition phase of software development: Models, notations, and processes for software requirements identification, representation, analysis, and validation. Cost estimation from early documents and specifications.

SE 464 – Software Design and Architectures

Introduces students to the design, implementation, and evolution phases of software development. Software design processes, methods, and notation. Implementation of designs. Evolution of designs and implementations. Management of design activities.

SE 465 – Software Testing and Quality Assurance

Introduces students to systematic testing of software systems. Software verification, reviews, metrics, quality assurance, and prediction of software reliability and availability. Related management issues.

SE 490 – Design Project 1

Continuing from SE 390, students undertake a substantial customer-driven group project. Project groups establish and maintain project control processes, delivering a series of iterations on their initial SE 390 prototype. Adaptive methodologies are encouraged and supported. [Offered: S]

SE 491 – Design Project 2

Final implementation, testing, and communication of the design project started in SE 390. Technical presentations by groups. Analysis of social, legal, and economic impacts. Final release of the project. Project retrospective. [Offered: W]

SE 498 – Advanced Topics in Software Engineering

See the Course Offerings List for topics available. [Offered: As available]

SE 499 – Project

A software engineering project requiring the student to demonstrate initiative an assume responsibility. The student normally proposes his or her own project, which must involve substantial engineering science or engineering design. The student must find a faculty supervisor. A project report is required at the end of the term. Program consent required. [Offered: F, W, S]