uwloo

Computer Science (CS)

83 undergraduate courses in the 2026–27 Undergraduate Calendar, and 97 graduate courses in the Fall 2026 Graduate Calendar.

Undergraduate

CS 100 Introduction to Computing Through Applications0.50 units

Using personal computers as effective problem solving tools for the present and the future. Effective use of spreadsheets to process, manipulate, and visualize numeric and textual information. Introduction to the Internet, World Wide Web, HTML, and XML. Algorithms underlying the functional components of web search engines and their influence on data access. Using wikis to publish, reshape, and organize data collaboratively.

Antirequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 105 Introduction to Computer Programming 10.50 units

An introduction to the fundamentals of computer programming through media computation. Students will learn to write interactive graphical programs. Fundamental language concepts such as variables, conditionals, loops, functions, and arrays. Programming concepts such as coding style, modular design, testing, and debugging. Media concepts such as 2D graphics drawing, input, animation, and image processing.

Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • BME121 - Digital Computation (0.50)
      • CS115 - Introduction to Computer Science 1 (0.50)
      • CS135 - Designing Functional Programs (0.50)
      • CS137 - Programming Principles (0.50)
      • CS145 - Designing Functional Programs (Advanced Level) (0.50)
      • CIVE121 - Computational Methods (0.50)
      • ECE150 - Fundamentals of Programming (0.50)
      • MSE121 - Introduction to Computer Programming (0.50)
      • MTE121 - Digital Computation (0.50)
      • NE111 - Introduction to Programming for Engineers (0.25)
      • SYDE121 - Digital Computation (0.50)
    • Not completed any of the following:
      • MSCI121
      • PHYS236
    • Not open to students enrolled in programs offered by Faculty of Mathematics

Calendar entryRequirements, Fall 2026Course outlines

CS 106 Introduction to Computer Programming 20.50 units

A continuation of the introduction to computer programming begun in CS 105. The use of programming, in conjunction with libraries, as a means of solving practical problems in art, design, and data processing. Basic text processing, manipulation of images and sound, handling and visualization of tabular and hierarchical data. Introductions to user interfaces, physical simulation, and object-oriented programming.

Prerequisites
  • Must have completed the following:
    • CS105 - Introduction to Computer Programming 1 (0.50)
Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • BME121 - Digital Computation (0.50)
      • CIVE121 - Computational Methods (0.50)
      • CS115 - Introduction to Computer Science 1 (0.50)
      • CS135 - Designing Functional Programs (0.50)
      • CS137 - Programming Principles (0.50)
      • CS145 - Designing Functional Programs (Advanced Level) (0.50)
      • ECE150 - Fundamentals of Programming (0.50)
      • MSE121 - Introduction to Computer Programming (0.50)
      • MTE121 - Digital Computation (0.50)
      • NE111 - Introduction to Programming for Engineers (0.25)
      • SYDE121 - Digital Computation (0.50)
    • Not completed any of the following:
      • MSCI121
    • Not open to students in a Faculty of Mathematics program

Calendar entryRequirements, Fall 2026Course outlines

CS 114 Principles of Computing for Science0.50 units

Introduction to basic imperative programming principles; programming concepts including functions, flow control, lists, arrays; numerical accuracy and efficiency; data analysis and general-purpose algorithms. Introduction to object-oriented programming concepts.

Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • BME121 - Digital Computation (0.50)
      • CHE120 - Computer Literacy and Programming for Chemical Engineers (0.50)
      • CIVE121 - Computational Methods (0.50)
      • CS116 - Introduction to Computer Science 2 (0.50)
      • CS135 - Designing Functional Programs (0.50)
      • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
      • CS137 - Programming Principles (0.50)
      • CS138 - Introduction to Data Abstraction and Implementation (0.50)
      • CS145 - Designing Functional Programs (Advanced Level) (0.50)
      • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
      • ECE150 - Fundamentals of Programming (0.50)
      • ME101 - Introduction to Mechanical Engineering Practice 2 (0.75)
      • MSE121 - Introduction to Computer Programming (0.50)
      • MTE121 - Digital Computation (0.50)
      • NE111 - Introduction to Programming for Engineers (0.25)
      • SYDE121 - Digital Computation (0.50)
    • Not completed any of the following:
      • MSCI121
      • PHYS236
    • Not open to students enrolled in programs offered by Faculty of Mathematics

Calendar entryRequirements, Fall 2026Course outlines

CS 115 Introduction to Computer Science 10.50 units

An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional style of programming. Function definition and application. Tracing via substitution. Design, testing, and documentation. Recursive data definitions. Lists and trees. Functional and data abstraction.

Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • BME121 - Digital Computation (0.50)
      • CIVE121 - Computational Methods (0.50)
      • CS135 - Designing Functional Programs (0.50)
      • CS137 - Programming Principles (0.50)
      • CS138 - Introduction to Data Abstraction and Implementation (0.50)
      • CS145 - Designing Functional Programs (Advanced Level) (0.50)
      • ECE150 - Fundamentals of Programming (0.50)
      • ME101 - Introduction to Mechanical Engineering Practice 2 (0.75)
      • MSE121 - Introduction to Computer Programming (0.50)
      • MTE121 - Digital Computation (0.50)
      • NE111 - Introduction to Programming for Engineers (0.25)
      • SYDE121 - Digital Computation (0.50)
    • Not completed any of the following:
      • MSCI121

Calendar entryRequirements, Fall 2026Course outlines

CS 116 Introduction to Computer Science 20.50 units

This course builds on the techniques and patterns learned in CS 115 while making the transition to use of an imperative language. Generative and structural recursion. Mutation (assignment) and its role in an imperative language. Primitive types and basic I/O. Sequencing, selection, looping. Function definition and use. File and console I/O. Issues in computer science.

Prerequisites
  • Must have completed at least 1 of the following:
    • CS115 - Introduction to Computer Science 1 (0.50)
    • CS135 - Designing Functional Programs (0.50)
    • CS145 - Designing Functional Programs (Advanced Level) (0.50)
Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • CS114 - Principles of Computing for Science (0.50)
      • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
      • CS137 - Programming Principles (0.50)
      • CS138 - Introduction to Data Abstraction and Implementation (0.50)
      • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
      • MSE240 - Algorithms and Data Structures (0.50)
      • NE111 - Introduction to Programming for Engineers (0.25)
    • Not completed any of the following:
      • MSCI240
      • PHYS236
      • PHYS239

Calendar entryRequirements, Fall 2026Course outlines

CS 135 Designing Functional Programs0.50 units

An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional style of programming. Syntax and semantics of a functional programming language. Tracing via substitution. Design, testing, and documentation. Linear and nonlinear data structures. Recursive data definitions. Abstraction and encapsulation. Generative and structural recursion. Historical context.

Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • AE121 - Computational Methods (0.50)
      • BME121 - Digital Computation (0.50)
      • CIVE121 - Computational Methods (0.50)
      • CS115 - Introduction to Computer Science 1 (0.50)
      • CS137 - Programming Principles (0.50)
      • CS138 - Introduction to Data Abstraction and Implementation (0.50)
      • CS145 - Designing Functional Programs (Advanced Level) (0.50)
      • ECE150 - Fundamentals of Programming (0.50)
      • ME101 - Introduction to Mechanical Engineering Practice 2 (0.75)
      • MSE121 - Introduction to Computer Programming (0.50)
      • SYDE121 - Digital Computation (0.50)
    • Not completed any of the following:
      • MSCI121
      • PHYS236

Calendar entryRequirements, Fall 2026Course outlines

CS 136 Elementary Algorithm Design and Data Abstraction0.50 units

This course builds on the techniques and patterns learned in CS 135 while making the transition to use an imperative language. It introduces the design and analysis of algorithms, the management of information, and the programming mechanisms and methodologies required in implementations. Topics discussed include iterative and recursive sorting algorithms; lists, stacks, queues, trees, and their application; abstract data types and their implementations.

Prerequisites
  • Complete 1 of the following
    • Must have completed the following:
      • CS145 - Designing Functional Programs (Advanced Level) (0.50)
    • Earned a minimum grade of 90% in each of the following:
      • CS115 - Introduction to Computer Science 1 (0.50)
    • Earned a minimum grade of 70% in each of the following:
      • CS116 - Introduction to Computer Science 2 (0.50)
    • Earned a minimum grade of 60% in each of the following:
      • CS135 - Designing Functional Programs (0.50)
Corequisites
  • Completed or concurrently enrolled in:
    • CS136L - Tools and Techniques for Software Development (0.25)
Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • CS137 - Programming Principles (0.50)
      • CS138 - Introduction to Data Abstraction and Implementation (0.50)
      • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
    • Not completed any of the following:
      • PHYS239

Calendar entryRequirements, Fall 2026Course outlines

CS 136L Tools and Techniques for Software Development0.25 units

This course introduces students to tools and techniques useful in the software development lifecycle. Students learn to navigate and leverage commands and utilities in the Linux Command Line Shell. Students gain experience in version control software, writing scripts to automate tasks, and creating effective test cases to identify bugs. Tracing and debugging strategies are discussed. Students also gain experience in using built-in support for version control, testing, debugging, build automation, etc. in integrated development environments (IDEs).

Prerequisites
  • Complete 1 of the following
    • Must have completed the following:
      • CS145 - Designing Functional Programs (Advanced Level) (0.50)
    • Earned a minimum grade of 90% in each of the following:
      • CS115 - Introduction to Computer Science 1 (0.50)
    • Earned a minimum grade of 70% in each of the following:
      • CS116 - Introduction to Computer Science 2 (0.50)
    • Earned a minimum grade of 60% in at least 1 of the following:
      • CS135 - Designing Functional Programs (0.50)
Corequisites
  • Completed or concurrently enrolled in at least 1 of the following:
    • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
    • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 137 Programming Principles0.50 units

Review of fundamental programming concepts and their application. Procedures and parameter passing. Arrays and structures. Recursion. Sorting. Pointers and simple dynamic structures. Space and time analysis of designs. Design methodologies.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 138 Introduction to Data Abstraction and Implementation0.50 units

Software abstractions via elementary data structures and their implementation; encapsulation and modularity; class and interface definitions; object instantiation; recursion; elementary abstract data types, including sequences, stacks, queues, and trees; implementation using linked structures and arrays; vectors and strings; memory models; automatic vs. dynamic memory management.

Prerequisites
  • Must have completed the following:
    • CS137 - Programming Principles (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 145 Designing Functional Programs (Advanced Level)0.50 units

CS 145 is an advanced-level version of CS 135.

Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS115 - Introduction to Computer Science 1 (0.50)
    • CS135 - Designing Functional Programs (0.50)
    • CS137 - Programming Principles (0.50)
    • CS138 - Introduction to Data Abstraction and Implementation (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 146 Elementary Algorithm Design and Data Abstraction (Advanced Level)0.50 units

CS 146 is an advanced-level version of CS 136.

Prerequisites
  • Earned a minimum grade of 75% in each of the following:
    • CS145 - Designing Functional Programs (Advanced Level) (0.50)
Corequisites
  • Completed or concurrently enrolled in:
    • CS136L - Tools and Techniques for Software Development (0.25)
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS116 - Introduction to Computer Science 2 (0.50)
    • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
    • CS137 - Programming Principles (0.50)
    • CS138 - Introduction to Data Abstraction and Implementation (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 200 Concepts for Advanced Computer Usage0.50 units

Important concepts underlying major personal computer application categories; methodologies for learning and evaluating software; operating system and hardware design from the user's point of view, with implications for maintaining a personal computer. Students are encouraged to use their own personal computer for assignments. Social media and the effect of technology on society are explored throughout the course.

Antirequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 230 Introduction to Computers and Computer Systems0.50 units

Basic computer architecture, organization, system services, and software. Typology of processors, memory, I/O devices, and their performance.

Prerequisites
  • Complete 1 of the following
    • Must have completed at least 1 of the following:
      • CS116 - Introduction to Computer Science 2 (0.50)
      • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
      • CS138 - Introduction to Data Abstraction and Implementation (0.50)
      • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
    • Complete all of the following
      • Must have completed at least 1 of the following:
        • CS115 - Introduction to Computer Science 1 (0.50)
        • CS135 - Designing Functional Programs (0.50)
        • CS145 - Designing Functional Programs (Advanced Level) (0.50)
      • Earned a minimum grade of 60% in each of the following:
        • CS114 - Principles of Computing for Science (0.50)
Antirequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 231 Algorithmic Problem Solving0.50 units

The study of the steps required to solve real-world problems on a computer, including problem specification, choice of algorithmic paradigm, analysis, and implementation. Topics include exhaustive search, divide and conquer, greedy, and dynamic programming approaches.

Prerequisites
  • Complete 1 of the following
    • Must have completed at least 1 of the following:
      • CS116 - Introduction to Computer Science 2 (0.50)
      • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
      • CS138 - Introduction to Data Abstraction and Implementation (0.50)
      • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
    • Complete all of the following
      • Earned a minimum grade of 60% in each of the following:
        • CS114 - Principles of Computing for Science (0.50)
      • Must have completed at least 1 of the following:
        • CS115 - Introduction to Computer Science 1 (0.50)
        • CS135 - Designing Functional Programs (0.50)
        • CS145 - Designing Functional Programs (Advanced Level) (0.50)
Antirequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 234 Data Types and Structures0.50 units

Top-down design of data structures. Using representation-independent data types. Introduction to commonly used data types, including lists, sets, mappings, and trees. Selection of data representation.

Prerequisites
  • Complete 1 of the following
    • Must have completed at least 1 of the following:
      • CS116 - Introduction to Computer Science 2 (0.50)
      • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
      • CS138 - Introduction to Data Abstraction and Implementation (0.50)
      • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
    • Complete all of the following
      • Earned a minimum grade of 60% in each of the following:
        • CS114 - Principles of Computing for Science (0.50)
      • Must have completed at least 1 of the following:
        • CS115 - Introduction to Computer Science 1 (0.50)
        • CS135 - Designing Functional Programs (0.50)
        • CS145 - Designing Functional Programs (Advanced Level) (0.50)
Antirequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 240 Data Structures and Data Management0.50 units

Introduction to widely used and effective methods of data organization, focusing on data structures, their algorithms, and the performance of these algorithms. Specific topics include priority queues, sorting, dictionaries, data structures for text processing.

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • BME122 - Data Structures and Algorithms (0.50)
    • CS234 - Data Types and Structures (0.50)
    • CS240E - Data Structures and Data Management (Enriched) (0.50)
    • ECE250 - Algorithms and Data Structures (0.50)
    • MTE140 - Algorithms and Data Structures (0.50)
    • SYDE223 - Data Structures and Algorithms (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 240E Data Structures and Data Management (Enriched)0.50 units

Enriched version of CS 240.

Prerequisites
Corequisites
  • Completed or concurrently enrolled in at least 1 of the following:
    • STAT206 - Statistics for Software Engineering (0.50)
    • STAT230 - Probability (0.50)
    • STAT240 - Probability (Advanced Level) (0.50)
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS234 - Data Types and Structures (0.50)
    • CS240 - Data Structures and Data Management (0.50)
    • ECE250 - Algorithms and Data Structures (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 241 Foundations of Sequential Programs0.50 units

The relationship between high-level languages and the computer architecture that underlies their implementation, including basic machine architecture, assemblers, specification and translation of programming languages, linkers and loaders, block-structured languages, parameter passing mechanisms, and comparison of programming languages.

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS230 - Introduction to Computers and Computer Systems (0.50)
    • CS241E - Foundations of Sequential Programs (Enriched) (0.50)
    • ECE351 - Compilers (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 241E Foundations of Sequential Programs (Enriched)0.50 units

Enriched version of CS 241.

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS230 - Introduction to Computers and Computer Systems (0.50)
    • ECE351 - Compilers (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 245 Logic and Computation0.50 units

Logic as a tool for representation, reasoning, and computation. Propositional and predicate logic. Formalizing the notions of correct and incorrect reasoning, defining what is computable, and exploring the limits of computation. Godel's Incompleteness Theorem. Applications of logic to computer science.

Prerequisites
  • Complete all of the following
    • Must have completed at least 1 of the following:
      • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
      • CS138 - Introduction to Data Abstraction and Implementation (0.50)
      • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
    • Must have completed at least 1 of the following:
      • MATH135 - Algebra for Honours Mathematics (0.50)
      • MATH145 - Algebra (Advanced Level) (0.50)
    • Enrolled in an Honours Mathematics program
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS245E - Logic and Computation (Enriched) (0.50)
    • ECE208 - Discrete Mathematics and Logic 2 (0.50)
    • PMATH330 - Introduction to Mathematical Logic (0.50)
    • SE212 - Logic and Computation (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 245E Logic and Computation (Enriched)0.50 units

Enriched version of CS 245.

Prerequisites
  • Complete all of the following
    • Earned a minimum grade of 85% in at least 1 of the following:
      • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
      • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
    • Enrolled in an Honours Mathematics program
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS245 - Logic and Computation (0.50)
    • ECE208 - Discrete Mathematics and Logic 2 (0.50)
    • PMATH330 - Introduction to Mathematical Logic (0.50)
    • SE212 - Logic and Computation (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 246 Object-Oriented Software Development0.50 units

Introduction to object-oriented programming and to tools and techniques for software development. Designing, coding, debugging, testing, and documenting medium-sized programs: reading specifications and designing software to implement them; selecting appropriate data structures and control structures; writing reusable code; reusing existing code; basic performance issues; debuggers; test suites.

Prerequisites
  • Complete all of the following
    • Complete 1 of the following
      • Must have completed the following:
        • CS136L - Tools and Techniques for Software Development (0.25)
        • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
      • Earned a minimum grade of 60% in each of the following:
        • CS138 - Introduction to Data Abstraction and Implementation (0.50)
      • Complete all of the following
        • Must have completed the following:
          • CS136L - Tools and Techniques for Software Development (0.25)
        • Earned a minimum grade of 60% in each of the following:
          • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
    • Enrolled in an Honours Mathematics program
Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • CS246E - Object-Oriented Software Development (Enriched) (0.50)
      • CS247 - Software Engineering Principles (0.50)
      • MSE342 - Principles of Software Engineering (0.50)
      • SYDE322 - Software Design (0.50)
    • Not completed any of the following:
      • MSCI342

Calendar entryRequirements, Fall 2026Course outlines

CS 246E Object-Oriented Software Development (Enriched)0.50 units

Enriched version of CS 246.

Prerequisites
  • Complete all of the following
    • Must have completed the following:
      • CS136L - Tools and Techniques for Software Development (0.25)
    • Earned a minimum grade of 85% in at least 1 of the following:
      • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
      • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
    • Enrolled in an Honours Mathematics program
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS246 - Object-Oriented Software Development (0.50)
    • SYDE322 - Software Design (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 247 Software Engineering Principles0.50 units

Systematic methods for designing, coding, testing, and documenting medium-sized programs. Major topics include abstraction, modularity, software modelling, object-oriented programming and design, generic programming, testing and debugging.

Prerequisites
  • Complete all of the following
    • Must have completed at least 1 of the following:
      • CS241 - Foundations of Sequential Programs (0.50)
      • CS241E - Foundations of Sequential Programs (Enriched) (0.50)
    • Enrolled in H-Software Engineering
Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • CS246 - Object-Oriented Software Development (0.50)
      • CS246E - Object-Oriented Software Development (Enriched) (0.50)
      • MSE342 - Principles of Software Engineering (0.50)
      • SYDE322 - Software Design (0.50)
    • Not completed any of the following:
      • MSCI342

Calendar entryRequirements, Fall 2026Course outlines

CS 251 Computer Organization and Design0.50 units

Overview of computer organization and performance. Basics of digital logic design. Combinational and sequential elements. Data representation and manipulation. Basics of processor design. Pipelining. Memory hierarchies. Multiprocessors.

Prerequisites
Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • BME393 - Digital Systems (0.50)
      • CS251E - Computer Organization and Design (Enriched) (0.50)
      • ECE222 - Digital Computers (0.50)
      • ME262 - Digital Logic, Microcontrollers, and Programmable Logic Controllers (0.50)
      • MTE262 - Introduction to Digital Logic (0.50)
    • Not completed any of the following:

Calendar entryRequirements, Fall 2026Course outlines

CS 251E Computer Organization and Design (Enriched)0.50 units

Enriched version of CS 251.

Prerequisites
Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • BME393 - Digital Systems (0.50)
      • CS251 - Computer Organization and Design (0.50)
      • ECE222 - Digital Computers (0.50)
      • ME262 - Digital Logic, Microcontrollers, and Programmable Logic Controllers (0.50)
      • MTE262 - Introduction to Digital Logic (0.50)
    • Not completed any of the following:

Calendar entryRequirements, Fall 2026Course outlines

CS 330 Management Information Systems0.50 units

An introduction to information systems and their strategic role in business. Topics include types of information systems, organizational requirements, systems development strategies, decision support systems, data and information management, and information systems management, control, and implementation.

Prerequisites
  • Complete all of the following
    • Complete 1 of the following
      • Must have completed at least 1 of the following:
        • CS106 - Introduction to Computer Programming 2 (0.50)
        • CS116 - Introduction to Computer Science 2 (0.50)
        • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
        • CS138 - Introduction to Data Abstraction and Implementation (0.50)
        • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
      • Complete all of the following
        • Must have completed at least 1 of the following:
          • CS115 - Introduction to Computer Science 1 (0.50)
          • CS135 - Designing Functional Programs (0.50)
          • CS145 - Designing Functional Programs (Advanced Level) (0.50)
        • Earned a minimum grade of 60% in each of the following:
          • CS114 - Principles of Computing for Science (0.50)
    • Students must be in level 2B or higher
Antirequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 335 Computational Methods in Business and Finance0.50 units

An introduction to numerical methods for business and finance. Floating-point arithmetic, interpolation. Methods for portfolio optimization and contingent-claims valuation. Solution of nonlinear equations. Monte Carlo methods, lattice methods, simulation of hedging strategies.

Prerequisites
  • Complete all of the following
    • Complete 1 of the following
      • Must have completed at least 1 of the following:
        • CS116 - Introduction to Computer Science 2 (0.50)
        • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
        • CS138 - Introduction to Data Abstraction and Implementation (0.50)
        • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
      • Complete all of the following
        • Must have completed at least 1 of the following:
          • CS115 - Introduction to Computer Science 1 (0.50)
          • CS135 - Designing Functional Programs (0.50)
        • Earned a minimum grade of 60% in each of the following:
          • CS114 - Principles of Computing for Science (0.50)
    • Complete 1 of the following
      • Must have completed at least 1 of the following:
        • MATH136 - Linear Algebra 1 for Honours Mathematics (0.50)
        • MATH146 - Linear Algebra 1 (Advanced Level) (0.50)
      • Earned a minimum grade of 70% in each of the following:
        • MATH106 - Applied Linear Algebra 1 (0.50)
    • Must have completed at least 1 of the following:
      • MATH237 - Calculus 3 for Honours Mathematics (0.50)
      • MATH247 - Calculus 3 (Advanced Level) (0.50)
    • Must have completed at least 1 of the following:
      • STAT206 - Statistics for Software Engineering (0.50)
      • STAT231 - Statistics (0.50)
      • STAT241 - Statistics (Advanced Level) (0.50)
Antirequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 338 Computer Applications in Business: Databases0.50 units

A user-oriented approach to the management of large collections of data. Methods used for the storage, selection, and presentation of data. Common database management systems.

Prerequisites
  • Complete 1 of the following
    • Must have completed at least 1 of the following:
      • CS230 - Introduction to Computers and Computer Systems (0.50)
      • CS231 - Algorithmic Problem Solving (0.50)
      • CS234 - Data Types and Structures (0.50)
      • CS246 - Object-Oriented Software Development (0.50)
      • CS246E - Object-Oriented Software Development (Enriched) (0.50)
      • CS330 - Management Information Systems (0.50)
    • Complete all of the following
      • Must have completed the following:
        • AFM341 - Accounting Information Systems (0.50)
      • Must have completed at least 1 of the following:
        • CS116 - Introduction to Computer Science 2 (0.50)
        • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
        • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
Antirequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 341 Algorithms0.50 units

The study of efficient algorithms and effective algorithm design techniques. Program design with emphasis on pragmatic and mathematical aspects of program efficiency. Topics include divide and conquer algorithms, recurrences, greedy algorithms, dynamic programming, graph search and backtrack, problems without algorithms, NP-completeness and its implications.

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS231 - Algorithmic Problem Solving (0.50)
    • ECE406 - Algorithm Design and Analysis (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 343 Concurrent and Parallel Programming0.50 units

An introduction to concurrent and parallel programming, with an emphasis on language constructs. Major topics include exceptions, coroutines, atomic operations, critical sections, mutual exclusion, semaphores, high-level concurrency, deadlock, interprocess communication, process structuring, shared memory, and distributed architectures. Students will learn how to structure, implement, and debug concurrent programs.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 346 Application Development0.50 units

Introduction to full-stack application design and development. Students will work in project teams to design and build complete, working applications and services using standard tools. Topics include best-practices in design, development, testing, and deployment.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 348 Introduction to Database Management0.50 units

The main objective of this course is to introduce students to fundamentals of database technology by studying databases from three viewpoints: those of the database user, the database designer, and the database administrator. It teaches the use of a database management system (DBMS) by treating it as a black box, focusing only on its functionality and its interfaces. Topics include introduction to database systems, relational database systems, database design methodology, SQL and interfaces, database application development, concept of transactions, ODBC, JDBC, database tuning, database administration, and current topics (distributed databases, data warehouses, data mining).

Prerequisites
Corequisites
  • Completed or concurrently enrolled in at least 1 of the following:
    • CS240 - Data Structures and Data Management (0.50)
    • CS240E - Data Structures and Data Management (Enriched) (0.50)
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS338 - Computer Applications in Business: Databases (0.50)
    • ECE356 - Database Systems (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 349 User Interfaces0.50 units

An introduction to contemporary user interface implementation concepts, including event abstraction, graphical components, layout, feedback, testing, accessibility, and architectures to develop user interfaces. One or more types of interface toolkit paradigms are considered.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 350 Operating Systems0.50 units

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

Prerequisites
Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • ECE350 - Real-Time Operating Systems (0.50)
      • MTE241 - Introduction to Computer Structures and Real-Time Systems (0.50)
      • SE350 - Operating Systems (0.50)
    • Not completed any of the following:
      • ECE254

Calendar entryRequirements, Fall 2026Course outlines

CS 360 Introduction to the Theory of Computing0.50 units

Models of computers including finite automata and Turing machines. Basics of formal languages with applications to the syntax of programming languages. Alternate characterizations of language classes. Proving unrecognizability. Unsolvable problems and their relevance to the semantics of programming.

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS365 - Models of Computation (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 365 Models of Computation0.50 units

Finite automata and regular expressions. Pushdown automata and context-free grammars. Turing machines and undecidability. Time and space complexity. Diagonalization and hierarchies. CS 365 covers the material in CS 360 at an accelerated pace plus additional topics in computational complexity.

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS360 - Introduction to the Theory of Computing (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 370 Numerical Computation0.50 units

Principles and practices of basic numerical computation as a key aspect of scientific computation. Visualization of results. Approximation by splines, fast Fourier transforms, solution of linear and nonlinear equations, differential equations, floating point number systems, error, stability. Presented in the context of specific applications to image processing, analysis of data, scientific modelling.

Prerequisites
  • Complete all of the following
    • Must have completed at least 1 of the following:
      • MATH106 - Applied Linear Algebra 1 (0.50)
      • MATH114 - Linear Algebra for Science (0.50)
      • MATH115 - Linear Algebra for Engineering (0.50)
      • MATH136 - Linear Algebra 1 for Honours Mathematics (0.50)
      • MATH146 - Linear Algebra 1 (Advanced Level) (0.50)
    • Must have completed at least 1 of the following:
      • MATH118 - Calculus 2 for Engineering (0.50)
      • MATH119 - Calculus 2 for Engineering (0.50)
      • MATH128 - Calculus 2 for the Sciences (0.50)
      • MATH138 - Calculus 2 for Honours Mathematics (0.50)
      • MATH148 - Calculus 2 (Advanced Level) (0.50)
    • Must have completed at least 1 of the following:
      • CS231 - Algorithmic Problem Solving (0.50)
      • CS234 - Data Types and Structures (0.50)
      • CS241 - Foundations of Sequential Programs (0.50)
      • CS241E - Foundations of Sequential Programs (Enriched) (0.50)
      • CS246 - Object-Oriented Software Development (0.50)
      • CS246E - Object-Oriented Software Development (Enriched) (0.50)
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • AMATH242 - Introduction to Computational Mathematics (0.50)
    • CIVE121 - Computational Methods (0.50)
    • CS335 - Computational Methods in Business and Finance (0.50)
    • CS371 - Introduction to Computational Mathematics (0.50)
    • ECE204 - Numerical Methods (0.50)
    • MTE204 - Numerical Methods (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 371 Introduction to Computational Mathematics0.50 units

A rigorous introduction to the field of computational mathematics. The focus is on the interplay between continuous models and their solution via discrete processes. Topics include pitfalls in computation, solution of linear systems, interpolation, discrete Fourier transforms, and numerical integration. Applications are used as motivation.

Prerequisites
  • Complete all of the following
    • Complete 1 of the following
      • Must have completed at least 1 of the following:
        • CS116 - Introduction to Computer Science 2 (0.50)
        • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
        • CS138 - Introduction to Data Abstraction and Implementation (0.50)
        • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
      • Complete all of the following
        • Must have completed at least 1 of the following:
          • CS115 - Introduction to Computer Science 1 (0.50)
          • CS135 - Designing Functional Programs (0.50)
          • CS145 - Designing Functional Programs (Advanced Level) (0.50)
        • Earned a minimum grade of 60% in each of the following:
          • CS114 - Principles of Computing for Science (0.50)
    • Must have completed at least 1 of the following:
      • MATH235 - Linear Algebra 2 for Honours Mathematics (0.50)
      • MATH245 - Linear Algebra 2 (Advanced Level) (0.50)
    • Must have completed at least 1 of the following:
      • MATH237 - Calculus 3 for Honours Mathematics (0.50)
      • MATH247 - Calculus 3 (Advanced Level) (0.50)
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS335 - Computational Methods in Business and Finance (0.50)
    • CS370 - Numerical Computation (0.50)
    • ECE204 - Numerical Methods (0.50)
    • MTE204 - Numerical Methods (0.50)
Cross-listed
AMATH 242

Calendar entryRequirements, Fall 2026Course outlines

CS 383 Computational Digital Art Studio0.50 units

An upper-level studio course to create computational projects that function as art works and aesthetic experiences. Students will work in an interdisciplinary environment to combine computer science principles with fine art technical and conceptual skills.

Prerequisites
  • Complete all of the following
    • Must have completed the following:
      • CS240 - Data Structures and Data Management (0.50)
      • CS240E - Data Structures and Data Management (Enriched) (0.50)
    • Must have completed at least 1 of the following:
      • FINE228 - Design and Imaging (0.50)
      • FINE247 - Expanded Media: Interaction (0.50)
Cross-listed
FINE 383

Calendar entryRequirements, Fall 2026Course outlines

CS 398 Topics in Computer Science0.50 units

See the Course Offerings List for topics available.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 399 Readings in Computer Science0.50 units

Reading course as announced by the School.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 430 Applications Software Engineering0.50 units

An investigation into the role and function of software engineering practice in the construction of computer based systems. Topics include: requirements and specification; documentation techniques; analysis and design; implementation; testing and maintenance; management issues.

Prerequisites
  • Complete all of the following
    • Must have completed the following:
      • CS330 - Management Information Systems (0.50)
    • Students must be in level 3A or higher
Antirequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 431 Data-Intensive Distributed Analytics0.50 units

Introduces non-CS major students to infrastructure for data-intensive analytics, with a focus on abstractions, frameworks, and algorithms that allow developers to distribute computation across many machines. Topics include core concepts (partitioning, replication, locality, consistency), computational models (MapReduce, dataflows, stream processing, bulk-synchronous parallel), and applications.

Prerequisites
  • Complete all of the following
    • Must have completed at least 1 of the following:
      • CS230 - Introduction to Computers and Computer Systems (0.50)
      • CS251 - Computer Organization and Design (0.50)
      • CS251E - Computer Organization and Design (Enriched) (0.50)
    • Must have completed at least 1 of the following:
      • CS231 - Algorithmic Problem Solving (0.50)
      • CS234 - Data Types and Structures (0.50)
      • CS341 - Algorithms (0.50)
Antirequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 436 Networks and Distributed Computer Systems0.50 units

An introduction to networks, protocols, and distributed systems. Layered models, resource management, naming, addressing and routing, reliable communication, security, and higher-level services.

Prerequisites
  • Must have completed at least 1 of the following:
    • CS230 - Introduction to Computers and Computer Systems (0.50)
    • CS241 - Foundations of Sequential Programs (0.50)
    • CS241E - Foundations of Sequential Programs (Enriched) (0.50)
    • CS246 - Object-Oriented Software Development (0.50)
    • CS246E - Object-Oriented Software Development (Enriched) (0.50)
    • CS251 - Computer Organization and Design (0.50)
    • CS251E - Computer Organization and Design (Enriched) (0.50)
Antirequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 442 Principles of Programming Languages0.50 units

An exposure to important concepts and issues in contemporary programming languages. Data types, abstraction, and polymorphism. Program structure. Lambda calculus and functional programming, logic programming, object-oriented programming. Semantics of programming languages. Critical comparison of language features and programming methodologies using examples drawn from a variety of programming languages including Lisp, Prolog, ML, Ada, Smalltalk, Icon, APL, and Lucid. Programming assignments involve the use of some of these languages.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 444 Compiler Construction0.50 units

Phases of compilation. Lexical analysis and a review of parsing. Compiler-compilers and translator writing systems. LEX and YACC. Scope rules, block structure, and symbol tables. Runtime stack management. Parameter passage mechanisms. Stack storage organization and templates. Heap storage management. Intermediate code. Code generation. Macros.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 445 Software Requirements Specification and Analysis0.50 units

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

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • SE463 - Software Project Management, Requirements, and Analysis (0.50)
Cross-listed
ECE 451

Calendar entryRequirements, Fall 2026Course outlines

CS 446 Software Design and Architectures0.50 units

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

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS430 - Applications Software Engineering (0.50)
    • SE464 - Software Design and Architectures (0.50)
Cross-listed
ECE 452

Calendar entryRequirements, Fall 2026Course outlines

CS 447 Software Testing, Quality Assurance, and Maintenance0.50 units

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

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • SE465 - Software Testing and Quality Assurance (0.50)
Cross-listed
ECE 453

Calendar entryRequirements, Fall 2026Course outlines

CS 448 Database Systems Implementation0.50 units

The objective of this course is to introduce students to fundamentals of building a relational database management system. The course focuses on the database engine core technology by studying topics such as storage management (data layout, disk-based data structures), indexing, query processing algorithms, query optimization, transactional concurrency control, logging and recovery.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 449 Human-Computer Interaction0.50 units

An introduction to the fundamental theories, methods, and research in the design and evaluation of novel computational artifacts designed to meet real-world human needs.

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • SYDE548 - User Centred Design Methods (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 450 Computer Architecture0.50 units

The course is intended to provide the student with an appreciation of modern computer design and its relation to system architecture, compiler technology, and operating system functionality. The course places an emphasis on design based on the measurement of performance and its dependency on parallelism, efficiency, latency, and resource utilization.

Prerequisites
Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • ECE320 - Computer Architecture (0.50)
    • Not completed any of the following:
      • ECE429

Calendar entryRequirements, Fall 2026Course outlines

CS 451 Data-Intensive Distributed Computing0.50 units

Introduces students to infrastructure for data-intensive computing, with a focus on abstractions, frameworks, and algorithms that allow developers to distribute computations across many machines. Topics include core concepts (partitioning, replication, locality, consistency), computational models (MapReduce, dataflows, stream processing, bulk-synchronous parallel), and applications.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 452 Real-Time Programming0.50 units

Intended to give students experience with tools and techniques of real-time programming, this course includes not only issues of microcomputer architecture and a real-time programming language and operating system, but also hands-on experience programming a microcomputer for applications such as process control, data acquisition and communication.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 453 Software and Systems Security0.50 units

Introduction to security issues in modern software, operating systems, and other computing platforms (e.g., mobile and cloud environments). Causes of security breaches and methods to help detect, isolate, and prevent them. Specific topics include comparing security and privacy, program security, operating system security, mobile security, hardware security, administrating security, and legal and ethical issues.

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in:

Calendar entryRequirements, Fall 2026Course outlines

CS 454 Distributed Systems0.50 units

An introduction to distributed systems, emphasizing the multiple levels of software in such systems. Specific topics include fundamentals of data communications, network architecture and protocols, local-area networks, concurrency control in distributed systems, recovery in distributed systems, and clock synchronization.

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • ECE454 - Distributed Computing (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 456 Computer Networks0.50 units

An introduction to network architectures and protocols, placing emphasis on protocols used in the Internet. Specific topics include application layer protocols, network programming, transport protocols, routing, multicast, data link layer issues, multimedia networking, network security, and network management.

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS436 - Networks and Distributed Computer Systems (0.50)
    • ECE358 - Computer Networks (0.50)
    • ECE416 - Advanced Topics in Networking (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 457 System Performance Evaluation0.50 units

Basic techniques of system performance evaluation. Specific topics include performance modelling, discrete event simulation, verification and validation of simulation models, analysis of simulation output, analysis of single server queue and queueing networks, modelling of computer systems, networks, and other queueing or non-queueing systems.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 459 Privacy, Cryptography, Network and Data Security0.50 units

Introduction to privacy and security using cryptography and related techniques in networks, distributed systems, and data science. The course examines how data and metadata can be protected at rest, in transit, and during computation. For at-rest protection, specific topics include the basics of cryptography and relevant ethics/policy concepts. For in-transit protection, specific topics include network defenses, authentication, and secure and anonymous communication protocols. For during-computation protection, specific topics include data inference, differential privacy, homomorphic encryption, multi-party computations, and related protocols.

Prerequisites
Corequisites
  • Completed or concurrently enrolled in at least 1 of the following:
    • CS454 - Distributed Systems (0.50)
    • CS456 - Computer Networks (0.50)
    • ECE358 - Computer Networks (0.50)
Antirequisites
  • Not completed nor concurrently enrolled in:

Calendar entryRequirements, Fall 2026Course outlines

CS 462 Formal Languages and Parsing0.50 units

Languages and their representations. Grammars --Chomsky hierarchy. Regular sets and sequential machines. Context-free grammars -- normal forms, basic properties. Pushdown automata and transducers. Operations on languages. Undecidable problems in language theory. Applications to the design of programming languages and compiler construction.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 466 Algorithm Design and Analysis0.50 units

Algorithmic approaches and methods of assessment that reflect a broad spectrum of criteria, including randomized algorithms, amortized analysis, lower bounds, approximation algorithms, and on-line algorithms. Particular examples will be chosen from different areas of active research and application.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 467 Introduction to Quantum Information Processing0.50 units

Basics of computational complexity; basics of quantum information; quantum phenomena; quantum circuits and universality; relationship between quantum and classical complexity classes; simple quantum algorithms; quantum Fourier transform; Shor factoring algorithm; Grover search algorithm; physical realization of quantum computation; error-correction and fault-tolerance; quantum key distribution.

Prerequisites
  • Complete all of the following
    • Earned a minimum grade of 80% in at least 1 of the following:
      • MATH235 - Linear Algebra 2 for Honours Mathematics (0.50)
      • MATH245 - Linear Algebra 2 (Advanced Level) (0.50)
    • Students must be in level 3A or higher
Cross-listed
CO 481, PHYS 467

Calendar entryRequirements, Fall 2026Course outlines

CS 475 Computational Linear Algebra0.50 units

Basic concepts and implementation of numerical linear algebra techniques and their use in solving application problems. Special methods for solving linear systems having special features. Direct methods: symmetric, positive definite, band, general sparse structures, ordering methods. Iterative methods: Jacobi, Gauss-Seidel, SOR, conjugate gradient. Computing and using orthogonal factorizations of matrices. QR and SVD methods for solving least squares problems. Eigenvalue and singular value decompositions. Computation and uses of these decompositions in practice.

Prerequisites
  • Must have completed at least 1 of the following:
    • AMATH242 - Introduction to Computational Mathematics (0.50)
    • CS370 - Numerical Computation (0.50)
    • CS371 - Introduction to Computational Mathematics (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 476 Numerical Computation for Financial Modelling0.50 units

The interaction of financial models, numerical methods, and computing environments. Basic computational aspects of option pricing and hedging. Numerical methods for stochastic differential equations, strong and weak convergence. Generating correlated random numbers. Time-stepping methods. Finite difference methods for the Black-Scholes equation. Discretization, stability, convergence. Methods for portfolio optimization, effect of data errors on portfolio weights.

Prerequisites
  • Complete all of the following
    • Must have completed at least 1 of the following:
      • AMATH242 - Introduction to Computational Mathematics (0.50)
      • CS370 - Numerical Computation (0.50)
      • CS371 - Introduction to Computational Mathematics (0.50)
    • Complete 1 of the following
      • Must have completed at least 1 of the following:
        • STAT231 - Statistics (0.50)
        • STAT241 - Statistics (Advanced Level) (0.50)
      • Earned a minimum grade of 60% in each of the following:
        • STAT206 - Statistics for Software Engineering (0.50)
Cross-listed
ACTSC 447

Calendar entryRequirements, Fall 2026Course outlines

CS 479 Neural Networks0.50 units

An introduction to neural network methods, with some discussion of their relation to neuroscience. Simple neuron models and networks of neurons. Training feedforward networks. Backpropagation of errors and stochastic gradient descent. Unsupervised learning methods. Recurrent neural networks. Convolutional neural networks. Continuous time models. Adversarial attacks. Advanced topics may include neural engineering, biologically plausible learning methods.

Prerequisites
  • Complete 1 of the following
    • Must have completed at least 1 of the following:
      • STAT230 - Probability (0.50)
      • STAT240 - Probability (Advanced Level) (0.50)
    • Earned a minimum grade of 60% in each of the following:
      • STAT206 - Statistics for Software Engineering (0.50)
Corequisites
  • Completed or concurrently enrolled in at least 1 of the following:
    • AMATH242 - Introduction to Computational Mathematics (0.50)
    • CS335 - Computational Methods in Business and Finance (0.50)
    • CS370 - Numerical Computation (0.50)
    • CS371 - Introduction to Computational Mathematics (0.50)
Cross-listed
AMATH 449

Calendar entryRequirements, Fall 2026Course outlines

CS 480 Introduction to Machine Learning0.50 units

Introduction to modelling and algorithmic techniques for machines to learn concepts from data. Generalization: underfitting, overfitting, cross-validation. Tasks: classification, regression, clustering. Optimization-based learning: loss minimization. regularization. Statistical learning: maximum likelihood, Bayesian learning. Algorithms: nearest neighbour, (generalized) linear regression, mixtures of Gaussians, Gaussian processes, kernel methods, support vector machines, deep learning, sequence learning, ensemble techniques. Large scale learning: distributed learning and stream learning. Applications: Natural language processing, computer vision, data mining, human computer interaction, information retrieval.

Prerequisites
Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • MSE446 - Introduction to Machine Learning (0.50)
    • Not completed any of the following:
      • MSCI446

Calendar entryRequirements, Fall 2026Course outlines

CS 482 Computational Techniques in Biological Sequence Analysis0.50 units

Computer science principles and algorithms in biological sequence analysis. Topics include algorithms for sequence comparison, for large-scale database search in biological databases, for sequence assembly, for evolutionary tree reconstruction, for identifying important features in DNA and RNA sequences, and underlying computational techniques for understanding strings and trees and for making probabilistic inferences.

Prerequisites
  • Complete all of the following
    • Must have completed the following:
      • CS341 - Algorithms (0.50)
    • Complete 1 of the following
      • Must have completed the following:
        • STAT241 - Statistics (Advanced Level) (0.50)
      • Earned a minimum grade of 70% in each of the following:
        • STAT206 - Statistics for Software Engineering (0.50)
      • Earned a minimum grade of 60% in each of the following:

Calendar entryRequirements, Fall 2026Course outlines

CS 484 Computational Vision0.50 units

Introduction to image and vision understanding by computer. Camera-system geometry, image formation and lighting, and image acquisition. Basic visual processes for recognition of edges, regions, lines, and surfaces. Processing of stereo images, and motion in image sequences. Object recognition. Applications of computer-vision systems.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 485 Statistical and Computational Foundations of Machine Learning0.50 units

Extracting meaningful patterns from random samples of large data sets. Statistical analysis of the resulting problems. Common algorithmic paradigms for such tasks. Central concepts: VC-dimension, margins of a classifier, sparsity and description length, other types of regularization. Performance guarantees: generalization bounds, data dependent error bounds, and computational complexity of learning algorithms. Common paradigms: neural networks, kernel methods and support-vector machines, boosting, nearest neighbor classifiers. Applications to data mining.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 486 Introduction to Artificial Intelligence0.50 units

Goals and methods of artificial intelligence. Methods of general problem solving. Knowledge representation and reasoning. Planning. Reasoning about uncertainty. Machine learning. Multi-agent systems. Natural language processing.

Prerequisites
Corequisites
  • Completed or concurrently enrolled in at least 1 of the following:
    • STAT206 - Statistics for Software Engineering (0.50)
    • STAT231 - Statistics (0.50)
    • STAT241 - Statistics (Advanced Level) (0.50)
Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • SYDE522 - Foundations of Artificial Intelligence (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 487 Introduction to Symbolic Computation0.50 units

An introduction to the use of computers for symbolic mathematical computation, involving traditional mathematical computations such as solving linear equations (exactly), analytic differentiation and integration of functions, and analytic solution of differential equations.

Prerequisites
  • Complete all of the following
    • Must have completed at least 1 of the following:
      • CS231 - Algorithmic Problem Solving (0.50)
      • CS234 - Data Types and Structures (0.50)
      • CS240 - Data Structures and Data Management (0.50)
      • CS240E - Data Structures and Data Management (Enriched) (0.50)
    • Enrolled in an Honours Mathematics program

Calendar entryRequirements, Fall 2026Course outlines

CS 488 Introduction to Computer Graphics0.50 units

Software and hardware for interactive computer graphics. Implementation of device drivers, 3-D transformations, clipping, perspective, and input routines. Data structures, hidden surface removal, colour shading techniques, and some additional topics will be covered.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 489 Advanced Topics in Computer Science0.50 units

See the Course Offerings List for topics available.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 490 Information Systems Management0.50 units

The integration of business and technical considerations in the design, implementation and management of information systems. Topics include: IS planning and development; business, management, executive, and strategic information systems, including case studies of selected large- scale systems; decision support systems; end-user training and development; systems security, disaster planning and recovery. Practical examples of information systems in industry.

Prerequisites
Antirequisites
  • Not completed nor concurrently enrolled in:
    • BUS415W
    • BUS486W

Calendar entryRequirements, Fall 2026Course outlines

CS 492 The Social Implications of Computing0.50 units

This course is designed to consider the problems encountered by individuals, organizations and society as computer technology is adopted, with a view towards assessing possible courses of action.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 493 Team Project 10.50 units

Students work in teams on substantial open-ended computer science problems as part of the CS 493/494 course sequence. Lectures describe project management fundamentals and ethical and legal issues in computing. Students form teams, select projects, define project goals, perform risk assessment, establish a project plan, and develop a prototype. Possible project topics can include development of software systems, analysis of extensions to existing systems across the field, and experimental computer science.

Prerequisites
Antirequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 494 Team Project 20.50 units

Continuing from CS 493, student teams continue development of their project, update project plans, explore design alternatives, perform testing, and analyze experimental results. Teams prepare and deliver technical presentations and demonstrations of their projects, and analyze ethical and legal aspects of their work.

Prerequisites
Antirequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 497 Multidisciplinary Studies in Computer Science0.50 units

See the Course Offerings list for topics available.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 499R Readings in Computer Science0.50 units

Reading course as announced by the department.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 499T Honours Thesis0.50 units

The student will undertake new analysis, synthesis, measurement, or experimentation to produce a document that demonstrates a depth of understanding of a topic that goes beyond what is obtained in a standard undergraduate education.

  • A detailed thesis proposal and names of a supervisor and a reader are required.
Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

Graduate

From the Fall 2026 Graduate Calendar.

CS 600 Fundamentals of Computer Science for Data Science0.50 units

This course is designed for Data Science MMath students who do not have an undergraduate degree in Computer Science. It provides these students with the background needed to take Data Science graduate courses with a strong computational flavour. Topics include the following. The design and operation of processors. Memory hierarchies. Basic concepts of operating systems, concurrency, parallelism, and networks. Elementary data structures and their use in algorithm design and analysis.

Calendar entryRequirements, Fall 2026Course outlines

CS 631 Data-Intensive Distributed Analytics0.50 units

Introduces non-CS major students to infrastructure for data-sensitive analytics, with a focus on abstractions, frameworks, and algorithms that allow developers to distribute computations across many machines. Topics include core concepts (partitioning, replication, locality, consistency), computational models (MapReduce, dataflows, stream processing, bulk-synchronous parallel), and applications.

Calendar entryRequirements, Fall 2026Course outlines

CS 634 Security and Privacy in Health Systems0.50 units

An overview of basic security and privacy principles relevant in the design and use of applications in health settings. Program security, operating system security, network security, data security, and issues related to the management of security and privacy policies are introduced. Master of Health Informatics students only.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 636 Introduction to Computer Networks and Distributed Computer Systems0.50 units

An introduction to computer networks, Internet protocols, and distributed systems. Layered models, naming, addressing and routing, reliable communication, security, and elements of distributed system design. Master of Health Informatics students only.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 638 Principles of Data Management and Use0.50 units

A user-oriented approach to data management focusing on database principles, how to design a database, how to access data in the database and some recent technology for big data processing and the NoSQL movement. Relational database technology, relational algebra, SQL, database views, transactions, data modeling methodology, entity-relationship models. Introduction to several current topics in database research, such as warehousing, data mining, big data processing, NoSQL systems. Master of Health Informatics and Analytics students only.

Prerequisites

Calendar entryRequirements, Fall 2026Course outlines

CS 642 Principles of Programming Languages0.50 units

An exposure to important concepts and issues in contemporary programming languages. Data types, abstraction, and polymorphism. Program structure. Lambda calculus and functional programming, logic programming, object-oriented programming. Semantics of programming languages. Critical comparison of language features and programming methodologies using examples drawn from a variety of programming languages including Lisp, Prolog, ML, Ada, Smalltalk, Icon, APL, and Lucid. Programming assignments involve the use of some of these languages.

Calendar entryRequirements, Fall 2026Course outlines

CS 644 Compiler Construction0.50 units

Phases of compilation. Lexical analysis and a review of parsing. Compiler-compilers and translator writing systems. LEX and YACC. Scope rules, block structure, and symbol tables. Runtime stack management. Parameter passage mechanisms. Stack storage organization and templates. Heap storage management. Intermediate code. Code generation. Macros.

Calendar entryRequirements, Fall 2026Course outlines

CS 645 Software Requirements Specification and Analysis0.50 units

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

Calendar entryRequirements, Fall 2026Course outlines

CS 646 Software Design and Architectures0.50 units

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

Calendar entryRequirements, Fall 2026Course outlines

CS 647 Software Testing, Quality Assurance and Maintenance0.50 units

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

Calendar entryRequirements, Fall 2026Course outlines

CS 648 Database Systems Implementation0.50 units

The objective of this course is to introduce students to fundamentals of building a relational database management system. The course focuses on the database engine core technology by studying topics such as storage management (data layout, disk-based data structures), indexing, query processing algorithms, query optimization, transactional concurrency control, logging and recovery. Preference will be given to CS graduate students. All other require permission from the school.

Calendar entryRequirements, Fall 2026Course outlines

CS 649 Human-Computer Interaction0.50 units

An introduction to the fundamental theories, methods, and research in the design and evaluation of description: novel computational artifacts designed to meet real-world human needs.

Antirequisites
  • Not completed nor concurrently enrolled in:

Calendar entryRequirements, Fall 2026Course outlines

CS 650 Computer Architecture0.50 units

The course is intended to provide the student with an appreciation of modern computer design and its relation to system architecture, compiler technology and operating system functionality. The course places an emphasis on design based on the measurement of performance and its dependency on parallelism, efficiency, latency and resource utilization.

Calendar entryRequirements, Fall 2026Course outlines

CS 651 Data-Intensive Distributed Computing0.50 units

Introduces students to infrastructure for data-intensive computing, with a focus on abstractions, frameworks, and algorithms that allow developers to distribute computations across many machines. Topics include core concepts (partitioning, replication, locality, consistency), computational models (MapReduce, dataflows, stream processing, bulk-synchronous parallel), and applications.

Calendar entryRequirements, Fall 2026Course outlines

CS 652 Real-Time Programming0.50 units

Intended to give students experience with tools and techniques of real-time programming, this course includes not only issues of microcomputer architecture and a real-time programming language and operating system, but also hands-on experience programming a microcomputer for applications such as process control, data acquisition and communication. .Preference will be given to CS graduate students. All others require approval from the department.

Calendar entryRequirements, Fall 2026Course outlines

CS 653 Software and Systems Security0.50 units

Introduction to security issues in modern software, operating systems, and other computing platforms (e.g., mobile and cloud environments). Causes of security breaches and methods to help detect, isolate, and prevent them. Specific topics include comparing security and privacy, program security, operating system security, mobile security, hardware security, administrating security, and legal and ethical issues. Knowledge of operating systems equivalent to that obtained from CS 350 is assumed.

Calendar entryRequirements, Fall 2026Course outlines

CS 654 Distributed Systems0.50 units

An introduction to distributed systems, emphasizing the multiple levels of software in such systems. Specific topics include fundamentals of data communications, network architecture and protocols, local-area networks, concurrency control in distributed systems, recovery in distributed systems, and clock synchronization. Preference will be given to CS graduate students. All others require approval from the department.

Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS755 - System and Network Architectures and Implementation (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 656 Computer Networks0.50 units

An introduction to network architectures and protocols, placing emphasis on protocols used in the Internet. Specific topics include application layer protocols, network programming, transport protocols, routing, multicast, data link layer issues, multimedia networking, network security, and network management.

Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS755 - System and Network Architectures and Implementation (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 657 System Performance Evaluation0.50 units

Basic techniques of system performance evaluation. Specific topics include: performance modeling, discrete event simulation, verification and validation of simulation models, analysis of simulation output, analysis of single server queue and queueing networks, modeling of computer systems, networks, and other queueing or non-queueing systems.

Calendar entryRequirements, Fall 2026Course outlines

CS 659 Privacy, Cryptography, Network and Data Security0.50 units

Introduction to privacy and security using cryptography and related techniques in networks, distributed systems, and data science. The course examines how data and metadata can be protected at rest, in transit, and during computation. For at-rest protection, specific topics include the basics of cryptography and relevant ethics/policy concepts. For in-transit protection, specific topics include network defenses, authentication and secure and anonymous communication protocols. For during-computation protection, specific topics include data inference, differential privacy, homomorphic encryption, multi-party computations, and related protocols. Knowledge of distributed systems and computer networks equivalent to that obtained from CS 454 and CS 456 is assumed.

Calendar entryRequirements, Fall 2026Course outlines

CS 662 Formal Languages and Parsing0.50 units

Languages and their representations. Grammars-Chomsky hierarchy. Regular sets and sequential machines. Context-free grammars-normal forms, basic properties. Pushdown automata and transducers. Operations on languages. Undecidable problems in language theory. Applications to the design of programming languages and compiler construction.

Calendar entryRequirements, Fall 2026Course outlines

CS 664 Computational Complexity Theory0.50 units

The classification of problems according to the computational resources required for their solution, with emphasis on properties of feasible computations rather than on specific algorithms. Topics include: time and space complexity, tractable and intractable problems, computation using randomness, parallel computation.

Calendar entryRequirements, Fall 2026Course outlines

CS 666 Algorithm Design and Analysis0.50 units

Design of good algorithms and analysis of the resources they consume. Lower bounds on the resource requirements of algorithms to compute certain functions. Problems from the following areas are discussed in this light: sorting and order statistics, data structures, arithmetic computations, the NP-complete problems.

Calendar entryRequirements, Fall 2026Course outlines

CS 675 Computational Linear Algebra0.50 units

Basic concepts and implementation of numerical linear algebra techniques and their use in solving application problems. Special methods for solving linear systems having special features. Direct methods: symmetric, positive definite, band, general sparse structures, ordering methods. Iterative methods: Jacobi, Gauss-Seidel, SOR, conjugate gradient. Computing and using orthogonal factorizations of matrices. QR and SVD methods for solving least squares problems. Eigenvalue and singular value decompositions. Computation and uses of these decompositions in practice.

Antirequisites
  • Not completed nor concurrently enrolled in:
    • CM372
    • CM472
    • CS372
    • CS472

Calendar entryRequirements, Fall 2026Course outlines

CS 676 Numeric Computation for Financial Modelling0.50 units

The interaction of financial modes, numerical methods, and computing environments. Basic computational aspects of option pricing and hedging. Numerical methods for stochastic differential equations, strong and weak convergence. Generating correlated random numbers. Time-stepping methods. Finite difference methods for Black-Scholes equation. Discretization, stability, convergence. Methods for portfolio optimization, effect of data errors on portfolio weights. (Heldwith CS 476).

Calendar entryRequirements, Fall 2026Course outlines

CS 679 Neural Networks0.50 units

An introduction to neural network methods, with some discussion of their relevance to neuroscience. Simple neuron models and networks of neurons. Training feedforward networks for classification or regression. Learning using the backpropagation of errors. Unsupervised learning methods. Optimal linear decoding. Recurrent neural networks. Convolutional neural networks. Advanced topics, including adversarial inputs and biologically plausible learning methods.

Antirequisites
Cross-listed
AMATH 649

Calendar entryRequirements, Fall 2026Course outlines

CS 680 Introduction to Machine Learning0.50 units

Introduction to modeling and algorithmic techniques for machines to learn concepts from data. Generalization: underfitting, overfitting, cross-validation. Tasks: classification, regression, clustering. Optimization-based learning: loss minimization, regularization. Statistical learning: maximum likelihood, Bayesian learning. Algorithms: nearest neighbor, (generalized) linear regression, mixtures of Gaussians, Gaussian processes, kernel methods, support vector machines, deep learning, sequence learning, ensemble techniques. Large scale learning: distributed learning and stream learning. Applications: Natural language processing, computer vision, data mining, human computer interaction, information retrieval.

Calendar entryRequirements, Fall 2026Course outlines

CS 682 Computational Techniques in Biological Sequence Analysis0.50 units

Computer science principles and algortihms in biological sequence analysis. Topics include algotithms for sequence comparison, for large-scale database search in biological databases, for sequence assembly, for evolutionary tree reconstruction, for identifying important featrues in DNA and RNA sequences, and underlying computational techniques for understanding strings and trees and for making probabilistic inferences. (Heldwith CS 482).

Calendar entryRequirements, Fall 2026Course outlines

CS 684 Computational Vision0.50 units

Introduction to image and vision understanding by computer. Camera-system geometry, image formation and lighting, and image acquisition. Basic visual processes for recognition of edges, regions, lines, and surfaces. Processing of stereo images, and motion in image sequences. Object recognition. Applications of computer vision systems.

Calendar entryRequirements, Fall 2026Course outlines

CS 685 Machine Learning: Statistical and Computational Foundations0.50 units

Extracting meaningful patterns from random samples of large data sets. Statistical analysis of the resulting problems. Common algorithm paradigms for such tasks. Central concepts: VC-dimension, Margins of classifier, Sparsity and description length. Performance guarantees: Generalization bounds, data dependent error bounds and computational complexity of learning algorithms. Common paradigms: Neural networks, Kernel methods and Support Vector machines, Applications to Data Mining.

Calendar entryRequirements, Fall 2026Course outlines

CS 686 Introduction to Artificial Intelligence0.50 units

Goals and methods of artificial intelligence. Methods of general problem solving. Introduction to mathematical logic Mechanical theorem proving. Game playing. Natural language processing. Preference will be given to CS graduate students. All others require approval from the department.

Calendar entryRequirements, Fall 2026Course outlines

CS 687 Introduction to Symbolic Computation0.50 units

An introduction to the use of computers for symbolic mathematical computation, involving traditional mathematical computations such as solving linear equations (exactly), analytic differentiation and integration of functions, and analytic solution of differential equations.

Cross-listed
CM 730

Calendar entryRequirements, Fall 2026Course outlines

CS 688 Introduction to Computer Graphics0.50 units

Software and hardware for interactive computer graphics. Implementation of device drivers, 3-D transformations, clipping, perspective, and input routines. Data structures, hidden surface removal, colour shading techniques, and some additional topics will be covered. Preference will be given to CS graduate students. All others require approval from the department.

Calendar entryRequirements, Fall 2026Course outlines

CS 690A Literature and Research Studies0.50 units

This is an individual study course carried out under the supervision of a Computer Science faculty member. The topic should be agreed upon by both the student and the instructor. This is a credit/no credit course. Department permission will be by Coordinator of Graduate Studies.

Calendar entryRequirements, Fall 2026Course outlines

CS 690B Literature and Research Studies0.50 units

This is an individual study course carried out under the supervision of a Computer Science faculty member. The topic should be agreed upon by both the student and the instructor. This is a grade course. Department permission will be by Coordinator of Graduate Studies.

Calendar entryRequirements, Fall 2026Course outlines

CS 692 The Social Implications of Computing0.50 units

This course is designed to consider the problems encountered by individuals, organizations and society as computer technology is adopted, with a view towards assessing possible courses of action.

Calendar entryRequirements, Fall 2026Course outlines

CS 697 Graduate Research Skills Seminar

Research and life skills that can help graduate students improve their academic and interpersonal competence-research methodologies, library research skills, creative and critical thinking, time management, stress management, technical reading skills, listening skills, oral communication, writing and publishing in computer science, jobs in academica versus industry.

Calendar entryRequirements, Fall 2026Course outlines

CS 698 Introductory Research Topics0.50 units

This number is used for courses being offered on a temporary basis. Such a course may be available only once, for example to take advantage of a visiting professor's expertise, or may be offered experimentally until it is determined whether of not the course should become part of the regular course offerings. It may also be used for an individual study course carried out under the supervision of a Computer Science faculty member with the approval from the Associate Chair, Graduate Studies. This is a grade course. Preference will be given to CS graduate students. All others require approval of the Department.

Calendar entryRequirements, Fall 2026Course outlines

CS 738 Data Engineering for Data Science0.50 units

Introduction to data engineering issues in data science. Data management technology objectives. Relational database technology, relational algebra, SQL, transactions, data modelling methodology, entity-relationship models. NoSQL databases including key-value stores, document databases, wide-column stores, graph databases. Overview of big data processing platforms. Data integration including data warehousing, data lakes, ETL and ELT approaches. Data preparation for analysis, data quality, data cleaning. Introduction to several current topics in database research, such as data mining, managing data streams, distributed/parallel databases, HTAP architectures. Open to Master of Data Science and Artificial Intelligence (MDSAI) students as well as Master of Mathematics (MMath) in Data Science students.

Calendar entryRequirements, Fall 2026Course outlines

CS 740 Database Engineering0.50 units

Project-oriented course that covers the implementation of relational database management systems. Topics include database system architecture; managing primary and secondary storage; query processing; metadata and catalog management; language processing; query optimization and plan generation; concurrency; failures and recovery; extensibility; client-server interactions.

Calendar entryRequirements, Fall 2026Course outlines

CS 741 Non-Traditional Databases0.50 units

Management of non-relational databases, such as multimedia databases, text databases, temporal databases or spatial databases. Each offering will target a specific type of data. Topics include rationale for and common applications of non-relational database management; systems and standards; the abstract data model; data definition and manipulation languages; data storage and indexing; query processing and optimization; updates and transaction management.

Antirequisites
  • Not completed nor concurrently enrolled in:
    • CS748O
    • CS748S

Calendar entryRequirements, Fall 2026Course outlines

CS 742 Parallel and Distributed Database Systems0.50 units

Algorithms and architectures used in parallel database management systems, with a focus on relational systems. Topics include system architectures; parallel and distributed query processing; federated dtabase systems; distributed transactions; data replication.

Antirequisites
  • Not completed nor concurrently enrolled in:
    • CS748Q
    • CS748T

Calendar entryRequirements, Fall 2026Course outlines

CS 743 Principles of Database Management and Use0.50 units

An overview of relational databases and how they are used; exposure to relational database technology. Fundamentals of transactions. Database views. Introductions to two or three alternative data models and systems, such as those used for structured text, spatial data, multimedia data, and information retrieval. Introduction to several current topics in database research, such as warehousing, data mining, managing data streams, data cleaning, data integration, and distributed databases.

Calendar entryRequirements, Fall 2026Course outlines

CS 744 Advanced Compiler Design0.50 units

Project-oriented course that covers optimizing compilers and the implementation of advanced programming language features. Topics include intermediate representations; data-flow, dependence, and alias analysis; optimizing transforms, register allocation, instruction scheduling; memory management, garbage collection, threads, concurrency; single and multiple inheritance, generics, templates, type inference.

Calendar entryRequirements, Fall 2026Course outlines

CS 745 Computer-Aided Verification0.50 units

Application of formal methods to the verification of computer-based systems. Algebraic and automata preliminaries. Temporal logic and model checking. Decision procedures. Mechanized theorem proving. Advanced topics chosen by the instructor.

Cross-listed
ECE 725

Calendar entryRequirements, Fall 2026Course outlines

CS 746 Software Architecture0.50 units

A project-oriented course that covers the concepts in software architecture. Topics include basic concepts (components and connectors, rationale, views, architectural diagrams, team implictions, evolution, size considerations), theory underlying softeware architecture, extraction of architecture from implementation artifacts, architecture of web-based and enterprise systems, clustering of subsystems, visualization approaches to software architecture, comprehension and cognitive aspects of software architecture.

Calendar entryRequirements, Fall 2026Course outlines

CS 747 Software Verification Using Proof Assistants0.50 units

Dependent types and the Curry-Howard correspondence (proofs as programs); constructing inductive datatypes and proofs by induction; relations; equality; logical connectives and quantifiers; decision procedures; the simply-typed lambda calculus and theorems about it; intrinsically-typed representation; verification of elementary algorithms.

Antirequisites
  • Not completed nor concurrently enrolled in:

Calendar entryRequirements, Fall 2026Course outlines

CS 754 Advanced Distributed Systems0.50 units

This course provides a broad discussion of advanced topics in modern distributed systems. The course will discuss the state of the art of these systems and how and why they reached there. The course will discuss current data center hardware and software architecture, communication middleware, and how modern systems can tolerate failures, maintain data consistency, scale, leverage the new hardware capabilities, and exploit highly concurrent hardware.

Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • CS654 - Distributed Systems (0.50)
    • Not completed nor concurrently enrolled in:

Calendar entryRequirements, Fall 2026Course outlines

CS 755 System and Network Architectures and Implementation0.50 units

Distributed, multi-user applications are designed and implemented using many underlying technologies that must be coordinated to provide important features such as robustness, scalability, manageability, ubiquitous access, privacy, security, authentication, and role-based access control, to name only a few. The network supporting the application may be crucial to its successful implementation. The application logic itself is likely implemented in a number of languages and programming environments. Students will be provided with an advanced overview of current networking and distributed systems topics, and will apply it to case studies drawn form consumer internet applications, enterprise systems, and medical and healthcare systems.

Antirequisites
  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • CS654 - Distributed Systems (0.50)
      • CS656 - Computer Networks (0.50)
    • Not completed nor concurrently enrolled in:

Calendar entryRequirements, Fall 2026Course outlines

CS 758 Cryptography/Network Security0.50 units

Cryptographic protocols and their application to secure communication, especially in a network setting. Identification and entity authentication; protocols for key establishment, transport, agreement and maintenance; secret sharing, broadcast encryption, tracing schemes; certificates, public-key infrastructure, PGP.

Calendar entryRequirements, Fall 2026Course outlines

CS 761 Randomized Algorithms0.50 units

Introduction to the design and analysis of algorithms that make use of randomization. Topics include review of basic probabiloity and introduction to randomized algorithms; game theoretic techniques; uses of Markov and Chebyshev inequalities; tail inequalities; Markov chains and random walks; algebraic techniques; data structures and graph algorithms.

Calendar entryRequirements, Fall 2026Course outlines

CS 762 Graph-Theoretic Algorithms0.50 units

Further exposure to the design, analysis and application of algorithms for problems defined on graphs. Topics include planarity testing and embedding; classes of planar graphs and fast algorithms for them; trees and tree-like graphs (bounded pathwidth and treewidth); perfect graphs and intersection graphs.

Antirequisites
  • Not completed nor concurrently enrolled in:
    • CS760K

Calendar entryRequirements, Fall 2026Course outlines

CS 763 Computational Geometry0.50 units

Introduction to the design, analysis and application of algorithms for geometric problems. Topics include convex hull algorithms in two and three dimensions; Voronoi diagrams, Delaunay triangulations, and their applications; linear programming in low dimensions; line segments, planar subdivision, and polygons; range searching.

Antirequisites
  • Not completed nor concurrently enrolled in:
    • CS760M

Calendar entryRequirements, Fall 2026Course outlines

CS 764 Computational Complexity0.50 units

Further exposure to the classification of problems based on their computational requirements and to mathematical tools designed to explore the structural consequences of such classifications. Topics include relativization, alternation, provably intractable problems, feasible parallel computation; fixed-parameter tractability and the W-hierarchy; Kolmogorov complexity, including algorithmic and algorithmic prefix complexity and their applications.

Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS664 - Computational Complexity Theory (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 765 Algorithmic Number Theory0.50 units

Fundamental problems of elementary and algebraic number theory from an algorithmic and computational complexity point of view with emphasis placed on analysis of algorithms. Topics include basic arithmetic algorithms; computation over finite fields; primality testing; algorithms for integer factorization; algorithms in number fields.

Cross-listed
CO 785

Calendar entryRequirements, Fall 2026Course outlines

CS 766 Theory of Quantum Information0.50 units

Fundamentals of quantum information theory including states, measurements, operations, and their representations as matrices; measures of distance between quantum states and operations; quantum Shannon theory including von Neumann entropy, quantum noiseless coding, strong subadditivity of von Neuman entropy, Holevo's Theorem, and capabilities of quantum channels; theory of entanglement including measures of entanglement, entanglement transformation, and classifications of mixed-state entanglement; other topics in quantum information as time permits.

Cross-listed
QIC 820

Calendar entryRequirements, Fall 2026Course outlines

CS 767 Advanced Logic for Computer Science0.50 units

The course provides extended background in mathematical logic and its applications to various branches of computer science. It covers some fundamental concepts such as soundness and completeness theorems, compactness, the expressive power of a logic and the computational complexity of its basic decision problems. These concepts are being demonstrated on first order logic and modal logics. Finally the course discusses examples of applications of these concepts and tools to formal reasoning about programs and about hardware, to data bases, and to knowledge representation.

Calendar entryRequirements, Fall 2026Course outlines

CS 768 Quantum Information Processing0.50 units

Review of basics of quantum information and computational complexity; Simple quantum algorithms; Quantum Fourier transform and Shor factoring algorithm: Amplitude amplification, Grover search algorithm and its optimality; Completely positive trace-preserving maps and Kraus representation; Non-locality and communication complexity; Physical realizations of quantum computation: requirements and examples; Quantum error-correction, including CSS codes, and elements of fault-tolerant computation; Quantum cryptography; Security proofs of quantum key distribution protocols; Quantum proof systems. Familiarity with theoretical computer science or quantum mechanics will also be an asset, though most students will not be familiar with both.

Cross-listed
PMATH 871, CO 681, PHYS 767, QIC 710, AMATH 871

Calendar entryRequirements, Fall 2026Course outlines

CS 770 Numerical Analysis0.50 units

Introduction to basic algorithms and techniques for numerical computing. Error analysis, interpolation (including splines), numerical differentiation and integration, numerical linear algebra (including methods for linear systems, eigenvalue problems, and the singular value decomposition), root finding for nonlinear equations and systems, numerical ordinary differential equations, and approximation methods (including least squares, orthogonal polynomials, and Fourier transforms).

Cross-listed
CM 770, AMATH 740

Calendar entryRequirements, Fall 2026Course outlines

CS 774 Advanced Computational Finance0.50 units

Option pricing, hedging, model calibration, and portfolio optimization will be discussed. Computational methods, including PDE methods, Monte Carlo, and mathematical programming will be presented.

Calendar entryRequirements, Fall 2026Course outlines

CS 775 Parallel Algorithm in Scientific Computing0.50 units

Techniques for obtaining maximum parallelism in various numberical algorithms, especially those occurring when solving matrix problems and partial differential equations, and the subsequent mapping onto the computer. Topics include: parallel architecture and performance models; message passing/shared memory programming; matrix computations; fast Fourier transform; graph partitioning; domain decomposition methods.

Antirequisites
  • Not completed nor concurrently enrolled in:
    • CS770G

Calendar entryRequirements, Fall 2026Course outlines

CS 778 Numerical Solution of Partial Differential Equations0.50 units

Discretization methods for partial differential equations, including finite difference, finite volume and finite element methods. Application to elliptic, hyperbolic and parabolic equations. Convergence and stability issues, properties of discrete equations, and treatment of non-linearities. Stiffness matrix assembly and use of sparse matric software. Students should have completed a course in numerical computation at the undergraduate level.

Cross-listed
AMATH 741, CM 750

Calendar entryRequirements, Fall 2026Course outlines

CS 779 Splines and Their Use in Computer Graphics0.50 units

Spline theory and recent developments in techniques for representing, manipulating and rendering curves and surfaces constructed from splines in a graphic environment. Applications of interest include computer-aided design, synthetic image generation and animation.

Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS679 - Neural Networks (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 780 Advanced Symbolic Computation0.50 units

A deep investigation into fundamental problems of symbolic computation. These may include algorithms for linear, non-linear, and differential systems of symbolic equations, symbolic integration, factoring polynomials, and symbolic-numeric algorithms. Covers the basic data types and structures for algebraic objects and operations. Issues in the design of computer algebra systems.

Calendar entryRequirements, Fall 2026Course outlines

CS 781 Colour in Computer Graphics0.50 units

In computer graphics, 3D models are rendered through an ideal camera to a 2D image. The virtual camera is a powerful tool, controlling not only perspective and the optical path, but colour mapping as well. This course examines the notion of "colour" at different stages of the computer graphics pipeline, and describes techniques for modelling and managing colour through the virtual camera analogy. Topics include illumination, the virtual camera, colour spaces, gamut mapping and colour management. Implementation of the colour reproduction and gamut-mapping algorithms demands a number of numerical and statistical methods, including multidimensional interpolation and approximation, computational geometry, splines, principal components anlysis and optimization.

Calendar entryRequirements, Fall 2026Course outlines

CS 782 Pattern Discovery in Biomolecular Data0.50 units

This course examines, from an algorithmic point of view, the pattern discovery techniques that are currently used to extract the functional knowledge hidden in biomolecular data that is derived from DNA, RNA, proteins and their reaction products. Topics include: DNA sequence analysis, RNA structure prediction techniques, protein motif discovery techniques, protein structure prediction, analysis of expression data.

Calendar entryRequirements, Fall 2026Course outlines

CS 783 Computer Modeling of Biophysical Phenomena0.50 units

This course addresses the computer (in silico) simulation of biophysical processes involved in the interaction of light with organic and inorganic matter. Computer models used to simulate these processes are presented, and key stages of the simulation pipeline, such as data gathering, design constraints and evaluation methodologies, are examined in detail. This course also includes discussions of open problems and current trends in the computer simulation of biophysical processes. Application fields include, but are not limited to computer graphics, remote sensing, biology and biomedical optics.

Calendar entryRequirements, Fall 2026Course outlines

CS 784 Computational Linguistics0.50 units

Computer understanding and generation of natural (i.e., human) languages. Basic topics in natural language understanding (syntax, semantics, pragmatics, connected discourse). Selected applications (e.g., automated language generation, machine translation, natural language processing and the Web).

Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS684 - Computational Vision (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 785 Intelligent Computer Interfaces0.50 units

Intelligence in interfaces-natural language processing, plan recognition, dialogue, generation, user modeling. Interfaces to intelligent systems-intelligent agents and multi-agent systems, information processing and data mining, knowledge-based systems.

Antirequisites
  • Not completed nor concurrently enrolled in any of the following:
    • CS685 - Machine Learning: Statistical and Computational Foundations (0.50)

Calendar entryRequirements, Fall 2026Course outlines

CS 786 Probabilistic Inference and Machine Learning0.50 units

Covers the fundamental principles of probabilistic inference and computational learning systems. Topics include Bayes decision and utility theory, Monte Carlo and Markov chain Monte Carlo methods; learning with complete data; Bayesian networks, Markov random fields and factor graphs; models; learning with incomplete data; computational learning and PAC learning theory.

Antirequisites
  • Not completed nor concurrently enrolled in:
    • CS786P

Calendar entryRequirements, Fall 2026Course outlines

CS 787 Computational Vision0.50 units

Fundamental problems in computational vision where efficient and robust algorithms can be applied. Topics include image formation; linear systems and Fourier theory; image registration; feature detection; fitting models to data; optical flow; structure from motion; steriopsis; object recognition; high-level vision.

Antirequisites
  • Not completed nor concurrently enrolled in:
    • CS698Q

Calendar entryRequirements, Fall 2026Course outlines

CS 788 High-Performance Image Synthesis0.50 units

Project-oriented course that covers high-performance image synthesis using techniques for both real-time interactive systems and offline physically-based rendering. Topics include numerical techniques; visual perception and light; mathematical models of rendering; global illumination algorithms; real-time rendering.

Calendar entryRequirements, Fall 2026Course outlines

CS 789 User Interface Tools0.50 units

Graphics input devices and interaction techniques. The pragmatic factors of various physical, logical and virtual devices, human factors of interactive systems, interaction dialogue managers.

Antirequisites
  • Not completed nor concurrently enrolled in:
    • CS689

Calendar entryRequirements, Fall 2026Course outlines

CS 791 Non-Photorealistic Rendering0.50 units

Fundamentals of non-photorealistic computer depiction. Problems of style, abstraction and spatial and temporal coherence. Stroke-based rendering and simulation of traditional artistic media. Stylized processing of images and video. Real-time non-photorealistic rendering of 3D models; toon shaders and contour rendering. Geometric art and ornamental design.

Calendar entryRequirements, Fall 2026Course outlines

CS 792 Data Structures and Standards in Health Informatics0.50 units

This course focuses on health data as a key component of all health informatics systems. Topics include ontologies and other classification taxonomies found in health systems, data standards (with a focus on Canadian implementations of international standards), privacy and security of health data, client/patient assessment tools, and ethical considerations.

Cross-listed
HLTH 612

Calendar entryRequirements, Fall 2026Course outlines

CS 794 Optimization for Data Science0.50 units

Techniques for formulating data science models as optimization problems. Algorithms for solving data science problems with an emphasis on scalability, efficiency and parallelizability including gradient-descent based algorithms, derivative-free algorithms, and randomized algorithms. Theoretical analyses of algorithms and approaches for recognizing the most suitable algorithm for solving a particular problem.

Cross-listed
CO 673

Calendar entryRequirements, Fall 2026Course outlines

CS 795 Fundamentals of Optimization0.50 units

Linear optimization: Farkas' Lemma, duality, Simplex method, geometry of polyhedra. Combinatorial optimization: integrality of polyhedra, total unimodularity, flow problems, weighted bipartite matching. Continuous optimization: convex sets, Separation Theorem, convex functions, analytic characterizations of convexity, Karush-Kuhn-Tucker Theorem.

Cross-listed
CO 602, CM 740

Calendar entryRequirements, Fall 2026Course outlines

CS 798 Advanced Research Topics0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 840 Advanced Topics in Data Structures0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 842 Advanced Topics in Language Design and Implementation0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 846 Advanced Topics in Software Engineering0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 848 Advanced Topics in Data Bases0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 850 Advanced Topics in Computer Architecture0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 854 Advanced Topics in Computer Systems0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 856 Advanced Topics in Distributed Computing0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 858 Advanced Topics in Cryptography, Security and Privacy0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 860 Advanced Topics in Algorithms and Complexity0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 867 Advanced Topics in Quantum Computing0.50 units

The course description will vary according to the topic offered under this course title.

Calendar entryRequirements, Fall 2026Course outlines

CS 869 Advanced Topics in Logic Design0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 870 Advanced Topics in Scientific Computation0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 882 Advanced Topics in Bioinformatics0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 885 Advanced Topics in Computational Statistics0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 886 Advanced Topics in Artificial Intelligence0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 887 Advanced Topics in Symbolic Computation0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 888 Advanced Topics in Computer Graphics0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 889 Advanced Topics in Human-Computer Interaction0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines

CS 898 Advanced Special Topics in Computer Science0.50 units

Consult the schedule of classes for specific topics being offered.

Calendar entryRequirements, Fall 2026Course outlines