Undergraduate
COMPSCI 1DM3
Discrete Mathematics for Computer Science
Undergraduate Sets, functions, relations, trees and graphs; counting principles, modular arithmetic, discrete probabilities; induction and recursion, recurrence relations. Three lectures, one tutorial (two hours), second term Prerequisite(s): MATH 1B03 or MATH 1ZC3 or registration in the Honours Computer Science as a Second Degree (B.A.Sc.) Antirequisite(s): COMPSCI 1FC3, 2DM3, SFWRENG 2DM3, 2E03, 2F03
COMPSCI 4O03
Linear Optimization Algorithms
Undergraduate Modelling and solutions for engineering and science problems using linear optimization, including networks, transportation, assignment, and scheduling problems. Solution methods include combinatorial algorithms such as simplex methods, primaldual formulations, branch and bound formulations for mixed integer programming, and heuristics. Three lectures, one tutorial (one hour); first term Prerequisite(s): COMPSCI 2C03 Antirequisite(s): SFWRENG 3O03, 4O03 Crosslist(s): SFWRENG 3O03
COMPSCI 4ML3
Introduction to Machine Learning
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Regression, Classification and Decision Theory, BiasVariance Tradeoff, Linear Models, Kernel Methods, Probabilistic Models, Neural Networks, Model Aggregation, Unsupervised Learning. Three lectures, one tutorial; one term Prerequisite(s): One of COMPSCI 2C03 or SFWRENG 2C03 or SFWRENG 2MD3. One of STATS 1L03, STATS 2D03, STATS 3Y03. One of COMPSCI 4O03 or 4X03 or SFWRENG 3O03 or 4X03 is recommended. Offered on an irregular basis.
COMPSCI 4HC3
Human Computer Interfaces
Undergraduate Design of user interfaces. Principles of good interface design. Taskoriented design. User experience design. Inclusive design. Communicating with graphics. Modes and mode awareness problem. Human cognition (memory, perception, motor systems). Help systems. Interface design tools. Three lectures, one tutorial (one hour); first term Prerequisite(s): COMPSCI 2C03 Antirequisite(s): SFWRENG 4D03, 4HC3 Crosslist(s): SFWRENG 4HC3
COMPSCI 4FP3
Functional Programming
Undergraduate A selection of topics in advanced functional programming (focusing on Haskell and its derivatives). Example topics: Techniques for embedded domainspecific languages, generic and typelevel programming, reasoning about programs, and (co)effects. Three lectures, one tutorial (one hour); one term Prerequisite(s): COMPSCI 1JC3 or SFWRENG 3FP3, COMPSCI 1XC3 or SFWRENG 2S03 or SFWRENG 2XC3, COMPSCI 2C03 or SFWRENG 2C03, COMPSCI 2LC3 or 2DM3 or SFWRENG 2DM3, COMPSCI 2ME3 or SFWRENG 2AA4 Antirequisite(s): COMPSCI 3FP3 Offered on an irregular basis.
COMPSCI 4F03
Parallel Computing
Undergraduate Parallel architectures, design and analysis of parallel algorithms; distributedmemory, sharedmemory and GPU computing; communication cost, scalability; MPI, OpenMP and OpenACC; tuning parallel programs for performance. Three lectures, one tutorial (one hour); one term Prerequisite(s): COMPSCI 2SD3 or credit or registration in COMPSCI 3SD3. Completion of COMPSCI 3N03 or 4C03 is recommended. Antirequisite(s): SFWRENG 4F03 Crosslist(s): SFWRENG 4F03 Offered on an irregular basis.
COMPSCI 4EN3 A/B
Software Entrepreneurship
Undergraduate Issues in starting up a new software enterprise, with the focus on independent startups. This course will cover the technical, financial, legal and operational issues encountered by software startups. Small groups of students will take an idea and turn it into a prototype, a business plan, and a sales pitch. Lectures will cover issues from team formation to appropriate software development processes to patent protection to venture capital. Three lectures; two terms Prerequisite(s): Registration in Level III or IV of any Computer Science program Offered on an irregular basis.
COMPSCI 4E03
Performance Analysis of Computer Systems
Undergraduate Use of queuing models and simulation to predict computer system performance and find bottlenecks in a system. Types of models, distributions. Markov models. Modelling storage and network behaviour, locks, critical sections, concurrency. Introduction to analytical system reliability. Three lectures, one tutorial (one hour); first term Prerequisite(s): One of STATS 2D03, 2MA3, 3N03 or 3Y03 Antirequisite(s): SFWRENG 4E03 Crosslist(s): SFWRENG 4E03
COMPSCI 4DC3
Distributed Computing
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Models of distributed computation, formal reasoning about distributed systems, time and message complexity, distributed agreement under adversarial attacks, distributed coordination and symmetry breaking, peertopeer computing, simulation as a tool for building more advanced functionality, actormodel programming. Three lectures, one tutorial; one term Prerequisite(s): One of COMPSCI 2C03 or SFWRENG 2C03 or SFWRENG 2MD3, and one of COMPSCI 2SD3 or 3SD3 or SFWRENG 3BB4 or SFWRENG 3SH3 Offered on an irregular basis.
COMPSCI 4C03
Computer Networks and Security
Undergraduate Physical networks, TCP/IP protocols, switching methods, network layering and components, network services. Information security, computer and network security threats, defence mechanisms, encryption. Three lectures, one tutorial (one hour); second term Prerequisite(s): Credit or registration in COMP SCI 3MH3 or COMPSCI 3SH3 Antirequisite(s): COMPSCI 3CN3, 3C03, SFWRENG 4C03, COMPENG 4DN4 Last offered 20222023.
COMPSCI 4AR3
Software Architecture
Undergraduate Software architecture concepts; architectural styles; design patterns, components, libraries, configurations; modelling languages; software reengineering. Three lectures; one term Prerequisite(s): Credit or registration in COMPSCI 3RA3 or 3SR3 Offered on an irregular basis.
COMPSCI 3RA3
Software Requirements and Security Considerations
Undergraduate Software requirements gathering. Critical systems requirements gathering. Security requirements. Traceability of requirements. Verification, validation, and documentation techniques. Software requirements quality attributes. Security policies. Measures for data confidentiality. Design principles that enhance security. Access control mechanisms. Three lectures, one tutorial (one hour); first term Prerequisite(s): COMPSCI 2AC3 or 2FA3, COMPSCI 2ME3 Antirequisite(s): SFWRENG 3RA3 Crosslist(s): SFWRENG 3RA3
COMPSCI 3TB3
SyntaxBased Tools and Compilers
Undergraduate Lexical analysis, syntax analysis, type checking; syntaxdirected translation, attribute grammars; compiler structure; implications of computer architecture; mapping of programming language concepts; code generation and optimization. Two lectures, one tutorial, two labs (one hour each); second term Prerequisite(s): COMPSCI 2C03 or SFWRENG 2C03, and COMPSCI 2GA3 or SFWRENG 2GA3 or 3GA3, and COMPSCI 2AC3 or 2FA3 or SFWRENG 2FA3, and COMPSCI 3MI3 or registration in Level IV or above of a Software Engineering program First offered 20222023.
COMPSCI 4AD3
Advanced Databases
Undergraduate LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES Advanced topics in database systems technology and design. Topics include: query processing; query optimization; data storage; indexing; crash recovery; physical database design; introductory data mining techniques. Three lectures, one tutorial; one term Prerequisite(s): COMPSCI 3DB3 Antirequisite(s): SFWRENG 4AD3 Crosslist(s): SFWRENG 4AD3 Offered on an irregular basis.
COMPSCI 3SH3
Computer Science Practice and Experience: Operating Systems
Undergraduate Processes and threads, synchronization and communication; scheduling, memory management; file systems; resource protection; structure of operating systems. Two lectures, one tutorial, two labs (one hour each); second term Prerequisite(s): COMPSCI 2SD3 or 3SD3, COMPSCI 2C03, and COMPSCI 2GA3 Antirequisite(s): SFWRENG 3SH3 Effective 20212022, this course will be offered in first term.
COMPSCI 3N03
Computer Networks and Security
Undergraduate Physical networks, TCP/IP protocols, switching methods, network layering and components, network services. Information security, computer and network security threats, defence mechanisms, encryption. Three lectures, one tutorial (one hour); second term Prerequisite(s): Credit or registration in COMPSCI 3SH3 Antirequisite(s): COMPSCI 3CN3, 3C03, COMPSCI 4C03, SFWRENG 4C03, COMPENG 4DK4, 4DN4 First offered 20222023
COMPSCI 3MI3
Principles Of Programming Languages
Undergraduate Principles of definition of and reasoning about programming languages and domainspecific languages; use of semantics for interpretation and in program analyses for correctness, security and efficiency. Three lectures; one tutorial (one hour); first term Prerequisite(s): COMPSCI 2C03, and COMPSCI 2LC3 or 2DM3, and COMPSCI 2AC3 or 2FA3, and COMPSCI 2ME3
COMPSCI 3IS3
Information Security
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Basic principles of information security; threats and defences; cryptography; introduction to network security and security management. Three lectures; one term Prerequisite(s): COMPSCI 2AC3 or 2FA3 or SFWRENG 2FA3, and COMPSCI 2C03 or SFWRENG 2C03 Offered on an irregular basis.
COMPSCI 3GC3
Computer Graphics
Undergraduate Mathematical foundations, the graphics pipeline, geometrical transformations, 3D visualization, clipping, illumination and shading models and the impact of graphics on society. Three lectures, one tutorial (two hours every other week); one term Prerequisite(s): MATH 1B03 or 1ZC3, and COMPSCI 2C03 Antirequisite(s): SFWRENG 3GC3 Offered on an irregular basis.
COMPSCI 3EA3
Software Specifications and Correctness
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Formal specifications in software and system development; validation; verification; presentation of information; practical experience in formal specification and toolsupported verification. Three lectures; one tutorial (one hour); one term Prerequisite(s): COMPSCI 2LC3 or 2DM3, 2AC3 or 2FA3, 2ME3, 2SD3 or 3SD3 Offered on an irregular basis.
COMPSCI 3DP3
Data Privacy
Undergraduate Basics of data privacy, deanonymization, membership and reconstruction attacks, differential privacy, privacypreserving mechanisms, privacyutility tradeoffs and cost of privacy, adaptive data analysis Three lectures; one tutorial (one hour); one term Prerequisite(s): One of COMPSCI 2C03, SFWRENG 2C03, SFWRENG 2MD3, MECHTRON 2MD3; one of STATS 2D03, 3Y03, IBEHS 4C03; one of MATH 1B03, 1ZC3; basic Python programming. Offered on an irregular basis.
COMPSCI 3DM3
Introduction to Data Mining
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES This course introduces the core techniques in Big Data analytics, also known as knowledge discovery and data mining. Topics covered by this course include: frequent pattern mining, classification and clustering. Assignments and mini programming projects will be used to enhance and evaluate the learning performance of students. 3 lectures, 1 tutorial (1hour) PREREQUISITE(S): – One of COMPSCI 2DB3, COMPSCI 3DB3, SFWRENG 3DB3; – One of COMPSCI 2C03, SFWRENG 2C03 SFWRENG 2MD3, MECHTRON 2MD3; – One of COMPSCI 2ME3, SFWRENG 2AA4, SFWRENG 3K04, MECHTRON 3K04; – One of STATS 1L03, STATS 2D03, STATS 3Y03.
COMPSCI 3AC3
Algorithms and Complexity
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Basic computability models; the ChurchTuring thesis, complexity classes; P versus NP; NPcompleteness, reduction techniques; algorithmic design strategies; flows, distributed algorithms, advanced techniques such as randomization. Three lectures, one tutorial (one hour), second term Prerequisite(s): COMPSCI 2C03 or SFWRENG 2C03, COMPSCI 2AC3 or 2FA3 or SFWRENG 2FA3
COMPSCI 2XC3
Computer Science Practice and Experience: Algorithms and Software Design
Undergraduate Implementation of computational solutions to practical problems that combine algorithmic design and analysis with software design principles, through an experiential approach in simulated workplace environments. Communication skills: Technical documentation and presentation. Two lectures, one lab (three hours), second term Prerequisite(s): COMPSCI 1XC3, 1XD3, 2C03, 2ME3 Antirequisite(s): COMPSCI 2XB3, SFWRENG 2XB3
COMPSCI 1JC3
Introduction to Computational Thinking
Undergraduate Exploration of thinking that is inspired, supported, and enabled by computing. Survey of the salient ideas, methods, and technologies in the major areas of computing including basic data types, logic, operating systems, computer networking, web computing, information security, digital media, software development, and problem solving techniques. Introduction to the fundamentals of functional programming. Three lectures, one tutorial (two hours), first term Prerequisite(s): One of MATH 1K03, Grade 12 Advanced Functions and Introductory Calculus U, Grade 12 Calculus and Vectors, or registration in Computer Science 1
COMPSCI 2SD3
Concurrent Systems
Undergraduate Models of concurrency: process algebras, Petri nets, temporal logics and model checking; concurrency as software structuring principle: processes, threads, synchronization mechanisms, resource management and sharing; deadlock, safety and liveness; design, verification and testing of concurrent systems. Three lectures, one tutorial (two hours); second term Prerequisite(s): COMPSCI 2C03, 2LC3 or 2DM3, 2ME3 Corequisite(s): COMPSCI 2AC3 Antirequisite(s): COMPSCI 3SD3, SFWRENG 3BB4
COMPSCI 2ME3
Introduction to Software Development
Undergraduate Classes and inheritance, class invariants, interface specifications; objectoriented design patterns; exception handling; tools for interface documentation, testing, program analysis; requirements documentation; quality attributes; development models. Three lectures one tutorial (two hours); second term Prerequisite(s): COMPSCI 2DM3, 2S03 Prerequisite(s) (EFFECTIVE 20212022): COMPSCI 1XC3 and 1XD3 Corequisite(s) (EFFECTIVE 20212022): COMPSCI 2LC3
COMPSCI 2LC3
Logical Reasoning for Computer Science
Undergraduate Introduction to logic and proof techniques for practical reasoning: propositional logic, predicate logic, structural induction; rigorous proofs in discrete mathematics and programming. Three lectures, one tutorial (two hours); first term Prerequisite(s): COMPSCI 1DM3, COMPSCI 1MD3 or 1XC3 or 1XD3 Antirequisite(s): COMPSCI 2DM3, SFWRENG 2DM3
COMPSCI 2GA3
Computer Architecture
Undergraduate Introduction to logic gates, computer arithmetic, instructionset architecture, assembly programming, translation of highlevel languages into assembly. Computer system organization: datapath and control, pipelining, memory hierarchies, I/O systems; measures of performance. Three lectures, one tutorial, (one hour); first term Prerequisite(s): COMPSCI 1MD3 or ENGINEER 1D04 or IBEHS 1P10 Prerequisite(s) (EFFECTIVE 20212022): COMPSCI 1XC3 and 1DM3 Antirequisite(s): COMPENG 3DR4, 4DM4, SFWRENG 2GA3, 3GA3
COMPSCI 2DB3
Databases
Undergraduate Data modelling, integrity constraints, principles and design of relational databases, relational algebra, SQL, query processing, transactions, concurrency control, recovery, security and data storage. Three lectures, one tutorial (one hour); second term Prerequisite(s): COMPSCI 2LC3 or COMPSCI 2DM3 Antirequisite(s): COMPSCI 3DB3, 4DB3, SFWRENG 3DB3, 3H03, 4M03, 4DB3
COMPSCI 2C03
Data Structures and Algorithms
Undergraduate Basic data structures: stacks, queues, hash tables, and binary trees; searching and sorting; graph representations and algorithms, including minimum spanning trees, traversals, shortest paths; introduction to algorithmic design strategies; correctness and performance analysis. Three lectures, one tutorial (one hour); second term Prerequisite(s): COMPSCI 1DM3 or 2DM3; COMPSCI 1XC3 or 1XD3 or 1MD3 Antirequisite(s): SFWRENG 2C03 Effective 20212022, this course will be offered in first term.
COMPSCI 2AC3
Automata and Computability
Undergraduate Finite state machines, regular languages, regular expressions, applications of regular languages, grammars, contextfree languages, models of computation, computability and decidability. Three lectures, one tutorial (two hours); second term Prerequisite(s): COMPSCI 2LC3, 2C03 Antirequisite(s): COMPSCI 2FA3, 2MJ3, SFWRENG 2FA3
COMPSCI 1XD3
Computer Science Practice and Experience: Introduction to Software Design Using Web Programming
Undergraduate Introduction to different aspects of design: Identifying user needs, goals and desires and translating them into software, and structuring and communicating the structure of software to improve reliability, readability and adaptability. Topics include web languages and protocols, types and design patterns. Two lectures, two labs (two hours each); second term Prerequisite(s): COMPSCI 1JC3 and 1MD3 Antirequisite(s): COMPSCI 1XA3
COMPSCI 1XC3
Computer Science Practice and Experience: Development Basics
Undergraduate Acquiring familiarity with professional software development settings via practical experience with interaction with UNIXlike systems, programming in C, with documentation, testing, benchmarking, profiling and debugging; shell interaction and programming, pipes and filters; revision control. Two lectures, two labs (two hours each); second term Prerequisite(s): One of COMPSCI 1MD3 or ENGINEER 1D04 Antirequisite(s): COMPENG 2SH4, COMPSCI 1XA3, 2XA3, 2S03, SFWRENG 2MP3, 2S03, 2XA3
COMPSCI 1TA3
Elementary Computing And Computer Use
Undergraduate Organization of microcomputers (hardware and operating systems) and overview of computer communications; introduction to information exchange using word processing/ presentation software, the Internet and Web pages; problem solving using electronic spreadsheets and database applications. Three lectures, one tutorial; one term Antirequisite(s): COMPSCI 1BA3, COMPSCI 1MD3, 1SA3, ENGINEER 1D04, MMEDIA 1A03 Not open to students with credit or registration in COMPSCI 1MA3, 1MC3, HUMAN 2E03.
COMPSCI 1MD3
Introduction to Programming
Undergraduate Introduction to fundamental programming concepts: values and types, expressions and evaluation, control flow constructs and exceptions, recursion, input/output and file processing. Three lectures, one tutorial (one hour); first term Prerequisite(s): One of MATH 1K03, 1LS3, Grade 12 Advanced Functions and Introductory Calculus U, Grade 12 Calculus and Vectors Antirequisite(s): ENGINEER 1D04, MATH 1MP3
COMPSCI 4TB3
SyntaxBased Tools and Compilers
Undergraduate Lexical analysis, syntax analysis, type checking; syntaxdirected translation, attribute grammars; compiler structure; implications of computer architecture; mapping of programming language concepts; code generation and optimization. Two lectures, one tutorial, two labs (one hour each); second term Prerequisite(s): COMPSCI 2C03 or SFWRENG 2C03, and COMPSCI 2GA3 or SFWRENG 2GA3 or 3GA3, and COMPSCI 2AC3 or 2FA3 or SFWRENG 2FA3, and COMPSCI 3MI3 or registration in Level IV or above of a Software Engineering program Last offered 20222023.
COMPSCI 4TE3
Continuous Optimization Algorithms
Undergraduate Fundamental algorithms and duality concepts of continuous optimization. Motivation, applicability, information requirements and computational cost of the algorithms is discussed. Practical problems will illustrate the power of continuous optimization techniques. Three lectures, one tutorial (one hour); one term Prerequisite(s): One of MATH 2A03 or 2ZZ3 Antirequisite(s): SFWRENG 4TE3 Crosslist(s): SFWRENG 4TE3 Offered on an irregular basis.
COMPSCI 4TH3
Theory of Computation
Undergraduate Formal languages, models of computation, decidability, reduction techniques, time and space complexity classes. Three lectures, one tutorial (one hour); one term Prerequisite(s): COMPSCI 2AC3 or 2FA3, 2C03 Antirequisite(s): SFWRENG 4TH3 Crosslist(s): SFWRENG 4TH3 Offered on an irregular basis.
COMPSCI 4TI3
Fundamentals of Image Processing
Undergraduate Discretetime signals and systems, digital filter design, photons to pixels, linear filtering, edgedetection, nonlinear filtering, multiscale transforms, motion estimation. Three lectures; one term Prerequisite(s): Registration in Level III or above of a program offered by the Department of Computing and Software Offered on an irregular basis.
COMPSCI 4WW3
Web Systems and Web Computing
Undergraduate Network protocols underlying the world wide web; clientside programming: markup, styles, scripts, design, mobile/desktop; serverside programming: databases, dynamic languages; web services; cloud technologies; security. Three lectures; one term Prerequisite(s): COMPSCI 2ME3 or SFWRENG 2AA4; completion of COMPSCI 2DB3 or 3DB3, 3IS3, or 3N03 or 4C03 is recommended. Offered on an irregular basis.
COMPSCI 4X03
Scientific Computation
Undergraduate Computer arithmetic, stability, sensitivity. Numerical methods for polynomial manipulation, interpolation, data fitting, integration, differentiation, solving linear and nonlinear systems, ordinary differential equations and eigenvalue problems. Three lectures, one tutorial (one hour); second term Prerequisite(s): MATH 1AA3 or 1ZB3, and MATH 1B03 or 1ZC3 Antirequisite(s): COMPENG 3SK3, 3SK4, SFWRENG 3X03, 4X03 Crosslist(s): SFWRENG 4X03
COMPSCI 4Z03
Directed Readings
Undergraduate Directed readings in an area of computer science of interest to the student and the instructor. Prerequisite(s): Permission of the Chair of the Department and registration in Level IV of an Honours program in Computer Science
COMPSCI 4ZP6A/B
Computer Science Capstone Project
Undergraduate Students, in teams of two to four students, undertake a substantial project in an area of computer science by performing each step of the software life cycle. The lecture component presents an introduction to software management and project management. Lecture component in term one, weekly tutorials; two terms Prerequisite(s): Registration in Level IV of an Honours Computer Science program, Honours Business Informatics or Honours Computer Science as a Second Degree (B.A.Sc.)
ENGINEER 1D04
Engineering Computation
Undergraduate Development and analysis of simple algorithms. Implementation of algorithms in computer programming language. Design and testing of computer programs.
MECHTRON 2MD3
Data Structures and Algorithms for Mechatronics
Undergraduate Advanced programming with emphasis on embedded systems. Program specifications: Pre and postconditions, loop and datatype invariants; use of tools to demonstrate correctness. Selecting data structures for implementation of mathematical abstractions. Finite state machines, automata and languages; lexing and parsing. Algorithm analysis (time and space). Modelling of graphs, relations, corresponding algorithms. Three lectures, one tutorial; second term Prerequisite(s): MECHTRON 2MP3 or SFWRENG 2MP3; and registration in a Mechatronics Engineering program Antirequisite(s): COMPENG 2SI3, 2SI4, COMPSCI 2C03, SFWRENG 2C03, 2MD3
MECHTRON 2MP3
Programming for Mechatronics
Undergraduate This course focuses on learning programming using the highlevel systems programming language C, and on understanding how its features are implemented using the CPU and the memory hierarchy. Mathematical abstractions are implemented using fundamental data structures such as arrays, stacks, queues, etc., with static and dynamic memory allocation. Three lectures, one tutorial; first term Prerequisite(s): ENGINEER 1D04 or 1P13 or IBEHS 1P10, and registration in a Mechatronics Engineering program Antirequisite(s): COMPENG 2SH4, COMPSCI 2S03, SFWRENG 2MP3, 2S03
MECHTRON 2TA3
Embedded Systems Design I
Undergraduate Interfacing to digital and analog systems, sensors and actuators. Signals and conditioning: data acquisition, active and passive filtering, optical and analog isolation, pulsewidth modulation, (de)multiplexing. Architecture of microcontrollers and digital signal processors. Embedded system design and documentation. Three lectures, one tutorial (two hours) every other week, one lab (three hours) every other week; second term Prerequisite(s): ENGPHYS 2E04 or SFWRENG 2DA4; MECHTRON 2MP3 or SFWRENG 2MP3 or 2S03; SFWRENG 2GA3 or registration in Level II or above of a Mechatronics program Antirequisite(s): MECHTRON 3TA4
MECHTRON 3DX4
Dynamic Models and Control of Physical Systems
Undergraduate Modeling of dynamic continuous physical phenomena in both continuous and discrete time. Control theory, stability analysis and feedback controller design. Application of computer control to continuous processes, system identification.
MECHTRON 3K04
Software Development
Undergraduate Software design process. Professional responsibility. Using specifications. Documentation. Module Specification. Module interfaces. Module internal documentation. Coding styles. Portability. Software inspection. Software testing. Three lectures, one lab (three hours); first term Prerequisite(s): One of COMPENG 2SI3, 2SI4, ELECENG 2SI4, MECHTRON 2MD3, SFWRENG 2MD3 Antirequisite(s): COMPSCI 2ME3, SFWRENG 2AA4, 3K04
MECHTRON 3MX3
Signals and Systems
Undergraduate Linear systems, signals, filters; time and frequency domains; single inputsingle output systems; discrete and continuous time; sampling theorem; Fourier series; Fourier, Laplace, and Ztransforms; stability. Three lectures, one tutorial (one hour); first term Prerequisite(s): MATH 2Z03 Antirequisite(s): ELECENG 3TP3, IBEHS 3A03, SFWRENG 3MX3
MECHTRON 3TB4
Embedded Systems Design II
Undergraduate Design and implementation of embedded systems interacting with analog systems. Software design and implementation for embedded systems and DSP systems. Simulation and testing of embedded systems.
MECHTRON 3X03
Scientific Computation
Undergraduate Computer arithmetic and roundoff error analysis. Interpolation, integration, solving systems of linear and nonlinear equations. Eigenvalues and singular value decomposition. Numerical methods for ordinary differential equations. Three lectures, one tutorial (one hour); first term Prerequisite(s): Both MATH 1ZB3 and 1ZC3; or both MATH 1AA3 and 1B03; registration in a Mechatronics Engineering or Mechatronics and Biomedical Engineering program Antirequisite(s): COMPENG 3SK3, 3SK4, COMPSCI 4X03, SFWRENG 3X03, 4X03
MECHTRON 4AA4
RealTime Systems and Control Applications
Undergraduate Hard and soft realtime systems. Safety classification. Failsafe design, hazard analysis. Discrete event systems. Modes. Requirements and design specifications. Tasks and scheduling. Clock synchronization. Data acquisition. Applications in realtime control.
MECHTRON 4AX3
Predictive and Intelligent Control
Undergraduate LIST A: MECHATRONICS, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES This course introduces several concepts used in systems engineering, predictive control and artificial intelligence. A variety of techniques including prediction and estimation, linear models, basic optimization techniques, Monte Carlo techniques, neural networks, and clustering are introduced. The techniques are applied to predictive and smart systems by the example of model predictive control and intelligent control, classification and decisionmaking. The course is intended for engineering students with understanding in signals and systems and control. Three lectures and one tutorial; one term Prerequisite(s): MECHTRON 3DX4 or SFWRENG 3DX4 or IBEHS 4A03 Offered on an irregular basis.
MECHTRON 4TB6A/B
Mechatronics Engineering Capstone Design Project
Undergraduate Student teams prepare the requirements, design, documentation and implementation of a Mechatronics System taking economic, health, safety, cultural, legal and marketing factors into account. Students must demonstrate a working system and convincing test results.
SFWRENG 2AA4
Software Design I – Introduction to Software Development
Undergraduate Software life cycle, quality attributes, requirements documentation, specifying behaviour; classes and objects, interface specification; creational patterns, structural design patterns, behavioural design patterns; implementation in code, reviews, testing and verification.
SFWRENG 2C03
Data Structures And Algorithms
Undergraduate Basic data structures: stacks, queues, hash tables, and binary trees; searching and sorting; graph representations and algorithms, including minimum spanning trees, traversals, shortest paths; introduction to algorithmic design strategies; correctness and performance analysis.
SFWRENG 2DA4
Digital Systems and Interfacing
Undergraduate Memory, binary arithmetic, hierarchical design. Hardware/software codesign and application specific processors. Interfacing to I/O devices.
SFWRENG 2DM3
Discrete Mathematics with Applications I
Undergraduate Functions, relations and sets; the language of predicate logic, propositional logic; proof techniques, counting principles; induction and recursion, discrete probabilities, graphs, and their application to computing.
SFWRENG 2FA3
Discrete Mathematics with Applications II
Undergraduate Finite state automata and grammars, predicate logic and formal proofs, models of computation, complexity, modular arithmetics, and their applications to computing.
SFWRENG 2GA3
Computer Architecture
Undergraduate Instructionset architecture, computer arithmetic, datapath and control, pipelining, memory hierarchies, I/O systems, multiprocessor systems, graphic processors, measures of performance.
SFWRENG 2OP3
ObjectOriented Programming
Undergraduate Principles of objectoriented programming: Classes, objects, interfaces, references, methods and fields; types of inheritance, overriding, polymorphism, overloading, covariance and contravariance, exception handling, generics, closures; design by contract; use of standard APIs. Three lectures, one tutorial (one hour); first term Prerequisite(s): ENGINEER 1D04 or 1P13, or IBEHS 1P10 Antirequisite(s): COMPENG 2SH4, COMPSCI 2S03, SFWRENG 2S03
SFWRENG 2XC3
Software Engineering Practice and Experience: Development Basics
Undergraduate Fundamental concepts of lowlevel imperative programming, with documentation, testing, benchmarking, profiling and debugging, revision control. Acquiring familiarity with professional software development settings via practical experience with interaction with UNIXlike systems, shell interaction and programming, pipes and filters. One lecture, two labs (two hours each); first term. Prerequisite(s): ENGINEER 1D04 or 1P13 or IBEHS 1P10 Antirequisite(s): COMPENG 2SH4, COMPSCI 1XC3, 2XA3, 2S03, MECHTRON 2MP3, SFWRENG 2MP3, 2S03, 2XA3
SFWRENG 3A04
Software Design II – Large System Design
Undergraduate Sustainable architectures; design for change and expansion; software architecture design space; object oriented analysis and design; architectural styles; methodology of making architecture decisions; project organization.
SFWRENG 3BB4
Software Design III – Concurrent System Design
Undergraduate Processes, threads, concurrency; synchronization mechanisms, resource management and sharing; objects and concurrency; design, architecture and testing of concurrent systems.
SFWRENG 3DB3
Databases
Undergraduate LIST A: MECHATRONICS Data modeling, integrity constraints, principles and design of relational databases, relational algebra, SQL, query processing, transactions, concurrency control, recovery, security and data storage.
SFWRENG 3DX4
Dynamic Models and Control of Physical Systems
Undergraduate Modelling of dynamic continuous physical phenomena in both continuous and discrete time. Control theory, stability analysis and feedback controller design. Application of computer control to continuous processes. System identification.
SFWRENG 3FP3
Functional Programming
Undergraduate LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Functional programming; lists and algebraic data types, pattern matching, parametric polymorphism, higherorder functions, reasoning about programs; lazy and strict evaluation; programming with monads; domainspecific languages.
SFWRENG 3GB3
Game Design
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES, LIST G: COMPUTER SCIENCE Game concepts. Creative and expressive play. Storytelling and narratives. User interfaces for games. Gameplay. Core mechanics. Game Balancing. Software architecture of games. Level design. Genres. Physics Engines.
SFWRENG 3GC3
Computer Graphics
Undergraduate LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Mathematical foundations, the graphics pipeline, geometrical transformations, 3D visualization, clipping, illumination and shading models and the impact of graphics on society.
SFWRENG 3I03
Communication Skills
Undergraduate Oral and written presentation skills; types and structure of technical documents; software documentation for the user; formulating and presenting proposals.
SFWRENG 3K04
Software Development
Undergraduate Software design process. Professional responsibility. Using specifications. Documentation. Module Specification. Module interfaces. Module internal documentation. Coding styles. Portability. Software inspection. Software testing.
SFWRENG 3MX3
Signals and Systems
Undergraduate LIST G: COMPUTER SCIENCE Linear systems, signals, filters; time and frequency domains; single inputsingle output systems; discrete and continuous time; sampling theorem; Fourier series; Fourier, Laplace, and z transforms; stability.
SFWRENG 3O03
Linear Optimization
Undergraduate LIST F: ADDITIONAL TECHNICAL ELECTIVES FOR SOFTWARE ENGINEERING AND EMBEDDED SYSTEMS OR GAME DESIGN, IBEHS TECHNICAL ELECTIVES Modelling and solutions for engineering optimization problems using Linear and Integer Programming, including transportation and assignment problems, multiobjective problems and scheduling. Solution methods include primaldual schemes (algorithms), simplex, branch and bound, and heuristics.
SFWRENG 3RA3
Software Requirements And Security Considerations
Undergraduate LIST A: MECHATRONICS Software requirements gathering. Critical systems requirements gathering. Security requirements. Traceability of requirements. Verification, validation, and documentation techniques. Software requirements quality attributes. Security policies. Measures for data confidentiality. Design principles that enhance security. Access control mechanisms.
SFWRENG 3S03
Software Testing
Undergraduate LIST G: COMPUTER SCIENCE Measurements. Unit testing, slicing and debugging, integration testing, regression testing, testing strategies, test coverage.
SFWRENG 3SH3
Operating Systems
Undergraduate LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Processes and threads, synchronization and communication; scheduling, memory management; file systems; resource protection; structure of operating systems.
SFWRENG 3XA3
Software Engineering Practice and Experience: Software Project Management
Undergraduate Openended software development emphasizing concurrent system design; measurement, inspection, software metrics, software project management; testing methods.
SFWRENG 3XB3
Software Engineering Practice and Experience: Binding Theory to Practice
Undergraduate Openended design of computational solutions to practical problems that involve both theoretical (algorithmic) analysis and implementation; solving computational problems through an experiential approach. Applications to embedded systems, including assembly programming. One lecture, two labs (two hours each); first term Prerequisite(s): SFWRENG 2AA4, 2C03, 2GA3 Antirequisite(s): SFWRENG 2XB3, COMPSCI 2XB3, 2XC3 First offered 20222023
SFWRENG 4AA4
RealTime Systems and Control Applications
Undergraduate Hard and soft realtime systems. Safety classification. Failsafe design, hazard analysis. Discrete event systems. Modes. Requirements and design specifications. Tasks and scheduling. Clock synchronization. Data acquisition. Applications in realtime control.
SFWRENG 4AD3
Advanced Databases
Undergraduate LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Advanced topics in database systems technology and design. Topics include: query processing; query optimization; data storage; indexing; crash recovery; physical database design; introductory data mining techniques.
SFWRENG 4C03
Computer Networks And Security
Undergraduate LIST A: MECHATRONICS Physical networks, TCP/IP protocols, switching methods, network layering and components, network services. Information security, computer and network security threats, defense mechanisms, encryption.
SFWRENG 4E03
Performance Analysis Of Computer Systems
Undergraduate LIST A: MECHATRONICS, LIST F: ADDITIONAL TECHNICAL ELECTIVES FOR SOFTWARE ENGINEERING AND EMBEDDED SYSTEMS OR GAME DESIGN Use of queuing models and simulation to predict computer system performance and find bottlenecks in a system. Types of models, distributions. Markov models. Modelling storage and network behaviour, locks, critical sections, concurrency. Introduction to analytical system reliability.
SFWRENG 4F03
Parallel Computing
Undergraduate LIST A: MECHATRONICS, LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Parallel architectures, design and analysis of parallel algorithms; distributedmemory, sharedmemory and GPU computing; communication cost, scalability; MPI, OpenMP and OpenACC; tuning parallel programs for performance.
SFWRENG 4G06A/B
Software Engineering Capstone Design Project
Undergraduate Student teams prepare the requirements, design, documentation, and implementation of a software system taking economic, health, safety, legal, marketing factors into account. Students must demonstrate a working system and convincing test results. Software project management.
SFWRENG 4HC3
Human Computer Interfaces
Undergraduate Design of user interfaces. Principles of good interface design. Human input. Displaying complex data using graphics and virtual reality. Modes and mode awareness problem. Health issues, information overload. Special purpose graphics hardware. Interface design tools; online help systems.
SFWRENG 4J03
Communications Systems
Undergraduate LIST A: MECHATRONICS, LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES, LIST G: COMPUTER SCIENCE Fundamental communications concepts: information, entropy, channel capacity, codes, data compression, adaptive channel equalizers, modulation/demodulation of signals, tracking, Kalman filtering, use of specialized signal processing hardware. Software in communication systems.
SFWRENG 4TE3
Continuous Optimization Algorithms
Undergraduate LIST A: MECHATRONICS, LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES, LIST F: ADDITIONAL TECHNICAL ELECTIVES FOR SOFTWARE ENGINEERING AND EMBEDDED SYSTEMS OR GAME DESIGN, IBEHS TECHNICAL ELECTIVES Fundamental algorithms and general duality concepts of continuous optimization. Special attention will be paid to the applicability of the algorithms, their information requirements and computational costs. Practical engineering problems will illustrate the power of continuous optimization techniques.
SFWRENG 4TH3
Theory of Computation
Undergraduate Formal languages, models of computation, decidability, reduction techniques, time and space complexity classes. Three lectures, one tutorial (one hour); one term Prerequisite(s): SFWRENG 2C03, 2FA3 Antirequisite(s): COMPSCI 4TH3 Crosslist(s): COMPSCI 4TH3
SFWRENG 4X03
Scientific Computation
Undergraduate Computer arithmetic and roundoff error analysis. Interpolation, integration, solving systems of linear and nonlinear equations. Eigenvalues and singular value decomposition. Numerical methods for ordinary differential equations.
COMPSCI 4WW3
Web Systems and Web Computing
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Network protocols underlying the world wide web; clientside programming: markup, styles, scripts, design, mobile/desktop; serverside programming: databases, dynamic languages; web services; cloud technologies; security. Three lectures; one term Prerequisite(s): COMPSCI 2ME3 or SFWRENG 2AA4; completion of COMPSCI 2DB3 or 3DB3, 3IS3, or 3N03 or 4C03 is recommended. Offered on an irregular basis.
SFWRENG 3MD3
Safe SoftwareIntensive Medical Devices
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES, IBEHS TECHNICAL ELECTIVES Comprehensive overview of and experience with system development and assurance for safety critical softwareintensive systems in general, and safe, secure and effective medical devices in particular: System requirements, validation, system design including hardware and software components, software design, implementation, and verification. Three lectures, one lab (two hours); one term Prerequisite(s): COMPENG 2SI4 or COMPSCI 2C03 or SFWRENG 2C03 or 2MD3Code  Title  Instructor  Outline  Info 

COMPSCI 1DM3 Undergraduate  Discrete Mathematics for Computer Science 

More  
COMPSCI 4O03 Undergraduate  Linear Optimization Algorithms 

More  
COMPSCI 4ML3 Undergraduate  Introduction to Machine Learning 

More  
COMPSCI 4HC3 Undergraduate  Human Computer Interfaces 

More  
COMPSCI 4FP3 Undergraduate  Functional Programming 

More  
COMPSCI 4F03 Undergraduate  Parallel Computing 

More  
COMPSCI 4EN3 A/B Undergraduate  Software Entrepreneurship 

More  
COMPSCI 4E03 Undergraduate  Performance Analysis of Computer Systems 

More  
COMPSCI 4DC3 Undergraduate  Distributed Computing 

More  
COMPSCI 4C03 Undergraduate  Computer Networks and Security 

More  
COMPSCI 4AR3 Undergraduate  Software Architecture 

More  
COMPSCI 3RA3 Undergraduate  Software Requirements and Security Considerations 

More  
COMPSCI 3TB3 Undergraduate  SyntaxBased Tools and Compilers 

More  
COMPSCI 4AD3 Undergraduate  Advanced Databases 

More  
COMPSCI 3SH3 Undergraduate  Computer Science Practice and Experience: Operating Systems 

More  
COMPSCI 3N03 Undergraduate  Computer Networks and Security 

More  
COMPSCI 3MI3 Undergraduate  Principles Of Programming Languages 

More  
COMPSCI 3IS3 Undergraduate  Information Security 

More  
COMPSCI 3GC3 Undergraduate  Computer Graphics 

More  
COMPSCI 3EA3 Undergraduate  Software Specifications and Correctness 

More  
COMPSCI 3DP3 Undergraduate  Data Privacy 

More  
COMPSCI 3DM3 Undergraduate  Introduction to Data Mining 

More  
COMPSCI 3AC3 Undergraduate  Algorithms and Complexity 

More  
COMPSCI 2XC3 Undergraduate  Computer Science Practice and Experience: Algorithms and Software Design 

More  
COMPSCI 1JC3 Undergraduate  Introduction to Computational Thinking 

More  
COMPSCI 2SD3 Undergraduate  Concurrent Systems 

More  
COMPSCI 2ME3 Undergraduate  Introduction to Software Development 

More  
COMPSCI 2LC3 Undergraduate  Logical Reasoning for Computer Science 

More  
COMPSCI 2GA3 Undergraduate  Computer Architecture 

More  
COMPSCI 2DB3 Undergraduate  Databases 

More  
COMPSCI 2C03 Undergraduate  Data Structures and Algorithms 

More  
COMPSCI 2AC3 Undergraduate  Automata and Computability 

More  
COMPSCI 1XD3 Undergraduate  Computer Science Practice and Experience: Introduction to Software Design Using Web Programming 

More  
COMPSCI 1XC3 Undergraduate  Computer Science Practice and Experience: Development Basics 

More  
COMPSCI 1TA3 Undergraduate  Elementary Computing And Computer Use 

More  
COMPSCI 1MD3 Undergraduate  Introduction to Programming 

More  
COMPSCI 4TB3 Undergraduate  SyntaxBased Tools and Compilers 

More  
COMPSCI 4TE3 Undergraduate  Continuous Optimization Algorithms 

More  
COMPSCI 4TH3 Undergraduate  Theory of Computation 

More  
COMPSCI 4TI3 Undergraduate  Fundamentals of Image Processing 

More  
COMPSCI 4WW3 Undergraduate  Web Systems and Web Computing 

More  
COMPSCI 4X03 Undergraduate  Scientific Computation 

More  
COMPSCI 4Z03 Undergraduate  Directed Readings 

More  
COMPSCI 4ZP6A/B Undergraduate  Computer Science Capstone Project 

More  
ENGINEER 1D04 Undergraduate  Engineering Computation 

More  
MECHTRON 2MD3 Undergraduate  Data Structures and Algorithms for Mechatronics 

More  
MECHTRON 2MP3 Undergraduate  Programming for Mechatronics 

More  
MECHTRON 2TA3 Undergraduate  Embedded Systems Design I 

More  
MECHTRON 3DX4 Undergraduate  Dynamic Models and Control of Physical Systems 

More  
MECHTRON 3K04 Undergraduate  Software Development 

More  
MECHTRON 3MX3 Undergraduate  Signals and Systems 

More  
MECHTRON 3TB4 Undergraduate  Embedded Systems Design II 

More  
MECHTRON 3X03 Undergraduate  Scientific Computation 

More  
MECHTRON 4AA4 Undergraduate  RealTime Systems and Control Applications 

More  
MECHTRON 4AX3 Undergraduate  Predictive and Intelligent Control 

More  
MECHTRON 4TB6A/B Undergraduate  Mechatronics Engineering Capstone Design Project 

More  
SFWRENG 2AA4 Undergraduate  Software Design I – Introduction to Software Development 

More  
SFWRENG 2C03 Undergraduate  Data Structures And Algorithms 

More  
SFWRENG 2DA4 Undergraduate  Digital Systems and Interfacing 

More  
SFWRENG 2DM3 Undergraduate  Discrete Mathematics with Applications I 

More  
SFWRENG 2FA3 Undergraduate  Discrete Mathematics with Applications II 

More  
SFWRENG 2GA3 Undergraduate  Computer Architecture 

More  
SFWRENG 2OP3 Undergraduate  ObjectOriented Programming 

More  
SFWRENG 2XC3 Undergraduate  Software Engineering Practice and Experience: Development Basics 

More  
SFWRENG 3A04 Undergraduate  Software Design II – Large System Design 

More  
SFWRENG 3BB4 Undergraduate  Software Design III – Concurrent System Design 

More  
SFWRENG 3DB3 Undergraduate  Databases 

More  
SFWRENG 3DX4 Undergraduate  Dynamic Models and Control of Physical Systems 

More  
SFWRENG 3FP3 Undergraduate  Functional Programming 

More  
SFWRENG 3GB3 Undergraduate  Game Design 

More  
SFWRENG 3GC3 Undergraduate  Computer Graphics 

More  
SFWRENG 3I03 Undergraduate  Communication Skills 

More  
SFWRENG 3K04 Undergraduate  Software Development 

More  
SFWRENG 3MX3 Undergraduate  Signals and Systems 

More  
SFWRENG 3O03 Undergraduate  Linear Optimization 

More  
SFWRENG 3RA3 Undergraduate  Software Requirements And Security Considerations 

More  
SFWRENG 3S03 Undergraduate  Software Testing 

More  
SFWRENG 3SH3 Undergraduate  Operating Systems 

More  
SFWRENG 3XA3 Undergraduate  Software Engineering Practice and Experience: Software Project Management 

More  
SFWRENG 3XB3 Undergraduate  Software Engineering Practice and Experience: Binding Theory to Practice 

More  
SFWRENG 4AA4 Undergraduate  RealTime Systems and Control Applications 

More  
SFWRENG 4AD3 Undergraduate  Advanced Databases 

More  
SFWRENG 4C03 Undergraduate  Computer Networks And Security 

More  
SFWRENG 4E03 Undergraduate  Performance Analysis Of Computer Systems 

More  
SFWRENG 4F03 Undergraduate  Parallel Computing 

More  
SFWRENG 4G06A/B Undergraduate  Software Engineering Capstone Design Project 

More  
SFWRENG 4HC3 Undergraduate  Human Computer Interfaces 

More  
SFWRENG 4J03 Undergraduate  Communications Systems 

More  
SFWRENG 4TE3 Undergraduate  Continuous Optimization Algorithms 

More  
SFWRENG 4TH3 Undergraduate  Theory of Computation 

More  
SFWRENG 4X03 Undergraduate  Scientific Computation 

More  
COMPSCI 4WW3 Undergraduate  Web Systems and Web Computing 

More  
SFWRENG 3MD3 Undergraduate  Safe SoftwareIntensive Medical Devices 

More 
Course Listing – Graduate
CAS 701
Logic and Discrete Mathematics
Graduate The course will cover some of the material encountered at the undergraduate courses on logic and discrete mathematics as well as advanced material on topics such as proof systems, sets, relations, and functions, recursion, type theory, and first and higher order logic systems. There will be emphasis on topics related to computer science and software engineering.
CAS 702
Data Structures and Algorithms
Graduate The course will cover some basic material encountered at the relevant undergraduate courses on data structures and algorithms plus more advanced material on topics such as network flows, linear programming, computational geometry and NPcompleteness. There will be emphasis on techniques such as greedy and dynamic programming. Amongst other topics, the course covers the following: • Binomial heaps, an example of worstcase analysis • Amortized analysis • Fibonacci heaps, an example of amortized analysis • Hash tables, an example of randomized analysis • Greedy algorithms and matroids • Dynamic programming and allpairs shortest paths • Maximum flow • Linear Programming and Duality •PrimalDual schema as an algorithmic design tool • Approximation algorithms
CAS 703
Software Design
Graduate Formal specification methods. Requirements specifications. Failsafe systems. Verification of safety critical applications. Systematic testing. Specification and design of concurrent, multiprocess and distributed systems.
CAS 704
Embedded, RealTime Software Systems
Graduate 1. Scheduling a. Timebased scheduling b. Classical results for single processor scheduling algorithms c. Multiprocessor scheduling d. Scheduling with energy concerns The rest of the course coverage will be filled in after a vote of the class. The following are all possibilities. 2. RealTime Operating Systems – we can look at TinyOS, details of its implementation and some applications. 3. Fault Tolerance Techniques 4. StateSpace Control Theory and RealTime Implementation 5. Specification of RealTime Systems (examine in detail one framework – UML, Timed Petri Nets, etc.) 6. Individual Student Presentations – allows you to explore and present a topic of your choice.
CAS 705
Computability and Complexity
Graduate Computability: Finite automata, Turing machines, and recursive functions. The Halting problem and the ChurchTuring thesis. Complexity: Classes defined in terms of time, space, and circuits. The reachability method. The P vs. NP problem, Cook’s theorem, and NPcompleteness. The Time and Space Hierarchy theorems. Randomized and parallel computations.
CAS 706
Programming Languages
Graduate Design, definition and implementation of programming languages. Programming language paradigms; syntax, attribute grammars, typing; axiomatic, operational and denotational semantics; correctness proofs; implementation techniques, virtual machines; design and implementation of DomainSpecific Languages.
CAS 707
Formal Specification Techniques
Graduate Pre/Postconditions, refinement, statebased approaches, event based approaches, algebraic specifications, Petri nets, temporal logic, properties of programs, and specification, verification, and validation.
CAS 708
Scientific Computation
Graduate Floatingpoint arithmetic, solutions of systems of linear equations by direct and iterative methods, sparse matrix algorithms, solving systems of nonlinear equations, integration, differentiation, eigenvalue problems, methods for initial value problems in ordinary differential equations, and automatic differentiation.
CAS 720
Foundations of Future Resilient Databases
Graduate The field of databases is ever evolving. Recent directions include the development of resilient database systems based on blockchain technology that can deal with failures and enable cooperative data management. In this course, we will provide an introduction to this area, starting with a basic treatment of consensusbased transaction processing and with a further focus on selected topics. . The course assumes a preexisting knowledge of databases and discrete mathematics at an undergraduate level (e.g., COMPSCI 3DB3 and COMPSCI 2DM3). Note: although this course will cover some blockchainrelated topics, this course is not about cryptocurrencies.
CAS 721
Combinatorics and Computing
Graduate Topics in applied combinatorics and graph theory of importance to both theoretical computer science and practical computing including combinatorial computing. Main topics: graph theory and algorithms, combinatorial optimization and algorithms, design theory and coding theory. Solving problems in finite combinatorics using computers.
CAS 722
Computing Patterns in Strings
Graduate This course deals with algorithms for finding “patterns” in strings, patterns of three main kinds: specific, generic, and intrinsic. The importance of approximate patterns and algorithms which identify them is made clear. Applications to DNA sequence analysis and other scientific areas are emphasized.
CAS 724
Concurrency Theory
Graduate Models based on interleaving and partial order paradigms including the Calculus of Communicating Systems (CCS), Communicating Sequential Processes (CSP), Actors, Petri Nets, Pomsets and COSY. Basic properties of concurrent systems such as deadlock, liveness, safety, fairness, etc. Temporal Logic techniques. The growing role of concurrent systems in many diverse scientific and engineering activities will also be discussed.
CAS 725
Formal Methods of RealTime Systems
Graduate Introduction to formal methods including equivalence verification, modelchecking and theorem proving. Emphasis on verification of safetycritical realtime control systems using automated theorem provers and simple programming techniques.
CAS 726
Robot Learning
Graduate This course provides an indepth exploration of applications of machine learning to autonomous systems. The course will assume basic familiarity with modern supervised machine learning methods. The first part of the course will introduce the classical probabilisitic modelling approach to autonomous systems and robotics. In the second part of the course we will investigate particular applications of machine learning within the classical framework, focusing on perception and planning. In the final part of the course we will introduce the basics of reinforcement learning and investigate applications to autonomous systems.
CAS 728
Computability on Abstract Data Types
Graduate N/A
CAS 733
Mobile User Interface Design
Graduate An advanced look at User Interface issues associated with mobile devices, e.g. smart phones. This course is for graduate students who have already taken a course in humancomputer interaction and already know how to program nontrivial applications on at least one mobile device. Through literature review, and experimentation, students will learn how the advent of mobile devices is changing our approach to humancomputer interactions, and will practice a quantitative approach to evaluating the effectiveness of user interface concepts.
CAS 734
Formalized Mathematics
Graduate Computersupported, formalized mathematical reasoning for practical applications. Specification and verification in higherorder logic. Interactive theorem proving systems. Techniques for developing axiomatic theories.
CAS 735
(Micro)serviceoriented architectures
Graduate The design of distributed applications triggers software architectures challenges at different levels. This course will focus on the definition of “businessoriented services” at the architectural level, from their inception to their deployment into a production environment. This class aims to cover selected topics related to (micro)serviceoriented architectures, architectural patterns for distributed applications, service portfolio management and operational deployment of distributed systems. Students will be exposed to the technical dimension of such systems and stateoftheart research in this domain. The course assumes a preexisting knowledge of how to design and test pieces of software (e.g., undergrad course on these topics).
CAS 736
Analysis of Stochastic Networks
Graduate Techniques for the analysis of large networks that can be modeled in a statistical manner. Single queues, product form networks and mean value analysis. Fluid and diffusion approximations. Simulation techniques, including variance reduction. Hybrid simulation. Current research directions in Stochastic networks.
CAS 737
Computer Animation
Graduate Computer animation has been widely used in AR/VR applications, game development and entertainment industry. The goal of this course is to provide knowledge in different aspects of computer animation area for research and development purposes. This course will first introduce the fundamentals of computer animation, then further delve into kinematics, rigging, skinning and blendshapes for animating characters. It will cover classic motion capture, synthesis and editing techniques, as well as stateoftheart research in animation area using deep learning, reinforcement learning and physics simulations. To take this course, students are expected to have prerequisite knowledge in Linear Algebra, Geometry, Data Structure and programming.
CAS 738
Algebraic Methods in Software Engineering and Computer Science
Graduate The course covers a variety of software development issues, and illustrates the versatility of algebraic methods when used as conceptual tools in the software development process. The topics include algebraic approaches to software requirements, design, program verification, testing, and security. Several algebraic structures, such as relation algebra, Kleene algebra, and product family algebra, are introduced and discussed within software related issues.
CAS 739
Evolutionary Computation
Graduate Evolutionary computation is a family of wildly creative algorithms that draw inspiration from genetics and natural selection. This course investigates the history and theory of evolutionary computation with a focus on applications in search and optimization. Handson programming experiments and readings from the literature will introduce key principles and place evolutionary methods in context with the broader realm of bioinspired computing in machine learning and artificial life.
CAS 740
Numerical Methods for Ordinary Differential Equations and DifferentialAlgebraic Equations
Graduate Numerical methods for ODEs and DAEs; RungeKutta, multistep methods; convergence, accuracy, consistency; error estimation and propagation, step size and order control; stability, nonstiff and stiff methods; software for ODEs and DAEs.
CAS 741
Development of Scientific Computing Software
Graduate This course presents the basic principles of software development for reliable scientific and engineering software. Using example applications, a systematic process is given for the development and documentation of requirements, highlevel design, module design, implementation, testing and inspection.
CAS 743
Functional Programming
Graduate The powerful abstraction capabilities and clean semantics of functional programming languages improve programmer efficiency and facilitate correct program derivation and transformation. This course will present practical aspects of software development in modern functional programming languages and theoretical foundations, like term rewriting systems, lambdacalculi, and type systems.
CAS 744
Advanced Topics in Design of Algorithms
Graduate Advanced design techniques for algorithms, including (but not limited to): approximation algorithms, randomized algorithms, online computation and competitive analysis, quantum computing. Each term the course will concentrate mainly on one of these topics for a deeper understanding of the particularities and the defining problems/issues of the field as well as its applications to other fields and to practice. Presentation of up to date results and tackling of open research problems will be the main requirement for the students taking this course.
CAS 745
Supervisory Control of DiscreteEvent Systems
Graduate This course is an introduction to the control of discreteevent systems (DES), asynchronous systems discrete in space and time (e.g. manufacturing systems, communication systems, etc.). The course will provide a solid foundation for research in this area, focusing on architectural issues such as modular, decentralized, and hierarchical control. The course will also discuss timed DES, as well as current topics of interest.
CAS 746
Advanced Topics in Combinatorial Optimization
Graduate This course provides an introduction to useful frameworks for discrete optimization problems. We introduce the basic concepts of polyhedra, lattices and integer cones and illustrate these notions by some examples coming from combinatorial optimization. An algorithm for finding the Hermite normal form of a lattice and the main methods for facet or vertex enumeration are presented. http://www.cas.mcmaster.ca/~deza/cas746_18.html
CAS 747
Machine Learning on Graphs
Graduate Complex data in the realworld can often be represented as a graph of relationships between objects or entities. This course focuses on the computational, algorithmic and modeling challenges related to the analysis of large scale graphs and networks. Students will be introduced to machine learning techniques and data mining tools that reveal insights on a variety of graphs and networks. Topics include: graph representation learning, graph neural networks, algorithms for complex networks, reasoning over Knowledge Graphs, influence maximization, and social network analysis.
CAS 748
Analysis and Synthesis of Sound
Graduate Sound as signals (Fourier Analysis, basic harmony theory), Sound analysis (filters, FFT), Synthesis (band limited signals), oversampling, realtime signal processing, user interfaces (real time interaction with algorithms), vocoders, physical modeling (fast DSP algorithms to solve PDE’s).
CAS 749
Advanced Topics in Computational Geometry
Graduate This course provides an introduction to useful frameworks for computational geometry problems in dimension 2, 3 and higher. We introduce the basic concepts of triangulations, Voronoi diagrams, polyhedra, lattices and integer cones, arrangement of hyperplanes and linear programming and illustrate these notions by some examples coming from combinatorial optimization.
CAS 750
ModelBased Image Reconstruction
Graduate An overview of three themes in advanced image processing: functional analysis (e.g., Fourier, Wavelet and SVD methods), PDEs (e.g., anisotropic diffusion), optimization of statistical models (e.g. Total Variation regularization). And, a detailed look at specific methods and techniques for applying these methods in new areas: medical imaging, visual process control. Including all phases of application development from mathematical modeling, through complexity analysis.
CAS 751
InformationTheoretic Methods in Trustworthy Machine Learning
Graduate The interplay between information theory and computer science is a constant theme in the development of both fields. This course discusses how techniques rooted in information theory play a key role in (i) understanding the fundamental limits of classical highdimensional problems in machine learning and (ii) formulating emerging objectives such as generalization bounds, privacy, fairness, and interpretability. The course begins with an overview of important concepts in information theory such as channel capacity and ratedistortion theory, and then touches upon recent advances in: minimax estimation risk and sample complexity, generalization, differential privacy, algorithmic fairness, model interpretability, and explainability. No background in information theory is required, but some knowledge of machine learning, statistics and probability (equivalent to undergraduate courses in the topic) are needed.
CAS 754
Programming Methodology
Graduate Verification and Refinement Methods for Sequential and Concurrent Programs, Specification Techniques, Reliability, ObjectOrientation (Modeling, Design, Patterns, Concurrency), Program Design and Program Documentation, Tools and Compilers.
CAS 756
Advanced Topics in Formal Methods and Software Architecture
Graduate The course presents advanced techniques for formal specification of requirements, designs and implementations of software based systems, focusing on software architecture as the organi sing principle for software development. Course content will include some topics amongst: comparative properties of formalisms for specification; metaproperties of specification formalisms, including interpolation properties, modularity and their relationships; component based approaches and the role of category theory in component composition; formalisation of encapsulation, cohesion and coupling; externalisation of interaction definition; formal toolkit for software architecture.
CAS 758
Advanced Compiler Design and Optimization
Graduate Advanced compiler design methodologies with emphasis on control and data flow analyses, code optimization and related issues. http://www.cas.mcmaster.ca/~franek/courses/cas758/
CAS 760
Logic for Practical Use
Graduate Attributes of a practical logic. Techniques for improving the practicality of traditional logics. Design, implementation, and use of practiceoriented logics.
CAS 761
Generative Programming
Graduate Generative programming has recently graduated from an old technique for very specific tasks (like parser generators) to a general purpose tool. It has clear applications to modeldriven software engineering, software product families and featureoriented programming. It is also finding increasing applications in embedded systems. Unlike other programming paradigms, a proper scientific study of generative programming has only been started quite recently, and introductory material is still sparse. Topics: generative programming techniques (metaprogramming, templates, staged computation, etc). Domain specific languages. Applications to software product families and software product lines. Domain analysis and feature modelling. If time permits, constraintbased approaches and transformation systems. After taking the course, the students will be able to perform domain analysis and design, and implement program generators using a number of different technologies. The course will be conducted through studentled discussions of important papers in the domain.
CAS 763
Certified Programming with Dependent Types
Graduate Type systems featuring types depending on values empower not only logics that can capture common mathematical formalizations more naturally than conventional firstorder or higherorder logics; they also empower programming languages where specifications may be incorporated into the type of programs, and welltyped programs are thus guaranteed to satisfy these specifications. Students will learn at least one dependentlytyped programming language in depth. The course will also cover associated foundations, including relevant type theories and the CurryHoward correspondence, as well as useful patterns of formalizing, programming, and proving in dependentlytyped programming languages.
CAS 764
Advance Topics in Data Management
Graduate Systems and users are generating increasing amounts of heterogeneous data from diverse sources (e.g., system logs, sensor networks, databases, medical records, tweets, etc). To extract value from these datasets (via querying and analysis) first requires data preparation to clean, transform, and enrich the raw data into a structure that is desirable for analysis. The challenges of managing largescale, heterogeneous, poor quality, and fast data, go beyond the capabilities of traditional database systems. This course will explore dataintensive applications, and the algorithms that are needed for different data management tasks.
CAS 765
Wireless Networking and Mobile Computing
Graduate This course introduces fundamental concepts, stateoftheart research and applications of wireless networking and mobile computing. Topics covered include wireless network protocols, wireless standards, locationbased services and techniques, security, and programming on mobile platforms.
CAS 766
Concurrent Programming
Graduate Processes and Synchronization, Atomicity, Mutual exclusion, Locks and Barriers, Semaphores, Monitors, Message Passing, Parallel Programming, Patterns for Concurrency, Transactional Memory, Linearizability, Consensus, Lockfree Algorithms, Multicore Processors, Heterogeneous Computing with GPU and FPGA, Applications.
CAS 767
Information Privacy and Security
Graduate This course covers issues and technologies in Information Privacy, Security, and Accountability. The course surveys cryptography, digital signature, key management, authentication, certificates, PKI, Application layer Access control policies and mechanisms, data forensics, Internet security protocols, trust management, information and web privacy, privacy and data aggregation, audit log mechanisms, privacy policy expression and enforcement, Differential Privacy, Security and privacy in healthcare, Social networking security and privacy, Usable security and privacy, and privacyenhancing technologies. Students will undertake a project that employs and integrates these technologies.
CAS 768
Development and Certification of SafetyCritical Software Intensive Systems
Graduate Safetycritical systems are becoming more and more part of our everyday lives – cars, planes, trains, medical devices and nuclear power plants are obvious examples of safetycritical systems. Most of these systems depend on software for their correct functioning. This course is about building and certifying such systems. The emphasis is on the software component(s).
CAS 771
Introduction to Big Data Systems and Applications
Graduate Nowadays, unstructured data such as multimedia data account for around 80% of Internet traffic. Meanwhile, more than 80% of potentially usable business information exists in unstructured formats (e.g., audio/video information, social network relations, users’ purchasing habits, environmental data). Much of the unstructured data remains unused because the algorithms available for analyzing and understanding unstructured data usually do not scale up to handle the amount of data being generated. This course will discuss and explore the computer system design to deal with large scale unstructured data.
CAS 772
Mobile Data Analytics
Graduate With the prevalence of wireless technologies and broadband access, untethered mobile and wearable devices have become an essential part of everyday life. The deluge of multimodality, high volume, streaming and in some cases unstructured spatialtemporal data from mobile devices poses serious challenges to algorithm and system design to extract timely information and actionable items. This class aims to cover selected topics on data acquisition, sensor signal processing, machine learning techniques, data management and processing systems pertaining to mobile data analytics as well as stateoftheart research in this area.
CAS 774
Foundations of Machine Learning
Graduate The course starts off by introducing a standard mathematical model (i.e,. the PAC model) for studying machine learning problems. The first half of the course is then dedicated to understanding this model, characterizing “learnability” within this model, and establishing the foundations of Computational Learning Theory. The main topics here include sample complexity, VC dimension, NoFreeLunch Theorem, and the Fundamental Theorem of Learning. The primary textbook for this part of the course is “Understanding Machine Learning: From Theory to Algorithms” By Shai ShalevShwartz and Shai BenDavid. In the second half of the course, various tasks and algorithms are studied and analyzed via the lens of the proposed theoretical foundations. These topics include Distribution Learning, Learning via Compression, and Clustering, and Deep Learning.
CAS 775
Foundations Unsupervised Learning
Graduate The main focus of the course is on the modern aspects of distribution learning. The topics include PAC learning of distributions, efficient learning of mixture models, information theoretic aspects of distribution learning, computational complexity distribution learning, models for robust distribution learning, differentially private distribution learning, open questions in modern distribution learning, generative adversarial networks, and variational autoencoders. The course will be mostly based on recent papers, but some introductory aspects can be found in the book titled “Combinatorial Methods in Density Estimation” by Luc Devroye and Gabor Lugosi.
CAS 780
Independent Study in Computing and Software
Graduate Normally a selfstudy course. Prerequisite: Permission of the Chair of the Department.
CAS 781
Modern Approaches to Game Design
Graduate
CAS 781
Advanced Topics: Machine Learning on Graphs
Graduate Complex data in the realworld can often be represented as a graph of relationships between objects or entities. Such networks are fundamental tools to model technological, biological and social relationships. This course focuses on the computational, algorithmic and modeling challenges related to the analysis of large scale graphs and networks. By studying the underlying graph structure and its features, students will be introduced to machine learning techniques and data mining tools that reveal insights on a variety of graphs and networks. Topics of this course include: graph representation learning, Graph Neural Networks, algorithms for complex networks, reasoning over Knowledge Graphs, influence maximization and social network analysis.
CAS 781
User Interface Frameworks and Programming Languages
Graduate Graphical User Interfaces were developed together with programming languages, specifically objectoriented languages starting with Smalltalk. Since newer interface framework authors wanted to learn from previous frameworks, and make things easier for programmers already familiar with early frameworks, subsequent frameworks went through largely gradual change, and the perception developed that OO languages were the “right” tool for UI frameworks, although lost in this slogan were the differences among OO languages, such as dynamic versus static dispatch. In this seminar course, students will research historical and current UI Frameworks and and build a story about the evolution of UI frameworks and the interaction of those frameworks with the evolution of programming languages. Depending on the number of students, we may only cover “core” languages and frameworks like Smalltalk80, Swift/UIKit, Elm/GraphicSVG or Java/Swing and based on the knowledge of the students, try to predict the future evolution of UI frameworks based on recent developments in programming languages. Depending on enrolment, we will also contrast the UI framework features which evolved from Smalltalk80, those which evolved from html, and attempts to create UI frameworks for functional languages.
CAS 781
Advanced Topics: Mobility in the Aging Population (Part II)
Graduate The proportion of older adults (aged 65 and older) worldwide has been increasing steadily over the past 40 years. In Canada, it has been projected that seniors will represent up to 25% of the total population by 2036. Mobility is a crucial indicator of functional status, and a predictor of quality of life and longevity; hence, it is often called the sixth vital sign. Mobility encompasses not only the physical activities of older adults, and the performance of specific maneuvers such as sittostand, walking or climbing stairs, but also participation in society (e.g., the ability to drive, accessibility to public transportation). This course (MiA II) is the second installment of a twopart 6unit credit course that spans two terms. The main goals of MiA II are 1) to put in practices principles and tools learned from MiA I in group design projects, 2) to work in an interdisciplinary team, and 3) to develop a technical solution with realworld impacts.
CAS 781
Advanced Topics: Mobility in the Aging Population (Part I)
Graduate The proportion of older adults (aged 65 and older) worldwide has been increasing steadily over the past 40 years. In Canada, it has been projected that seniors will represent up to 25% of the total population by 2036. Mobility is a crucial indicator of functional status, and a predictor of quality of life and longevity; hence, it is often called the sixth vital sign. Mobility encompasses not only the physical activities of older adults, and the performance of specific maneuvers such as sittostand, walking or climbing stairs, but also participation in society (e.g., the ability to drive, accessibility to public transportation). This course (MiA I) is the first of a twopart 6unit credit course that spans two terms. This main goals of MiA 1 are to provide students in the CREATE program from diverse backgrounds the necessary foundational knowledge to understand mobility challenges faced by older adults and their physiological roots, usercentric research design and methods in multidisciplinary settings, and key technologies including data management, machine learning, sensors and sensor data analysis, as well as new frontiers in sensing. The lectures will be offered by renown experts in related fields from three institutions.
CAS 781
Advanced Topics: Intermediate Language for Functional Programming
Graduate The paper “Types Are Calling Conventions” (Bolingbroke and Peyton Jones) proposes an intermediate language for use in compilers of functional programming languages based on function types. The goal of this course is to understand the history of intermediate languages for functional programming, the innovations in this paper and subsequent papers, and the challenges to implementing Strict Core, through a parallel effort to summarize the related literature, and build up a toy example.
COMPSCI 6E03
Performance Analysis of Computer Systems
Graduate Use of queuing models and simulation to predict computer system performance and find bottlenecks in a system. Types of models, distributions. Markov models. Modelling storage and network behaviour, locks, critical sections, concurrency. Introduction to analytical system reliability.
COMPSCI 6F03
Distributed Computer Systems
Graduate Parallel architectures, design and analysis of parallel algorithms; distributedmemory, sharedmemory and GPU computing; communication cost, scalability; MPI, OpenMP and OpenACC; tuning parallel programs for performance.
COMPSCI 6O03
Linear Optimization
Graduate Linear programming, integer programming, decision trees, network flow problems, graph algorithms, route planning, applications to engineering problems.
COMPSCI 6TB3
Syntax Based Tools and Compilers
Graduate Lexical analysis, syntax analysis, type checking; syntaxdirected translation, attribute grammars; compiler structure; implications of computer architecture; mapping of programming language concepts; code generation and optimization.
COMPSCI 6TC3
Recursive Function Theory and Computability
Graduate Recursive and primitive recursive functions, decidability and undecidability with applications to formal language theory, logic and algebra.
COMPSCI 6TE3
Continuous Optimization
Graduate Fundamental algorithms and general duality concepts of continuous optimization. Special attention will be paid to the applicability of the algorithms, their information requirements and computational costs. Practical engineering problems will illustrate the power of continuous optimization techniques.
COMPSCI 6WW3
Web Systems and Web Computing
Graduate World wide web as networks: protocols, clients/servers and social issues; programming systems: markups, scripts, styles; platform technologies; WWW services: standard systems, browserbased, security issues, examples.
MECHTRON 6AX3
Intelligent and Predictive Control
Graduate This course introduces several concepts used in systems engineering, predictive control and artificial intelligence. A variety of techniques including prediction and estimation, linear models, basic optimization techniques, Monte Carlo techniques, neural networks, and clustering are introduced. The techniques are applied to predictive and smart systems by the example of model predictive control and intelligent control, classification and decision making. The course is intended for engineering students with understanding in signals and systems and control.
SFWRENG 6GA3
RealTime Systems and Computer Game Applications
Graduate Hard and soft realtime systems. Safety classification. Failsafe design, hazard analysis. Discrete event systems. Modes. Requirements and design specifications. Tasks and scheduling. Clock synchronization. Date acquisition. Applications in realtime networking, quality of service and multimedia.
SFWRENG 6HC3
Human Computer Interfaces
Graduate A study of the principles of good interface design. Information overload problems and accommodating user mental models. Human input and technology insertion methods. Information and data visualization techniques. Modes and the mode awareness problem. Human factors and health issues, ergonomics. Interface design tools and Performance Support Systems.Code  Title  Instructor  Outline  Info 

CAS 701 Graduate  Logic and Discrete Mathematics 

Outline  More 
CAS 702 Graduate  Data Structures and Algorithms 

Outline  More 
CAS 703 Graduate  Software Design 

Outline  More 
CAS 704 Graduate  Embedded, RealTime Software Systems 

Outline  More 
CAS 705 Graduate  Computability and Complexity 

Outline  More 
CAS 706 Graduate  Programming Languages 

Outline  More 
CAS 707 Graduate  Formal Specification Techniques 

Outline  More 
CAS 708 Graduate  Scientific Computation 

Outline  More 
CAS 720 Graduate  Foundations of Future Resilient Databases 

More  
CAS 721 Graduate  Combinatorics and Computing 

More  
CAS 722 Graduate  Computing Patterns in Strings 

Outline  More 
CAS 724 Graduate  Concurrency Theory 

More  
CAS 725 Graduate  Formal Methods of RealTime Systems 

More  
CAS 726 Graduate  Robot Learning 

More  
CAS 728 Graduate  Computability on Abstract Data Types 

More  
CAS 733 Graduate  Mobile User Interface Design 

More  
CAS 734 Graduate  Formalized Mathematics 

More  
CAS 735 Graduate  (Micro)serviceoriented architectures 

More  
CAS 736 Graduate  Analysis of Stochastic Networks 

More  
CAS 737 Graduate  Computer Animation 

More  
CAS 738 Graduate  Algebraic Methods in Software Engineering and Computer Science 

Outline  More 
CAS 739 Graduate  Evolutionary Computation 

More  
CAS 740 Graduate  Numerical Methods for Ordinary Differential Equations and DifferentialAlgebraic Equations 

More  
CAS 741 Graduate  Development of Scientific Computing Software 

Outline  More 
CAS 743 Graduate  Functional Programming 

More  
CAS 744 Graduate  Advanced Topics in Design of Algorithms 

More  
CAS 745 Graduate  Supervisory Control of DiscreteEvent Systems 

Outline  More 
CAS 746 Graduate  Advanced Topics in Combinatorial Optimization 

Outline  More 
CAS 747 Graduate  Machine Learning on Graphs 

More  
CAS 748 Graduate  Analysis and Synthesis of Sound 

Outline  More 
CAS 749 Graduate  Advanced Topics in Computational Geometry 

Outline  More 
CAS 750 Graduate  ModelBased Image Reconstruction 

Outline  More 
CAS 751 Graduate  InformationTheoretic Methods in Trustworthy Machine Learning 

More  
CAS 754 Graduate  Programming Methodology 

More  
CAS 756 Graduate  Advanced Topics in Formal Methods and Software Architecture 

Outline  More 
CAS 758 Graduate  Advanced Compiler Design and Optimization 

Outline  More 
CAS 760 Graduate  Logic for Practical Use 

Outline  More 
CAS 761 Graduate  Generative Programming 

Outline  More 
CAS 763 Graduate  Certified Programming with Dependent Types 

Outline  More 
CAS 764 Graduate  Advance Topics in Data Management 

More  
CAS 765 Graduate  Wireless Networking and Mobile Computing 

More  
CAS 766 Graduate  Concurrent Programming 

Outline  More 
CAS 767 Graduate  Information Privacy and Security 

More  
CAS 768 Graduate  Development and Certification of SafetyCritical Software Intensive Systems 

More  
CAS 771 Graduate  Introduction to Big Data Systems and Applications 

More  
CAS 772 Graduate  Mobile Data Analytics 

Outline  More 
CAS 774 Graduate  Foundations of Machine Learning 

More  
CAS 775 Graduate  Foundations Unsupervised Learning 

Outline  More 
CAS 780 Graduate  Independent Study in Computing and Software 

More  
CAS 781 Graduate  Modern Approaches to Game Design 

More  
CAS 781 Graduate  Advanced Topics: Machine Learning on Graphs 

More  
CAS 781 Graduate  User Interface Frameworks and Programming Languages 

More  
CAS 781 Graduate  Advanced Topics: Mobility in the Aging Population (Part II) 

More  
CAS 781 Graduate  Advanced Topics: Mobility in the Aging Population (Part I) 

Outline  More 
CAS 781 Graduate  Advanced Topics: Intermediate Language for Functional Programming 

More  
COMPSCI 6E03 Graduate  Performance Analysis of Computer Systems 

More  
COMPSCI 6F03 Graduate  Distributed Computer Systems 

More  
COMPSCI 6O03 Graduate  Linear Optimization 

Outline  More 
COMPSCI 6TB3 Graduate  Syntax Based Tools and Compilers 

More  
COMPSCI 6TC3 Graduate  Recursive Function Theory and Computability 

More  
COMPSCI 6TE3 Graduate  Continuous Optimization 

Outline  More 
COMPSCI 6WW3 Graduate  Web Systems and Web Computing 

More  
MECHTRON 6AX3 Graduate  Intelligent and Predictive Control 

More  
SFWRENG 6GA3 Graduate  RealTime Systems and Computer Game Applications 

More  
SFWRENG 6HC3 Graduate  Human Computer Interfaces 

More 
Course Listing – Technical Electives
Please click “More” to verify the approved technical elective list(s) for each course.
COMPSCI 4ML3
Introduction to Machine Learning
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Regression, Classification and Decision Theory, BiasVariance Tradeoff, Linear Models, Kernel Methods, Probabilistic Models, Neural Networks, Model Aggregation, Unsupervised Learning. Three lectures, one tutorial; one term Prerequisite(s): One of COMPSCI 2C03 or SFWRENG 2C03 or SFWRENG 2MD3. One of STATS 1L03, STATS 2D03, STATS 3Y03. One of COMPSCI 4O03 or 4X03 or SFWRENG 3O03 or 4X03 is recommended. Offered on an irregular basis.
COMPSCI 4DC3
Distributed Computing
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Models of distributed computation, formal reasoning about distributed systems, time and message complexity, distributed agreement under adversarial attacks, distributed coordination and symmetry breaking, peertopeer computing, simulation as a tool for building more advanced functionality, actormodel programming. Three lectures, one tutorial; one term Prerequisite(s): One of COMPSCI 2C03 or SFWRENG 2C03 or SFWRENG 2MD3, and one of COMPSCI 2SD3 or 3SD3 or SFWRENG 3BB4 or SFWRENG 3SH3 Offered on an irregular basis.
COMPSCI 4AD3
Advanced Databases
Undergraduate LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES Advanced topics in database systems technology and design. Topics include: query processing; query optimization; data storage; indexing; crash recovery; physical database design; introductory data mining techniques. Three lectures, one tutorial; one term Prerequisite(s): COMPSCI 3DB3 Antirequisite(s): SFWRENG 4AD3 Crosslist(s): SFWRENG 4AD3 Offered on an irregular basis.
COMPSCI 3IS3
Information Security
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Basic principles of information security; threats and defences; cryptography; introduction to network security and security management. Three lectures; one term Prerequisite(s): COMPSCI 2AC3 or 2FA3 or SFWRENG 2FA3, and COMPSCI 2C03 or SFWRENG 2C03 Offered on an irregular basis.
COMPSCI 3EA3
Software Specifications and Correctness
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Formal specifications in software and system development; validation; verification; presentation of information; practical experience in formal specification and toolsupported verification. Three lectures; one tutorial (one hour); one term Prerequisite(s): COMPSCI 2LC3 or 2DM3, 2AC3 or 2FA3, 2ME3, 2SD3 or 3SD3 Offered on an irregular basis.
COMPSCI 3DM3
Introduction to Data Mining
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES This course introduces the core techniques in Big Data analytics, also known as knowledge discovery and data mining. Topics covered by this course include: frequent pattern mining, classification and clustering. Assignments and mini programming projects will be used to enhance and evaluate the learning performance of students. 3 lectures, 1 tutorial (1hour) PREREQUISITE(S): – One of COMPSCI 2DB3, COMPSCI 3DB3, SFWRENG 3DB3; – One of COMPSCI 2C03, SFWRENG 2C03 SFWRENG 2MD3, MECHTRON 2MD3; – One of COMPSCI 2ME3, SFWRENG 2AA4, SFWRENG 3K04, MECHTRON 3K04; – One of STATS 1L03, STATS 2D03, STATS 3Y03.
COMPSCI 3AC3
Algorithms and Complexity
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Basic computability models; the ChurchTuring thesis, complexity classes; P versus NP; NPcompleteness, reduction techniques; algorithmic design strategies; flows, distributed algorithms, advanced techniques such as randomization. Three lectures, one tutorial (one hour), second term Prerequisite(s): COMPSCI 2C03 or SFWRENG 2C03, COMPSCI 2AC3 or 2FA3 or SFWRENG 2FA3
MECHTRON 4AX3
Predictive and Intelligent Control
Undergraduate LIST A: MECHATRONICS, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES This course introduces several concepts used in systems engineering, predictive control and artificial intelligence. A variety of techniques including prediction and estimation, linear models, basic optimization techniques, Monte Carlo techniques, neural networks, and clustering are introduced. The techniques are applied to predictive and smart systems by the example of model predictive control and intelligent control, classification and decisionmaking. The course is intended for engineering students with understanding in signals and systems and control. Three lectures and one tutorial; one term Prerequisite(s): MECHTRON 3DX4 or SFWRENG 3DX4 or IBEHS 4A03 Offered on an irregular basis.
SFWRENG 3DB3
Databases
Undergraduate LIST A: MECHATRONICS Data modeling, integrity constraints, principles and design of relational databases, relational algebra, SQL, query processing, transactions, concurrency control, recovery, security and data storage.
SFWRENG 3FP3
Functional Programming
Undergraduate LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Functional programming; lists and algebraic data types, pattern matching, parametric polymorphism, higherorder functions, reasoning about programs; lazy and strict evaluation; programming with monads; domainspecific languages.
SFWRENG 3GB3
Game Design
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES, LIST G: COMPUTER SCIENCE Game concepts. Creative and expressive play. Storytelling and narratives. User interfaces for games. Gameplay. Core mechanics. Game Balancing. Software architecture of games. Level design. Genres. Physics Engines.
SFWRENG 3GC3
Computer Graphics
Undergraduate LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Mathematical foundations, the graphics pipeline, geometrical transformations, 3D visualization, clipping, illumination and shading models and the impact of graphics on society.
SFWRENG 3MX3
Signals and Systems
Undergraduate LIST G: COMPUTER SCIENCE Linear systems, signals, filters; time and frequency domains; single inputsingle output systems; discrete and continuous time; sampling theorem; Fourier series; Fourier, Laplace, and z transforms; stability.
SFWRENG 3RA3
Software Requirements And Security Considerations
Undergraduate LIST A: MECHATRONICS Software requirements gathering. Critical systems requirements gathering. Security requirements. Traceability of requirements. Verification, validation, and documentation techniques. Software requirements quality attributes. Security policies. Measures for data confidentiality. Design principles that enhance security. Access control mechanisms.
SFWRENG 3S03
Software Testing
Undergraduate LIST G: COMPUTER SCIENCE Measurements. Unit testing, slicing and debugging, integration testing, regression testing, testing strategies, test coverage.
SFWRENG 3SH3
Operating Systems
Undergraduate LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Processes and threads, synchronization and communication; scheduling, memory management; file systems; resource protection; structure of operating systems.
SFWRENG 4AD3
Advanced Databases
Undergraduate LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Advanced topics in database systems technology and design. Topics include: query processing; query optimization; data storage; indexing; crash recovery; physical database design; introductory data mining techniques.
SFWRENG 4C03
Computer Networks And Security
Undergraduate LIST A: MECHATRONICS Physical networks, TCP/IP protocols, switching methods, network layering and components, network services. Information security, computer and network security threats, defense mechanisms, encryption.
SFWRENG 4E03
Performance Analysis Of Computer Systems
Undergraduate LIST A: MECHATRONICS, LIST F: ADDITIONAL TECHNICAL ELECTIVES FOR SOFTWARE ENGINEERING AND EMBEDDED SYSTEMS OR GAME DESIGN Use of queuing models and simulation to predict computer system performance and find bottlenecks in a system. Types of models, distributions. Markov models. Modelling storage and network behaviour, locks, critical sections, concurrency. Introduction to analytical system reliability.
SFWRENG 4F03
Parallel Computing
Undergraduate LIST A: MECHATRONICS, LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Parallel architectures, design and analysis of parallel algorithms; distributedmemory, sharedmemory and GPU computing; communication cost, scalability; MPI, OpenMP and OpenACC; tuning parallel programs for performance.
SFWRENG 4J03
Communications Systems
Undergraduate LIST A: MECHATRONICS, LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES, LIST G: COMPUTER SCIENCE Fundamental communications concepts: information, entropy, channel capacity, codes, data compression, adaptive channel equalizers, modulation/demodulation of signals, tracking, Kalman filtering, use of specialized signal processing hardware. Software in communication systems.
SFWRENG 4TE3
Continuous Optimization Algorithms
Undergraduate LIST A: MECHATRONICS, LIST D: SOFTWARE ENGINEERING AND SOCIETY TECHNICAL ELECTIVES, LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES, LIST F: ADDITIONAL TECHNICAL ELECTIVES FOR SOFTWARE ENGINEERING AND EMBEDDED SYSTEMS OR GAME DESIGN, IBEHS TECHNICAL ELECTIVES Fundamental algorithms and general duality concepts of continuous optimization. Special attention will be paid to the applicability of the algorithms, their information requirements and computational costs. Practical engineering problems will illustrate the power of continuous optimization techniques.
COMPSCI 6O03
Linear Optimization
Graduate Linear programming, integer programming, decision trees, network flow problems, graph algorithms, route planning, applications to engineering problems.
COMPSCI 6TB3
Syntax Based Tools and Compilers
Graduate Lexical analysis, syntax analysis, type checking; syntaxdirected translation, attribute grammars; compiler structure; implications of computer architecture; mapping of programming language concepts; code generation and optimization.
ASTRON 2B03
The Big Questions
Technical Elective LIST C: SOFTWARE ENGINEERING BASIC SCIENCE ELECTIVES Ultimate questions in modern science are surveyed with emphasis on physical sciences: origin of spacetime, elements and structure in the cosmos (stars, planets, galaxies.)
ASTRON 2E03
Planetary Astronomy
Technical Elective LIST C: SOFTWARE ENGINEERING BASIC SCIENCE ELECTIVES Physical and mathematical foundation of planetary astronomy. Historical development of ideas about the solar system. A modern view of the planets; the origin and evolution of the solar system and planets around other stars.
BIOLOGY 1A03
Cellular and Molecular Biology
Technical Elective LIST C: SOFTWARE ENGINEERING BASIC SCIENCE ELECTIVES Structure, molecular composition and function in subcellular and cellular systems. Three hours (lectures, web modules), one lab (two hours); one term Prerequisite(s): One of Grade 12 Biology U, BIOLOGY 1P03 or registration in an Engineering program Corequisite(s): WHMIS 1A00, and BIOSAFE 1BS0 (or HTHSCI 1BS0) if not already completed. Both requirements must be completed prior to the first lab. Not open to students with credit or registration in HTHSCI 1I06 A/B or ISCI 1A24 A/B. Students are strongly encouraged to take BIOLOGY 1A03 and BIOLOGY 1M03 in the different terms.
BIOLOGY 1M03
Biodiversity, Evolution and Humanity
Technical Elective LIST C: SOFTWARE ENGINEERING BASIC SCIENCE ELECTIVES Fundamental evolutionary and ecological concepts with particular reference to the diversity of life. Three lectures, seminar/lab (two hours every other week); one term Prerequisite(s): Grade 12 Biology U or BIOLOGY 1P03 Not open to students with credit or registration in ISCI 1A24 A/B. Students are strongly encouraged to take BIOLOGY 1A03 and 1M03 in the different terms.
CHEM 1AA3
Introductory Chemistry II
Technical Elective LIST C: SOFTWARE ENGINEERING BASIC SCIENCE ELECTIVES A discussion of organic chemistry, chemical kinetics, acidbase equilibrium, and the energetics of phase transformations, with emphasis on relevant experimental techniques and solving real problems ranging from drug discovery to environmental chemistry.
COMPENG 3DQ5
Digital Systems Design
Technical Elective LIST B: MECHATRONICS Permission of ECE required
COMPENG 4DN4
Advanced Internet Communications
Technical Elective LIST B: MECHATRONICS 4 units Advanced internet protocols; routing, security, encryption; quality of service; ATM, RSVP, video and voice over IP; terminals, gateways and gatekeepers; wireless networks; WDM systems; optical crossconnects. Three lectures, one tutorial, one lab every other week; second term Prerequisite(s): COMPENG 4DK4
COMPENG 4DS4
Embedded Systems
Technical Elective LIST B: MECHATRONICS Embedded processor architectures and SOC organization; EDA tools for hardware/software codesign; coverification and testability; interfacing; coprocessors, soft processors and ASIP design; realtime systems; applications. Two lectures, one tutorial, one lab every week; second term Prerequisite(s): COMPENG 3DQ5, or permission of the Department
COMPENG 4TN4
Image Processing
Technical Elective LIST B: MECHATRONICS Digital image formation and representation; filtering, enhancement and restoration; edge detection; discrete image transforms; encoding and compression; segmentation; recognition and interpretation; 3D imagery; applications. Three lectures, one tutorial, one lab every other week; second term Prerequisite(s): ELECENG 3TP4 or 3TP3; one of ELECENG 3TQ4, ELECENG 3TQ3 or STATS 3Y03
COMPSCI 4WW3
Web Systems and Web Computing
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Network protocols underlying the world wide web; clientside programming: markup, styles, scripts, design, mobile/desktop; serverside programming: databases, dynamic languages; web services; cloud technologies; security. Three lectures; one term Prerequisite(s): COMPSCI 2ME3 or SFWRENG 2AA4; completion of COMPSCI 2DB3 or 3DB3, 3IS3, or 3N03 or 4C03 is recommended. Offered on an irregular basis.
ELECENG 3PI4
Energy Conversion
Technical Elective LIST B: MECHATRONICS Permission of ECE required.
ELECENG 4BC3 / IBEHS 4BC3
Modelling of Biological Systems
Technical Elective LIST B: MECHATRONICS Introduction to mathematical and engineering methods for describing and predicting the behaviour of biological systems; including sensory receptors, neuromuscular and biomechanical systems; statistical models of biological function; kinetic models of biological thermodynamics. Prerequisite(s): Registration in Level IV Electrical and Biomedical Engineering
ELECENG 4BD4 / IBEHS 4BD4
Biomedical Instrumentation
Technical Elective LIST B: MECHATRONICS Permission of ECE required.
ELECENG 4OJ4
Research Project
Technical Elective LIST B: MECHATRONICS A researchoriented project under the direct supervision of a faculty member to foster initiative and independent creativity while working on an advanced topic.First or second term Prerequisite(s): Prior arrangement with an Electrical and Computer Engineering faculty member, a minimum cumulative GPA of 9.5, registration in Level IV or V of any program in the Department of Electrical and Computer Engineering; or permission of the department. Antirequisite(s): COMPENG 4OK4, ELECENG 4OK4, IBEHS 3I06 A/B
ELECENG 4PN4
Electric Motor Drives
Technical Elective Fundamentals of electric motor drives are studied. The operating principles of different electric motor types and drives, speed and position control, starting, and braking are covered. Three lectures, one tutorial, one lab every other week; second term Prerequisite(s): ELECENG 3PI4
ENGINEER 4EX3 A/B
Experiential Engineering Design
Technical Elective LIST B: MECHATRONICS
ENGPHYS 3O04
Introduction to Fluid Mechanics and Heat Transfer
Technical Elective LIST B: MECHATRONICS Fluid properties and statics are introduced. Basic equations of continuity, energy and momentum for internal and external flows are discussed. Similitude, dimensional analysis, measuring devices, fluid machinery and hydraulic networks. Conduction and convection heat transfer. Three lectures, one lab (three hours each) every other week; one tutorial, second term Prerequisite(s): MATH 2Z03 and credit or registration in MATH 2ZZ3 Antirequisite(s): CIVENG 2O04, MECHENG 3O04, CHEMENG 2O04
ENGPHYS 4B03
Biosensors – Fundamentals and Applications
Technical Elective This course covers the underlying operating principles and defining metrics of biological sensors, and it will discuss the integration of these sensors into systems for diagnostics and health monitoring applications. Three lectures; first term Prerequisite(s): Registration in Level III or above in any engineering program or registration in Level IV or above in the Integrated Biomedical Engineering & Health Sciences (IBEHS) Program.
ENGPHYS 4I03
Introduction to Biophotonics
Technical Elective This course covers the basic principles of light interaction with biological systems and specific biomedical applications of photonics such as optical light microscopy, endoscopic imaging, spectroscopy in clinical diagnosis, flow cytometry, microoptical sensors, etc. Three lectures; second term Prerequisite(s): Registration in Level III or above in a Faculties of Engineering, Science, or Health Sciences, or the Integrated Biomedical Engineering & Health Sciences (IBEHS) Program Crosslist(s): MEDPHYS 4I03
ENGPHYS 4QC3
Introduction to Quantum Computing
Technical Elective LIST B: MECHATRONICS An introduction to quantum computing including qubits, entanglement, quantum key cryptography, teleportation, quantum circuits and algorithms, spin qubits. Three lectures; second term Prerequisite(s): ENGPHYS 2QM3 or PHYSICS 2C03
ENVIRSC 1C03
Climate, Water And Environment
Technical Elective LIST C: SOFTWARE ENGINEERING BASIC SCIENCE ELECTIVES An introduction to the science of environmental issues and sustainability through the study of the soil, climate and water processes.
ENVIRSC 1G03
Earth and the Environment
Technical Elective LIST C: SOFTWARE ENGINEERING BASIC SCIENCE ELECTIVES An introduction to environmental geology and geomorphology through study of the processes that form the earth and its surface features. A mandatory field trip will be held.
HTHSCI 1I06 A/B
Cellular and Molecular Biology
Technical Elective Students will explore the molecular basis of cellular communication (gene expression, cellular signaling) underlying disease processes. A hybrid approach blending didactic and inquirybased approaches will be used. Two sessions per week (three hours each); two terms Prerequisite(s): Grade 12 U Biology and registration in Health Sciences I, or Grade 12 U Biology and registration in the Integrated Biomedical Engineering and Health Sciences (IBEHS) program. Corequisite(s): WHMIS 1A00 . Students registering in HTHSCI 1I06 A/B must also register in WHMIS 1A00 when completing their registration. Antirequisite(s): BIOLOGY 1A03
HTHSCI 2E03
Inquiry II: Biochemistry
Technical Elective LIST C: SOFTWARE ENGINEERING BASIC SCIENCE ELECTIVES This course will use an inquiry based format to introduce key concepts in biochemistry, molecular biology and biomedical sciences to understand illnesses such as infectious diseases, metabolic disorders, genetic diseases and cancer. One term Prerequisite(s): HTHSCI 1I06 A/B
MATLS 3M03
Mechanical Behaviour of Materials
Technical Elective LIST B: MECHATRONICS
MECHENG 4AA3
Aerodynamics
Technical Elective Forces and moments associated with flow around airfoils and bodies. Finite wings. Potential flow and introduction to panel methods. Thin airfoil theory and symmetric and cambered airfoils. Introduction to aircraft stability and aeroelasticity. Three lectures; second term Prerequisite(s): MECHENG 3O04
MECHENG 4B03
Topics in Product Development
Technical Elective LIST B: MECHATRONICS Case studies using modern product development methods, value engineering, product specification, rapid product development, lean design and continuous improvement. Product liability and robust design. Three lectures, one tutorial; first term Prerequisite(s): Registration in Level IV or above of any Mechanical Engineering or Mechatronics Engineering program
MECHENG 4E03
Microelectromechanical Systems (MEMS)
Technical Elective LIST B: MECHATRONICS Permission of Mechanical Engineering required.
MECHENG 4O04
Sustainable Energy Systems
Technical Elective Assessment of current and future energy systems, covering resources, extraction, conversion with emphasis on meeting regional and global energy needs in a sustainable manner. Different renewable and conventional energy technologies and their attributes. Evaluation and analysis of energy technology systems in the context of political, social, economic and environmental goals. Four lectures; second term Prerequisite(s): MECHENG 2W04, 3O04; or ENGPHYS 2NE3, 3O04; or permission of the Department
MECHENG 4Q03
Mechanical Vibrations
Technical Elective LIST B: MECHATRONICS Transient and steady state vibration of single and multidegree of freedom systems. Free and forced vibrations of single and multiple degreeoffreedom mechanical systems, transient response, damping and vibration isolation. Three lectures; first term Prerequisite(s): ENGINEER 2Q04 or MECHENG 2Q04 or 2QA4 and registration in any Mechanical Engineering or Mechatronics program
MECHENG 4Z03
CAD/CAM/CAE
Technical Elective LIST B: MECHATRONICS Solid modelling theory, part creation, assemblies and rigid bodies, mechanism simulation, BSplines, data exchange, CNC machining and inspection. Major project using computer laboratory facilities. Three lectures, one lab (one hour); second term Prerequisite(s): Registration in Level IV or above of any Mechanical Engineering or Mechatronics Engineering program Antirequisite(s): MECHENG 4ZR3
PHYSICS 1L03
Physics Of Living Systems
Technical Elective LIST C: SOFTWARE ENGINEERING BASIC SCIENCE ELECTIVES
SFWRENG 3MD3
Safe SoftwareIntensive Medical Devices
Undergraduate LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES, IBEHS TECHNICAL ELECTIVES Comprehensive overview of and experience with system development and assurance for safety critical softwareintensive systems in general, and safe, secure and effective medical devices in particular: System requirements, validation, system design including hardware and software components, software design, implementation, and verification. Three lectures, one lab (two hours); one term Prerequisite(s): COMPENG 2SI4 or COMPSCI 2C03 or SFWRENG 2C03 or 2MD3Code  Title  Instructor  Outline  Info 

COMPSCI 4ML3 Undergraduate  Introduction to Machine Learning 

More  
COMPSCI 4DC3 Undergraduate  Distributed Computing 

More  
COMPSCI 4AD3 Undergraduate  Advanced Databases 

More  
COMPSCI 3IS3 Undergraduate  Information Security 

More  
COMPSCI 3EA3 Undergraduate  Software Specifications and Correctness 

More  
COMPSCI 3DM3 Undergraduate  Introduction to Data Mining 

More  
COMPSCI 3AC3 Undergraduate  Algorithms and Complexity 

More  
MECHTRON 4AX3 Undergraduate  Predictive and Intelligent Control 

More  
SFWRENG 3DB3 Undergraduate  Databases 

More  
SFWRENG 3FP3 Undergraduate  Functional Programming 

More  
SFWRENG 3GB3 Undergraduate  Game Design 

More  
SFWRENG 3GC3 Undergraduate  Computer Graphics 

More  
SFWRENG 3MX3 Undergraduate  Signals and Systems 

More  
SFWRENG 3RA3 Undergraduate  Software Requirements And Security Considerations 

More  
SFWRENG 3S03 Undergraduate  Software Testing 

More  
SFWRENG 3SH3 Undergraduate  Operating Systems 

More  
SFWRENG 4AD3 Undergraduate  Advanced Databases 

More  
SFWRENG 4C03 Undergraduate  Computer Networks And Security 

More  
SFWRENG 4E03 Undergraduate  Performance Analysis Of Computer Systems 

More  
SFWRENG 4F03 Undergraduate  Parallel Computing 

More  
SFWRENG 4J03 Undergraduate  Communications Systems 

More  
SFWRENG 4TE3 Undergraduate  Continuous Optimization Algorithms 

More  
COMPSCI 6O03 Graduate  Linear Optimization 

Outline  More 
COMPSCI 6TB3 Graduate  Syntax Based Tools and Compilers 

More  
ASTRON 2B03 Technical Elective  The Big Questions 

More  
ASTRON 2E03 Technical Elective  Planetary Astronomy 

More  
BIOLOGY 1A03 Technical Elective  Cellular and Molecular Biology 

More  
BIOLOGY 1M03 Technical Elective  Biodiversity, Evolution and Humanity 

More  
CHEM 1AA3 Technical Elective  Introductory Chemistry II 

More  
COMPENG 3DQ5 Technical Elective  Digital Systems Design 

More  
COMPENG 4DN4 Technical Elective  Advanced Internet Communications 

More  
COMPENG 4DS4 Technical Elective  Embedded Systems 

More  
COMPENG 4TN4 Technical Elective  Image Processing 

More  
COMPSCI 4WW3 Undergraduate  Web Systems and Web Computing 

More  
ELECENG 3PI4 Technical Elective  Energy Conversion 

More  
ELECENG 4BC3 / IBEHS 4BC3 Technical Elective  Modelling of Biological Systems 

More  
ELECENG 4BD4 / IBEHS 4BD4 Technical Elective  Biomedical Instrumentation 

More  
ELECENG 4OJ4 Technical Elective  Research Project 

More  
ELECENG 4PN4 Technical Elective  Electric Motor Drives 

More  
ENGINEER 4EX3 A/B Technical Elective  Experiential Engineering Design 

More  
ENGPHYS 3O04 Technical Elective  Introduction to Fluid Mechanics and Heat Transfer 

More  
ENGPHYS 4B03 Technical Elective  Biosensors – Fundamentals and Applications 

More  
ENGPHYS 4I03 Technical Elective  Introduction to Biophotonics 

More  
ENGPHYS 4QC3 Technical Elective  Introduction to Quantum Computing 

More  
ENVIRSC 1C03 Technical Elective  Climate, Water And Environment 

More  
ENVIRSC 1G03 Technical Elective  Earth and the Environment 

More  
HTHSCI 1I06 A/B Technical Elective  Cellular and Molecular Biology 

More  
HTHSCI 2E03 Technical Elective  Inquiry II: Biochemistry 

More  
MATLS 3M03 Technical Elective  Mechanical Behaviour of Materials 

More  
MECHENG 4AA3 Technical Elective  Aerodynamics 

More  
MECHENG 4B03 Technical Elective  Topics in Product Development 

More  
MECHENG 4E03 Technical Elective  Microelectromechanical Systems (MEMS) 

More  
MECHENG 4O04 Technical Elective  Sustainable Energy Systems 

More  
MECHENG 4Q03 Technical Elective  Mechanical Vibrations 

More  
MECHENG 4Z03 Technical Elective  CAD/CAM/CAE 

More  
PHYSICS 1L03 Technical Elective  Physics Of Living Systems 

More  
SFWRENG 3MD3 Undergraduate  Safe SoftwareIntensive Medical Devices 

More 