-
3 units Elastic and Plastic Deformation of Materials. Strengthening Methods. Fracture Mechanisms. Fatigue and Creep failure. Three lectures, one lab (one hour) every other week; second term Prerequisite(s): ENGINEER 2P04 or CIVENG 2P04 and Registration in Materials Engineering; or MECHENG 2P04 and Registration in Mechanical Engineering; or permission of the department
-
4 unit(s)
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) four times per term; one tutorial, second term
Prerequisite(s): MATH 2Z03 and credit or registration in MATH 2ZZ3
Antirequisite(s): CIVENG 2O04, MECHENG 3O04, CHEMENG 2O04 -
3 unit(s)
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; second 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. -
Fundamental principles and algorithms of machine learning: linear and logistic regression, nearest neighbours, decision trees, neural networks, support vector machines, ensemble methods; clustering and principal component analysis; basics of reinforcement learning;
Three lectures, one tutorial, first term
Prerequisite(s): COMPENG 2SI4 or 2SI3, STATS 3Y03 or HTHSCI 2G03, and ELECENG 3TQ3 or ELECENG 3TQ4
Antirequisite(s): CHEMENG 4H03, COMPSCI 4ML3, STATS 3DS3 -
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
-
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
-
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
-
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 -
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.
-
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
-
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.
-
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.
-
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.
-
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.
-
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.
-
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
-
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.
-
TECHNICAL ELECTIVE LIST B This course will provide students an opportunity for formal recognition of the design-based experiential learning conducted within the atmosphere of technically-oriented McMaster Engineering teams. Arrangements for participation in this course must be made with the faculty supervisor in the Spring semester prior to enrolment. One lecture (three hours); term 1 and 2 Prerequisite(s): Registration in Level 3 or above in the Faculty of Engineering
-
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 -
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.)
-
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.
-
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.
-
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.
-
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.
-
Memory, binary arithmetic, hierarchical design. Hardware/software co-design and application specific processors. Interfacing to I/O devices.
-
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
-
Processes, threads, concurrency; synchronization mechanisms, resource management and sharing; objects and concurrency; design, architecture and testing of concurrent systems.
-
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.
-
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 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 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 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.
-
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.
-
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.
-
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.
-
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.
-
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
-
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.
Outline -
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 NP-completeness. 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 worst-case analysis • Amortized analysis • Fibonacci heaps, an example of amortized analysis • Hash tables, an example of randomized analysis • Greedy algorithms and matroids • Dynamic programming and all-pairs shortest paths • Maximum flow • Linear Programming and Duality •Primal-Dual schema as an algorithmic design tool • Approximation algorithms
Outline -
Formal specification methods. Requirements specifications. Fail-safe systems. Verification of safety critical applications. Systematic testing. Specification and design of concurrent, multiprocess and distributed systems.
Outline -
1. Scheduling a. Time-based 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. Real-Time Operating Systems – we can look at TinyOS, details of its implementation and some applications. 3. Fault Tolerance Techniques 4. State-Space Control Theory and Real-Time Implementation 5. Specification of Real-Time 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.
Outline -
Computability: Finite automata, Turing machines, and recursive functions. The Halting problem and the Church-Turing thesis. Complexity: Classes defined in terms of time, space, and circuits. The reachability method. The P vs. NP problem, Cook’s theorem, and NP-completeness. The Time and Space Hierarchy theorems. Randomized and parallel computations.
Outline -
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 Domain-Specific Languages.
Outline -
Pre/Postconditions, refinement, state-based approaches, event based approaches, algebraic specifications, Petri nets, temporal logic, properties of programs, and specification, verification, and validation.
-
Floating-point 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.
Outline -
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 consensus-based transaction processing and with a further focus on selected topics. . The course assumes a pre-existing knowledge of databases and discrete mathematics at an undergraduate level (e.g., COMPSCI 3DB3 and COMPSCI 2DM3). Note: although this course will cover some blockchain-related topics, this course is not about cryptocurrencies.
Outline -
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.
-
Robots are becoming more common in places such as hospitals, museums, airports, workplaces, schools, and homes. Thus, it is important to consider how people will interact and communicate with robots. Robots pose unique challenges in comparison to the more familiar interfaces of PCs and hand-held devices: robots often have limited display space, move dynamically about an environment, and elicit responses more akin to humans than to other technologies. As such, interaction often includes a mixture of modalities such as gestures, speech, control interfaces, and even human-like facial expressions. In this course, students will learn about interaction design challenges specific to robots and emerging methods for understanding and approaching human-robot interaction design.
-
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.
Outline -
Introduction to formal methods including equivalence verification, model-checking and theorem proving. Emphasis on verification of safety-critical real-time control systems using automated theorem provers and simple programming techniques.
-
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.
-
-
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 human-computer interaction and already know how to program non-trivial 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 human-computer interactions, and will practice a quantitative approach to evaluating the effectiveness of user interface concepts.
-
Introduction to formal methods including equivalence verification, model-checking and theorem proving. Emphasis on verification of safety-critical real-time control systems using automated theorem provers and simple programming techniques.
-
The design of distributed applications triggers software architectures challenges at different levels. This course will focus on the definition of “business-oriented 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-)service-oriented 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 state-of-the-art research in this domain. The course assumes a pre-existing knowledge of how to design and test pieces of software (e.g., undergrad course on these topics).
-
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.
-
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 state-of-the-art 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.
-
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.
Outline -
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. Hands-on programming experiments and readings from the literature will introduce key principles and place evolutionary methods in context with the broader realm of bio-inspired computing in machine learning and artificial life.
-
Numerical methods for ODEs and DAEs; Runge-Kutta, multistep methods; convergence, accuracy, consistency; error estimation and propagation, step size and order control; stability, non-stiff and stiff methods; software for ODEs and DAEs.
-
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, high-level design, module design, implementation, testing and inspection.
Outline -
Advanced design techniques for algorithms, including (but not limited to): approximation algorithms, randomized algorithms, on-line 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.
-
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.
-
This course is an introduction to the control of discrete-event 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.
Outline -
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.
Outline -
Complex data in the real-world 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.
-
Complex data in the real-world 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.
-
Sound as signals (Fourier Analysis, basic harmony theory), Sound analysis (filters, FFT), Synthesis (band limited signals), over-sampling, real-time signal processing, user interfaces (real time interaction with algorithms), vocoders, physical modeling (fast DSP algorithms to solve PDE’s).
Outline -
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.
Outline -
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.
Outline -
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 high-dimensional 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 rate-distortion 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.
-
Verification and Refinement Methods for Sequential and Concurrent Programs, Specification Techniques, Reliability, Object-Orientation (Modeling, Design, Patterns, Concurrency), Program Design and Program Documentation, Tools and Compilers.
-
Attributes of a practical logic. Techniques for improving the practicality of traditional logics. Design, implementation, and use of practice-oriented logics.
Outline -
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 model-driven software engineering, software product families and feature-oriented 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, constraint-based 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 student-led discussions of important papers in the domain.
Outline -
Type systems featuring types depending on values empower not only logics that can capture common mathematical formalizations more naturally than conventional first-order or higher-order logics; they also empower programming languages where specifications may be incorporated into the type of programs, and well-typed programs are thus guaranteed to satisfy these specifications. Students will learn at least one dependently-typed programming language in depth. The course will also cover associated foundations, including relevant type theories and the Curry-Howard correspondence, as well as useful patterns of formalizing, programming, and proving in dependently-typed programming languages.
Outline -
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 large-scale, heterogeneous, poor quality, and fast data, go beyond the capabilities of traditional database systems. This course will explore data-intensive applications, and the algorithms that are needed for different data management tasks.
-
Processes and Synchronization, Atomicity, Mutual exclusion, Locks and Barriers, Semaphores, Monitors, Message Passing, Parallel Programming, Patterns for Concurrency, Transactional Memory, Linearizability, Consensus, Lock-free Algorithms, Multi-core Processors, Heterogeneous Computing with GPU and FPGA, Applications.
Outline -
Safety-critical systems are becoming more and more part of our everyday lives – cars, planes, trains, medical devices and nuclear power plants are obvious examples of safety-critical 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).
-
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.
-
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 spatial-temporal 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 state-of-the-art research in this area.
Outline -
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.
Outline -
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, No-Free-Lunch 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 Shalev-Shwartz and Shai Ben-David. 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.
-
Normally a self-study course. Prerequisite: Permission of the Chair of the Department.
-
-
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 sit-to-stand, 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 two-part 6-unit 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 real-world impacts.
-
Graphical User Interfaces were developed together with programming languages, specifically object-oriented 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 Smalltalk-80, 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 Smalltalk-80, those which evolved from html, and attempts to create UI frameworks for functional languages.
-
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 sit-to-stand, 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 two-part 6-unit 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, user-centric 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.
Outline -
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.
-
This course will introduce students to the world of medical robots and attempt to redefine how they think about robots. It will provide an in-depth overview of how small-scale robots are designed, fabricated and controlled. Popular remote actuation techniques will be introduced and scaling laws governing these small-scale robots will be discussed. The course will also cover how feedback for medical robots is challenging and the design considerations for integration into larger guidance systems. The Department of Computing and Software does not have a course offering on Medical Robotics. A similar course used to exist in ECE and BME but has not been offered for about 12 years as there has been no faculty around to teach it. Medical Robotics is a growing field and research area and the topics covered here are relevant for students pursuing a future in industry or academia.
-
We examine a variety of mathematical techniques related to series analysis and prediction. We take two points of view, the signals and systems and the statistical point of view. Topics include, Hilbert spaces, norms and duals, transfer functions, Integral transforms, Wavelets, Markov Models, linear prediction, auto-regression, filtering and smoothing, Bayesian filtering.
-
This course will be a systematic study of the modern evolution of computer vision. We will study transformational advances in the area by reading the original publications and applying some of these methods to medical imaging datasets for disease classification and anatomical segmentation.
-
-
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.
-
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.
-
Linear programming, integer programming, decision trees, network flow problems, graph algorithms, route planning, applications to engineering problems.
Outline -
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.
Outline -
World wide web as networks: protocols, clients/servers and social issues; programming systems: markups, scripts, styles; platform technologies; WWW services: standard systems, browser-based, security issues, examples.
-
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.
-
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.
-
LIST C: SOFTWARE ENGINEERING BASIC SCIENCE ELECTIVES Ultimate questions in modern science are surveyed with emphasis on physical sciences: origin of space-time, elements and structure in the cosmos (stars, planets, galaxies.)
-
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.
-
LIST C: SOFTWARE ENGINEERING BASIC SCIENCE ELECTIVES Structure, molecular composition and function in sub-cellular 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 Co-requisite(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.
-
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.
-
LIST C: SOFTWARE ENGINEERING BASIC SCIENCE ELECTIVES A discussion of organic chemistry, chemical kinetics, acid-base equilibrium, and the energetics of phase transformations, with emphasis on relevant experimental techniques and solving real problems ranging from drug discovery to environmental chemistry.
-
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
-
LIST B: MECHATRONICS Embedded processor architectures and SOC organization; EDA tools for hardware/software co-design; co-verification and testability; interfacing; co-processors, soft processors and ASIP design; real-time systems; applications. Two lectures, one tutorial, one lab every week; second term Prerequisite(s): COMPENG 3DQ5, or permission of the Department
-
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
-
LIST B: MECHATRONICS Permission of ECE required.
-
LIST B: MECHATRONICS Permission of ECE required.
-
LIST B: MECHATRONICS A research-oriented 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
-
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
-
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, micro-optical 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 Cross-list(s): MEDPHYS 4I03
-
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
-
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.
-
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.
-
Students will explore the molecular basis of cellular communication (gene expression, cellular signaling) underlying disease processes. A hybrid approach blending didactic and inquiry-based 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. Co-requisite(s): WHMIS 1A00 . Students registering in HTHSCI 1I06 A/B must also register in WHMIS 1A00 when completing their registration. Antirequisite(s): BIOLOGY 1A03
-
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
-
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
-
LIST B: MECHATRONICS Permission of Mechanical Engineering required.
-
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
-
LIST B: MECHATRONICS Solid modelling theory, part creation, assemblies and rigid bodies, mechanism simulation, B-Splines, 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
-
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.
-
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.
-
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. -
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. -
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 -
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. -
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. -
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 -
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 -
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 -
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 -
Description: In this course, we will deep dive into the fundamental concepts of how and why to design human-centered AI systems. We will study the advantages/disadvantages of popular AI algorithmic systems and how to design sustainable, reliable, and usable systems. The course will focus on a broad range of techniques for improving transparency, accountability, and interactivity in AI systems design. This includes explanation mechanisms for black boxed and glass boxed algorithms, methods to identify data and model biases and solutions to integrate meaningful human feedback.
-
In recent years, group-theoretic concepts have captured the attention of many applied scientists working on problems with physical symmetries in fields including control, computer vision, and computational chemistry. This course provides a practical but rigorous treatment of group theory with a particular focus on Lie groups and their matrix representations. Students will apply group theory to semester-long research projects involving optimization or machine learning. The prerequisites for this course are practical and theoretical knowledge of linear algebra, and experience with basic scientific computing (e.g., solving linear systems and unconstrained optimization).
-
This course covers selected topics in Quantum Computing with a view toward Quantum Cryptography. The course consists of two parts. Part I begins with a review of linear algebra basics and a detailed exploration of the four postulates of quantum mechanics, including an alternative formulation using density operators. The course then progresses to core concepts like qubits, the quantum circuit model, and then reviews various quantum algorithms such as the quantum Fourier transform and phase estimation. In Part II, the focus shifts to Quantum Cryptography, covering Quantum Key Distribution. The remaining portion of the course explores public-key quantum cryptography, focusing on topics like Quantum Money and Quantum public-key encryption.
-
This course surveys the field of small-scale robots focusing on biomedical applications. Topics include: fundamentals of robotics, fabrication processes, remote actuation techniques, feedback using sensors or imaging; application of robotics to medicine
-
An introduction to Social and Collaborative Computing. This field includes the theory, technology, and study of computing systems that support two or more users interacting online. This course aims to cover a broad range of topics in social and collaborative computing and human-computer interaction, including example systems such as video-based communication systems, collaborative content editors, and crowdsourcing platforms. Students will also be exposed to various research methods and theoretical frameworks in studying and designing technologies for online social interactions. The course assumes a pre-existing knowledge of human-centered design process in designing and building computing and software systems (e.g., undergrad course on HCI/HCD).
-
Computer vision problems such as object detection, scene description, image synthesis, segmentation and classification have direct applications in the field of medical image analysis in areas such as computer-aided diagnosis, automatic radiology report generation, and medical image segmentation for obtaining measurements and biomarkers from imaging modalities such as X-ray and MRI. This course provides a review of foundational concepts of computer vision in the era of deep learning through instructor led lectures, followed by a review of the state of the art in these areas through instructor and student led review and discussion of literature. Each student will complete a project to gain hands-on experience with computer vision methods in medical image analysis. At least one introductory course in machine learning or artificial intelligence and experience to code in Python are required.
-
Digital twins are real-time virtual replicas of physical assets, typically used for real-time monitoring and control of complex systems, e.g., for energy-efficiency and resource optimization. This course provides an introduction to the foundational engineering areas required to develop digital twins: modeling and simulation for real-time reasoning, collecting and managing data to connect the digital twin to the physical system, and controlling the physical system through closed-loop control.
You will be exposed to the technical depths of these engineering areas and learn about their integration in specific digital twin architectures and lifecycle models. In addition to the lectures, you will process related scientific literature (from domains such as smart cities, industrial automation, or precision agriculture) to further customize your learning experience. -
The ever increasing use of data and the need to process it to extract meaningful information has made the development of efficient algorithms for string processing all the more relevant. This course will cover string processing
algorithms for exact and approximate pattern matching, computing string
regularities, string indexing, string sorting and compression. Different string
generalizations such as partial words and indeterminate/degenerate strings
will be covered. String data structures such as suffix trees, suffix arrays and
Burrows-Wheeler transform will also be studied. Applications to research
areas such as bioinformatics and data analysis will be highlighted. -
Machine learning algorithms can have any number of possible interactions with their environment. This course presents the foundations of machine learning analysis under a range of interaction types, including the classical PAC (Probably Approximately Correct)-learning framework , online learning, and active learning. In this course, students will learn foundational tools and core algorithmic approaches for each of these models. In addition, the course will include a study of recent research on interactive learning models.
-
3 unit(s)
Fundamentals of sequence generation and their basic properties; pseudo-noise sequences for communication synchronization; Costas arrays for radar systems; De-Bruijn sequences for cryptography; circuit testing and robotic positioning systems; Gray codes for noise reduction in analogy-to-digital conversions; square-free sequences for information storage in DNA molecules
Three lectures, one tutorial; first term
Prerequisite(s): MATH 1ZC3 or permission of the instructor -
4 unit(s)
High-performance computing; code and loop optimization; performance analysis; compilers and basic code analysis; vectorization; code specialization and irregular computing; parallelism in CPU and GPUs; cache-aware and cache-oblivious algorithms; and runtime systems Three lectures, one tutorial, one lab every other week, first term
Prerequisite(s): COMPENG 2SI3, enrolment in Computer Engineering or with permission of the instructor -
4 unit(s)
Industry-standard design methodologies and electronic design automation techniques for digital integrated circuits; advanced hardware description languages; cell-based design; design for testability; functional simulation; gate-level synthesis and optimization; technology mapping; intellectual property cores; static timing analysis; physical design automation; power grid planning; placement and routing; clock network synthesis; parasitic extraction; back-annotated gate-level simulation and signoff checks
Three lectures, one tutorial, one lab every other week, second term
Prerequisite(s): COMPENG 3DQ5, enrolment in Computer Engineering or with permission of the instructor -
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