-
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
-
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
-
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
-
Acquiring familiarity with professional software development settings via practical experience with interaction with UNIX-like 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
-
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
-
Finite state machines, regular languages, regular expressions, applications of regular languages, grammars, context-free 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
-
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 2021-2022, this course will be offered in first term.
-
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
-
Introduction to logic gates, computer arithmetic, instruction-set architecture, assembly programming, translation of high-level 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 2021-2022): COMPSCI 1XC3 and 1DM3 Antirequisite(s): COMPENG 3DR4, 4DM4, SFWRENG 2GA3, 3GA3
-
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
-
Classes and inheritance, class invariants, interface specifications; object-oriented 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 2021-2022): COMPSCI 1XC3 and 1XD3 Co-requisite(s) (EFFECTIVE 2021-2022): COMPSCI 2LC3
-
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 Co-requisite(s): COMPSCI 2AC3 Antirequisite(s): COMPSCI 3SD3, SFWRENG 3BB4
-
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
-
LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES
Basic computability models; the Church-Turing thesis, complexity classes; P versus NP; NP-completeness, 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 -
Core techniques in big data analytics (knowledge discovery, data mining). Basic concepts of frequent patterns, algorithms for mining frequent patterns from large scale transactional databases. Clustering and classification: k-means, hierarchical k-means, DB-Scan, Gaussian mixture models, decision trees, Bayesian methods, linear classification methods, support vector machines. Practice of big data analytics in business intelligence: data warehousing, data lakes.
Three lectures; one tutorial (one hour); one term
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 2D03, STATS 3Y03, IBEHS 3S03, IBEHS 4C03
Offered on an irregular basis. -
Basics of data privacy, de-anonymization, membership and reconstruction attacks, differential privacy, privacy-preserving mechanisms, privacy-utility trade-offs 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.
-
LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Formal specifications in software and system development; validation; verification; presentation of information; practical experience in formal specification and tool-supported 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.
-
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. -
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.
-
Principles of definition of and reasoning about programming languages and domain-specific 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
-
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 2022-2023
-
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 Cross-list(s): SFWRENG 3RA3
-
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 2021-2022, this course will be offered in first term.
-
Lexical analysis, syntax analysis, type checking; syntax-directed 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 2022-2023.
-
The course focuses on building web applications to visualize abstract data (information visualization) and apply computation techniques for analysis (visual analytics). Students will learn practical web application-building skills mixed with data analytics and visualization design theory. We will cover the design principles that consider human perception, cognition, and decision-making and create intuitive interfaces for analyzing data on the web.
Three lectures, one tutorial (one hour); first term
Prerequisite(s): COMPSCI 1XD3, 2C03, 2DB3, 2ME3
Offered on an irregular basis. -
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 Cross-list(s): SFWRENG 4AD3 Offered on an irregular basis.
-
Overview of data engineering. Human-computation architectures. Supervised approaches (neural networks). Unsupervised approaches (clustering/topic modelling). Human-in-the-loop approaches (reinforcement learning).
Three lectures, one tutorial (one hour); first term
Prerequisite(s): COMPSCI 2C03, COMPSCI 2ME3, STATS 2D03 or 3Y03
Antirequisite(s): SFWRENG 4AL3 -
Software architecture concepts; architectural styles; design patterns, components, libraries, configurations; modelling languages; software re-engineering. Three lectures; one term Prerequisite(s): Credit or registration in COMPSCI 3RA3 or 3SR3 Offered on an irregular basis.
-
Stream ciphers, Block ciphers, Hash functions, Public-key cryptography (RSA, Discrete logarithm, Elliptic curves), digital signatures, and some discussions on post-quantum cryptography.
Three lectures, one tutorial (one hour); one term
Prerequisite(s): MATH 1B03 or MATH 1ZC3; COMPSCI 1DM3 or SFWRENG 2DM3; COMPSCI 2C03 or SFWRENG 2C03
Antirequisite(s): COMPSCI 3IS3
Offered on an irregular basis. -
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, peer-to-peer computing, simulation as a tool for building more advanced functionality, actor-model 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.
-
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 Cross-list(s): SFWRENG 4E03
-
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.
-
-
Parallel architectures, design and analysis of parallel algorithms; distributed-memory, shared-memory 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 Cross-list(s): SFWRENG 4F03 Offered on an irregular basis.
-
A selection of topics in advanced functional programming (focusing on Haskell and its derivatives). Example topics: Techniques for embedded domain-specific languages, generic and type-level 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.
-
Design of user interfaces. Principles of good interface design. Task-oriented 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 Cross-list(s): SFWRENG 4HC3
-
LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Regression, Classification and Decision Theory, Bias-Variance Trade-off, 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.
-
Overview of natural language processing with a focus on recent developments:
Basics of data processing and machine learning in the context of NLP, text classification and sequence labeling, vector semantics, embeddings, language modeling, translation, question answering, parsing, dialogue and conversational
systems, discourse processing, and large language models. Practices and developments will be discussed with practical exercises focusing more heavily on recent neural network approaches.
Three lectures, one tutorial (one hour); one term
Prerequisites: One of COMPSCI 2C03 or SFWRENG 2C03 or MECHTRON 2MD3; One of MATH 1B03 or 1ZC3; One of STATS 2D03 or 3Y03 -
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, primal-dual 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 Cross-list(s): SFWRENG 3O03
-
Problems and algorithmic solutions in sequential decision making based on data, as appear in many applications including online ad-placement, A/B testing for software services, financial portfolio management, medical trials, and more. Topics include best-arm identification, multi-armed bandit problems and solutions, online learning, prediction with expert advice, and optimal stopping problems
Three lectures, one tutorial (one hour); one term
Prerequisite(s): COMPSCI 2C03 or SFWRENG 2C03 or MECHTRON 2MD3; STATS 2D03 or 3Y03
Offered on an irregular basis. -
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 Cross-list(s): SFWRENG 4TE3 Offered on an irregular basis.
-
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 Cross-list(s): SFWRENG 4TH3 Offered on an irregular basis.
-
Discrete-time signals and systems, digital filter design, photons to pixels, linear filtering, edge-detection, non-linear filtering, multi-scale 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.
-
LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES Network protocols underlying the world wide web; client-side programming: markup, styles, scripts, design, mobile/desktop; server-side 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.
-
Computer arithmetic, stability, sensitivity. Numerical methods for polynomial manipulation, interpolation, data fitting, integration, differentiation, solving linear and non-linear 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 Cross-list(s): SFWRENG 4X03
-
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
-
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.)
-
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
Pre-requisite(s): Registration in Level IV or above of any Mechanical Engineering or Mechatronics Engineering program
TERM 1 -
Advanced programming with emphasis on embedded systems. Program specifications: Pre- and post-conditions, 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
-
This course focuses on learning programming using the high-level 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
-
Interfacing to digital and analog systems, sensors and actuators. Signals and conditioning: data acquisition, active and passive filtering, optical and analog isolation, pulse-width modulation, (de-)multiplexing. Architecture of micro-controllers 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
-
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.
-
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
-
Linear systems, signals, filters; time and frequency domains; single input-single output systems; discrete and continuous time; sampling theorem; Fourier series; Fourier, Laplace, and Z-transforms; stability. Three lectures, one tutorial (one hour); first term Prerequisite(s): MATH 2Z03 Antirequisite(s): ELECENG 3TP3, IBEHS 3A03, SFWRENG 3MX3
-
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.
-
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
-
Hard and soft real-time systems. Safety classification. Fail-safe design, hazard analysis. Discrete event systems. Modes. Requirements and design specifications. Tasks and scheduling. Clock synchronization. Data acquisition. Applications in real-time control.
-
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 decision-making. 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.
-
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.
-
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.
-
-
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.
-
Memory, binary arithmetic, hierarchical design. Hardware/software co-design and application specific processors. Interfacing to I/O devices.
-
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.
-
Finite state automata and grammars, predicate logic and formal proofs, models of computation, complexity, modular arithmetics, and their applications to computing.
-
Instruction-set architecture, computer arithmetic, datapath and control, pipelining, memory hierarchies, I/O systems, multiprocessor systems, graphic processors, measures of performance.
-
Principles of object-oriented 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
-
Fundamental concepts of low-level imperative programming, with documentation, testing, benchmarking, profiling and debugging, revision control. Acquiring familiarity with professional software development settings via practical experience with interaction with UNIX-like 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
-
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.
-
Processes, threads, concurrency; synchronization mechanisms, resource management and sharing; objects and concurrency; design, architecture and testing of concurrent systems.
-
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.
-
-
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.
-
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, higher-order functions, reasoning about programs; lazy and strict evaluation; programming with monads; domain-specific languages.
-
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.
-
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.
-
Software design process. Professional responsibility. Using specifications. Documentation. Module Specification. Module interfaces. Module internal documentation. Coding styles. Portability. Software inspection. Software testing.
-
LIST E: SOFTWARE ENGINEERING TECHNICAL ELECTIVES, IBEHS TECHNICAL ELECTIVES Comprehensive overview of and experience with system development and assurance for safety critical software-intensive 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 2MD3
-
LIST G: COMPUTER SCIENCE Linear systems, signals, filters; time and frequency domains; single input-single output systems; discrete and continuous time; sampling theorem; Fourier series; Fourier, Laplace, and z transforms; stability.
-
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, multi-objective problems and scheduling. Solution methods include primal-dual schemes (algorithms), simplex, branch and bound, and heuristics.
-
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.
-
-
LIST G: COMPUTER SCIENCE Measurements. Unit testing, slicing and debugging, integration testing, regression testing, testing strategies, test coverage.
-
-
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.
-
Open-ended 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 2022-2023
-
Hard and soft real-time systems. Safety classification. Fail-safe design, hazard analysis. Discrete event systems. Modes. Requirements and design specifications. Tasks and scheduling. Clock synchronization. Data acquisition. Applications in real-time control.
-
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.
-
-
Overview of data engineering. Human-computation architectures. Supervised approaches (neural networks). Unsupervised approaches (clustering/topic modelling). Human-in-the-loop approaches (reinforcement learning).
Three lectures, one tutorial (one hour); first term
Prerequisite(s): SFWRENG 2C03 or MECHTRON 2MD3; SFWRENG 2AA4 or MECHTRON 3K04; STATS 3Y03 or IBEHS 3S03 or 4C03; registration in any Software Engineering or Mechatronics Engineering program
Antirequisite(s): COMPSCI 4AL3 -
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.
-
Introduction to measures of human brain activity, focusing on non-invasive methods. Assessing human perception and cognition, including: predictive models, computational models of perception, and decoding. Using and contributing to community maintained data analysis software; data structures for brain data; analysis pipelines and replicability. Practical experience using open-source data analysis tools and public datasets.
PREREQUISITE(S): One of STATS 2D03 or 3Y03, IBEHS 3S03 or 4C03, MATLS 3J03;
one of ELECENG 3TP3, ENGPHYS3W04, IBEHS 3A03,
MECHENG 4R03, MECHTRON 3MX3, SFWRENG 3MX3 -
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.
-
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; distributed-memory, shared-memory and GPU computing; communication cost, scalability; MPI, OpenMP and OpenACC; tuning parallel programs for performance.
-
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.
-
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; on-line help systems.
-
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.
-
Lexical analysis, syntax analysis, type checking; syntax-directed translation, attribute grammars; compiler structure; implications of computer architecture; mapping of programming language concepts; code generation and optimization.
Three lectures, one lab (two hours); second term
Prerequisite(s): SFWRENG 2C03, 2FA3, 2GA3, and registration in Level IV or above of a Software Engineering
Antirequisite(s): COMPSCI 3TB3, 4TB3 -
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.
-
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 Cross-list(s): COMPSCI 4TH3
-
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.