Courses – Faculty of Engineering
Person coding at a computer

Courses in Computing & Software

Select Category
  • 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.

  • 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

    • Instructor
      Dr. Ryszard Janicki
  • 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

    • Instructor
      Dr. Antoine Deza
  • 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

    • Instructor
      Dr. Richard Paige
  • 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

    • Instructor
      Dr. Ryan Leduc
  • 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.

    • Instructor
      Dr. Emil Sekerinski
  • 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

    • Instructor
      Dr. Ned Nedialkov
  • 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

    • Instructor
      Dr. Jelle Hellings
  • 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.

    • Instructor
      Dr. Frantisek (Franya) Franek
  • 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

  • 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.

    • Instructor
      Dr. Denise Geiskkovitch
  • 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.

  • 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.

  • This course provides an in-depth exploration of applications of machine learning to autonomous systems. The course will assume basic familiarity with modern supervised machine learning methods. The first part of the course will introduce the classical probabilisitic modelling approach to autonomous systems and robotics. In the second part of the course we will investigate particular applications of machine learning within the classical framework, focusing on perception and planning. In the final part of the course we will introduce the basics of reinforcement learning and investigate applications to autonomous systems.

  • 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).

    • Instructor
      Dr. Sébastien Mosser
  • 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.

    • Instructor
      Dr. Douglas Down
  • 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.

    • Instructor
      Dr. Yingying Wang
  • 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

    • Instructor
      Dr. Ridha Khedri
  • 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.

    • Instructor
      Dr. Stephen Kelly
  • 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

    • Instructor
      Dr. Spencer Smith
  • 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.

  • 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.

  • 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. 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.

    • Instructor
      Dr. Lingyang Chu
  • 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

    • Instructor
      Dr. Christopher Anand
  • 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.

    • Instructor
      Dr. Shahab Asoodeh
  • 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.

  • The course presents advanced techniques for formal specification of requirements, designs and implementations of software based systems, focusing on software architecture as the organi sing principle for software development. Course content will include some topics amongst: comparative properties of formalisms for specification; meta-properties of specification formalisms, including interpolation properties, modularity and their relationships; component based approaches and the role of category theory in component composition; formalisation of encapsulation, cohesion and coupling; externalisation of interaction definition; formal toolkit for software architecture.

    Outline

  • Advanced compiler design methodologies with emphasis on control and data flow analyses, code optimization and related issues.

    Outline

  • Attributes of a practical logic. Techniques for improving the practicality of traditional logics. Design, implementation, and use of practice-oriented logics.

    Outline

    • Instructor
      Dr. William M. Farmer
  • 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

    • Instructor
      Dr. Jacques Carette
  • 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.

    • Instructor
      Dr. Fei Chiang
  • This course introduces fundamental concepts, state-of-the-art research and applications of wireless networking and mobile computing. Topics covered include wireless network protocols, wireless standards, location-based services and techniques, security, and programming on mobile platforms.

  • 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

  • This course covers issues and technologies in Information Privacy, Security, and Accountability. The course surveys cryptography, digital signature, key management, authentication, certificates, PKI, Application layer Access control policies and mechanisms, data forensics, Internet security protocols, trust management, information and web privacy, privacy and data aggregation, audit log mechanisms, privacy policy expression and enforcement, Differential Privacy, Security and privacy in healthcare, Social networking security and privacy, Usable security and privacy, and privacy-enhancing technologies. Students will undertake a project that employs and integrates these technologies.

  • 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 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.

  • 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

    • Instructor
      Dr. Hassan Ashtiani
  • Normally a self-study course. Prerequisite: Permission of the Chair of the Department.

  • 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.

  • 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.

    • Instructor
      Dr. Rong Zheng
  • 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

    • Instructor
      Dr. Rong Zheng
  • 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.

    • Instructor
      Dr. Onaizah Onaizah
  • 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.

    • Instructor
      Dr. Martin v. Mohrenschildt
  • 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.

    • Instructor
      Dr. Mehdi Moradi
    • Instructor
      Dr. Alan Wassyng
  • 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

  • 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

  • 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

  • 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

  • Organization of microcomputers (hardware and operating systems) and overview of computer communications; introduction to information exchange using word processing/ presentation software, the Internet and Web pages; problem solving using electronic spreadsheets and database applications. Three lectures, one tutorial; one term Antirequisite(s): COMPSCI 1BA3, COMPSCI 1MD3, 1SA3, ENGINEER 1D04, MMEDIA 1A03 Not open to students with credit or registration in COMPSCI 1MA3, 1MC3, HUMAN 2E03.

  • 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

  • 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

  • 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.

  • 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.

  • Physical networks, TCP/IP protocols, switching methods, network layering and components, network services. Information security, computer and network security threats, defence mechanisms, encryption. Three lectures, one tutorial (one hour); second term Prerequisite(s): Credit or registration in COMP SCI 3MH3 or COMPSCI 3SH3 Antirequisite(s): COMPSCI 3CN3, 3C03, SFWRENG 4C03, COMPENG 4DN4 Last offered 2022-2023.

  • 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

  • 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 Last offered 2022-2023.

  • 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.)

  • 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

  • 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.

  • Recursive and primitive recursive functions, decidability and undecidability with applications to formal language theory, logic and algebra.

  • 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.

  • LIST B: MECHATRONICS Permission of ECE required.

  • LIST B: MECHATRONICS Introduction to mathematical and engineering methods for describing and predicting the behaviour of biological systems; including sensory receptors, neuromuscular and biomechanical systems; statistical models of biological function; kinetic models of biological thermodynamics. Prerequisite(s): Registration in Level IV Electrical and Biomedical Engineering

  • 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

  • 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

  • LIST B: MECHATRONICS Fluid properties and statics are introduced. Basic equations of continuity, energy and momentum for internal and external flows are discussed. Similitude, dimensional analysis, measuring devices, fluid machinery and hydraulic networks. Conduction and convection heat transfer. Three lectures, one lab (three hours each) every other week; one tutorial, second term Prerequisite(s): MATH 2Z03 and credit or registration in MATH 2ZZ3 Antirequisite(s): CIVENG 2O04, MECHENG 3O04, CHEMENG 2O04

    Sessional Instructor
    Ali Shams
  • This course covers the underlying operating principles and defining metrics of biological sensors, and it will discuss the integration of these sensors into systems for diagnostics and health monitoring applications. Three lectures; first term Prerequisite(s): Registration in Level III or above in any engineering program or registration in Level IV or above in the Integrated Biomedical Engineering & Health Sciences (IBEHS) Program.

    • Instructor
      Dr. Niko Hildebrandt
  • 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

    • Instructor
      Dr. Ryan Lewis
  • 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

  • LIST B: MECHATRONICS

  • Case studies using modern product development methods, value engineering, product specification, rapid product development, lean design and continuous improvement. Product liability and robust design. Three lectures, one tutorial; first term Prerequisite(s): Registration in Level IV or above of any Mechanical Engineering or Mechatronics Engineering program

    • Instructor
      Dr. Elizabeth Hassan
  • 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 Transient and steady state vibration of single- and multi-degree of freedom systems. Free and forced vibrations of single and multiple degree-of-freedom mechanical systems, transient response, damping and vibration isolation. Three lectures; first term Prerequisite(s): ENGINEER 2Q04 or MECHENG 2Q04 or 2QA4 and registration in any Mechanical Engineering or Mechatronics program

  • 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

  • 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

    Sessional Instructor
    Dr. Ali Shams
  • 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.

  • 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.

  • LIST C: SOFTWARE ENGINEERING BASIC SCIENCE ELECTIVES

  • 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.

    • Instructor
      Dr. Sébastien Mosser
  • 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.

  • 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.

    • Instructor
      Dr. Sébastien Mosser
  • 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.

    • Instructor
      Dr. Sébastien Mosser
  • 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 software development emphasizing concurrent system design; measurement, inspection, software metrics, software project management; testing methods.

  • 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.

  • 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.

  • 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. Date acquisition. Applications in real-time networking, quality of service and multimedia.

  • 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.

  • 1280 Main Street West

    ITB-202

    Hamilton, Ontario, Canada

    L8S 4L7

  • Monday – Friday: 8:30 a.m. to 4:30 p.m.

    Offices closed daily from 12 p.m. to 1 p.m.

  • 905-525.9140 ext. 24614