Top

2026-2027 Graduate Course Descriptions

Updated on June 5, 2026

Enrolment Notes:

  • Fall graduate courses start on Tuesday, September 8, 2026.

  • DCS Graduate Student Pre-Enrolment period: June 8 – July 5, 2026.*

  • DCS Graduate Course pre-enrolment decision available via ACORN July 29, 2026.

  • Enrolment for graduate CS students for Fall 2026 and Winter 2027 will open on August 5, 2026 at 8:00 AM ET.

  • Enrolment for non-CS graduate students for Fall 2026 session courses will open on August 25, 2026 at 10:00AM ETSGS Add/Drop Courses forms are not required for CS graduate course enrolment unless it is required by the student’s home department.

  • The last day to enrol in Fall session graduate courses is September 23, 2026. The last day to drop a graduate course in the Fall session without academic penalty is October 26, 2026.

  • The last day to enrol in Winter session graduate courses is January 18, 2027. The last day to drop a graduate course for the full year or Winter session without academic penalty is February 26, 2027.

  • Graduate students must enrol in the graduate section of cross-listed courses. The graduate section is designated by the 4-digit course code. eg: CSC2209H/CSC458H1.


Program Specific Notes:

  • MSc students must complete 4 graduate level half-courses (2.0 FCE) and cover breadth in 2 different groups. Please visit the MSc Handbook for details.

  • PhD students (Transitioned and External Masters) must complete 4 graduate level half-courses (2.0 FCE) and complete breadth in 3 different groups. Please visit the PhD Handbook for details.

  • PhD U students (Direct-Entry) must complete 8 graduate level half-courses (4.0 FCE) these must include courses from at least 3 different groups. Please visit the PhD Handbook for details.

  •  MScAC (Computer Science Concentration) students must complete six graduate level half-courses (3.0 FCE) and cover breadth in 2 course groups. No more than 1 course (0.5 FCE) from Group 2 will be counted towards program requirements. A minimum of 2 courses (1.0 FCE) must be from the Computer Science timetable (i.e. CSCXXXX course code) and courses from other departments may fulfill up to 1.0 FCE of course requirements if approved by the MScAC program. Students must complete two required courses (1.0 FCE): CSC2701H and CSC2702H.

  • MScAC (Applied Math Concentration) students must complete six graduate level half-courses (3.0 FCE). Two graduate level half-courses (1.0 FCE) should be selected from two groups in the Department of Computer Science course schedule. Two graduate level half-courses (1.0 FCE) should be selected from the Department of Mathematics. Students must complete two required courses (1.0 FCE): CSC2701H and CSC2702H.

  • MScAC (Artificial Intelligence) students must complete six graduate level half-courses (3.0 FCE). Two graduate level half-courses (1.0 FCE) should be selected from the core list of AI courses. One graduate level half-course (0.5 FCE) should be selected from Group 2. One graduate level half-course (0.5 FCE) should be chosen from Group 1, 3 or 4. Students must complete two required courses (1.0FCE): CSC2701H and CSC2702H.

  • MScAC (Artificial Intelligence in Healthcare) students must complete six graduate level half-courses (3.0 FCE). One graduate level half-course (0.5 FCE) should be selected from approved data science courses. One graduate level half-course (0.5 FCE) should be selected from Group 2. One graduate level half-course should be selected from Group 3 (0.5 FCE). One graduate level half-course (0.5 FCE) should be selected from approved courses in the Faculty of Medicine. Students must complete two required courses (1.0 FCE): CSC2701H and CSC2702H.

  • MScAC (Data Science Concentration) students must complete six graduate level half-courses (3.0 FCE). Two graduate level half-courses (1.0 FCE) should be selected from two groups in the Department of Computer Science course schedule. Two graduate level half-courses (1.0 FCE) should be selected from the Department of Statistics courses at STA2000H or higher. Students must complete two required courses (1.0FCE): CSC2701H and CSC2702H.

  • MScAC (Data Science for Biology Concentration) students must complete six  graduate level half-courses (3.0 FCE). Two graduate level half-courses (1.0 FCE) should be selected from two groups in the Department of Computer Science course schedule. Two graduate level half-courses (1.0 FCE) should be selected from graduate course schedules in CSB, EEB, MMG or Statistics. From these, a maximum of one course (0.5 FCE) may be selected from EEB, MMG and Statistics. Students must complete two required courses (1.0FCE): CSC2701H and CSC2702H.

  • MScAC (Quantum Computing Concentration) students must complete six graduate level half-courses (3.0 FCE). Two graduate level half-courses (1.0 FCE) should be selected from two groups in the Department of Computer Science course schedule. Two graduate level half-courses (1.0 FCE) should be selected from the Department of Physics course schedule. Students must complete two required courses (1.0FCE): CSC2701H and CSC2702H.

Graduate courses in the Department of Computer Science are divided into 4 groups, depending on their subject area:

Group 1: Algorithms, Complexity, Cryptography, Theory of Distributed Computing

Group 2: Artificial Intelligence, Machine Learning, Knowledge Representation, Computational Linguistics, Computational Biology and Medicine, Robotics, Vision

Group 3: Systems, Networks, Databases, Security, Programming Languages, Compilers, Software Engineering, Scientific Computing

Group 4: Human Computer Interaction, Computational Social Science, Visualization, Graphics, Sustainability Computing, Computer Science Education

The course descriptions below are available for the 2026-2027 academic year. For a full list of graduate courses at the Department of Computer Science please visit the SGS Calendar entry for Computer Science.

Non-breadth Courses: Course offerings out of the Department of Computer Science that are not eligible for fulfilling the breadth requirements. 



Group 1: Algorithms, Complexity, Cryptography, Theory of Distributed Computing


CSC2221H — Introduction to the Theory of Distributed Computing

This course studies fundamental models and problems in distributed computing with an emphasis on synchronization and fault tolerance. Algorithms and impossibility results will both be considered.


CSC2405H/CSC448H1 — Automata Theory

This course will discuss theoretical results concerning regular, deterministic, context free, context sensitive, and recursively enumerable languages via generative grammars and corresponding automata (finite state machines, push-down machines, and Turing machines). Topics include complexity bounds for recognition, language decision problems, and operations on languages.


CSC2407H — Mathematical Methods in the Theory of Computation

This course will expose students to mathematical methods that play a role in recent advances in theoretical computer science. The course will use (and develop) tools from combinatorics, probability, algebra and analysis, and will discuss applications to modern topics in the theory of computation.


CSC2410H/MAT1501H — Introduction to Graph Theory  

This course covers many of the most important aspects of graph theory, including the development and analysis of algorithms for problems which arise in applications of graph theory. Topics include minimum spanning tree, shortest path problems, network flow with applications to bipartite matching, general matching, planarity testing, graph colourability, etc. Attention will be given to the mathematical theory that supports the algorithms presented.


CSC2414H— Advanced Topics in Complexity Theory: Quantum Algorithms and Complexity Theory

An advanced course on a topic in complexity theory. Topics will change from one instance of the course to another.


CSC2414H— Advanced Topics in Complexity Theory: High-Dimensional Expanders: Tools and Applications

An advanced course on a topic in complexity theory. Topics will change from one instance of the course to another.

Expanders are sparse graphs that are highly connected. They lie at the intersection of computer science and mathematics, and have been a ubiquitous tool in algorithm design and pseudorandomness for decades.

What happens if we consider graphs that have not only vertices and edges, but also triangles, squares, and so on? High-dimensional expanders are defined over simplicial complexes, rather than graphs, and they have stronger properties of sparseness and interconnectivity, which refer not only to edges but also to triangles, squares, and more generally to k-dimensional edges ("faces"). High-dimensional expanders have been studied extensively in the last decade, and their use led to breakthroughs in theoretical computer science.

In this course we'll introduce high-dimensional expanders, learn parts of the available technical toolkit (constructions, known results, algorithms, and so on), and then see how to use these objects for applications.


CSC2419H — Topics in Cryptography: Zero-Knowledge Proofs

This course will cover recent advancements in theoretical cryptography. These include proof systems, secure computation protocols, lattice-based cryptography, quantum cryptography, and program obfuscation. Students enrolled in this course are expected to have good mathematical maturity and should have completed undergraduate courses in discrete mathematics, algorithms, and complexity theory.

How can one party convince another that a statement is true while revealing nothing beyond its truth? And how short can such a proof be? These deep questions have driven one of the most active areas of modern cryptography, with deep connections to complexity theory and more recently, in large-scale deployments in blockchains and verifiable computation. This graduate course offers a rigorous introduction to the theory of zero-knowledge proofs and succinct arguments, tracing the subject from its classical foundations in the 1980s to the breakthroughs of the past few years. This course will not assume any background in cryptography. Students are expected to be mathematically mature and should be comfortable with discrete probability, linear algebra, and basic complexity theory.


CSC2421H — Topics in Algorithms: Online and Other Myopic Algorithms

This course focuses on research topics in algorithm design and analysis. Special focus will be given to understanding various desiderata for algorithms (such as running time, approximation to an objective, and fairness) and learning advanced techniques for designing and analyzing algorithms for fundamental computational problems (or proving the impossibility of these problems).


CSC2421H —  Topics in Algorithms: Algorithmic Discrepancy Theory

This course focuses on research topics in algorithm design and analysis. Special focus will be given to understanding various desiderata for algorithms (such as running time, approximation to an objective, and fairness) and learning advanced techniques for designing and analyzing algorithms for fundamental computational problems (or proving the impossibility of these problems).

Discrepancy theory is an area of mathematics that studies how well discrete objects can approximate continuous ones. It has applications in numerical estimation of integrals, constructing coresets in data analysis, fair allocation in social choice, approximation algorithms for scheduling and bin packing, and reconstruction attacks in differential privacy, among others. Classical constructions in discrepancy theory are existential, but for applications we need efficient algorithms to construct the low discrepancy object. Research over the last 16 years has developed such algorithms for almost all central results in discrepancy theory, and sometimes the algorithmic techniques are even more powerful than the non-constructive proofs. In this course, we will survey these algorithmic developments, and some of their applications


CSC2429H — Topics of Theory of Computation: Introduction to Quantum Information Theory

An advanced course on topics in theoretical computer science. Topics will change from one instance of the course to another, and can include algorithms, advanced data structures, complexity theory, cryptography, discrete mathematics, distributed computing, graph theory, privacy, pseudorandomness, social choice, quantum computation, as well as topics from other theoretical areas. The course is suitable for students with background in theoretical computer science, or with an interest in the course and motivation to do background reading.

This course will provide an introductory treatment of quantum information theory, which studies the capability that quantum systems have to store and transmit information and connects the basic concepts of information theory to physical principles. Specifically, topics covered will include quantification of information in quantum systems through von Neumann entropies, channel and state discrimination bounds, quantum channel capacities and source coding theorems as well as entanglement theory, CHSH games and an introduction to quantum cryptography. No prerequisites are required nor any physics background, however a strong mathematical background, familiarity with proofs and linear algebra will be essential background for the course. Quantum computing will not be explicitly covered, but some connections and applications of these ideas to quantum computing will be discussed.


CSC2429H/MAT1304H — Topics of Theory of Computation: Algebraic Gems in Discrete Math and Theoretical Computer Science

An advanced course on topics in theoretical computer science. Topics will change from one instance of the course to another, and can include algorithms, advanced data structures, complexity theory, cryptography, discrete mathematics, distributed computing, graph theory, privacy, pseudorandomness, social choice, quantum computation, as well as topics from other theoretical areas. The course is suitable for students with background in theoretical computer science, or with an interest in the course and motivation to do background reading.

Over the past few decades, algebraic methods have become extremely powerful tools in several areas of combinatorics and computer science. Many recent and important advances in these fields rely on surprisingly simple properties of polynomials.

In this course, we will explore a variety of interesting and often surprising applications of linear algebra and polynomial methods to combinatorics, discrete geometry, complexity theory, cryptography, and algorithm design. All necessary algebraic tools will be developed throughout the course as needed.

The main prerequisite for the course is mathematical maturity. Familiarity with discrete mathematics, algorithms, and linear algebra will be helpful but is not strictly required. Students with an interest in discrete mathematics and/or theoretical computer science are especially encouraged to enrol.


CSC2555H —  Mathematical Foundations of Algorithmic Fairness

This course explores the emerging mathematical foundations of algorithmic fairness across various decision-making contexts. Students will examine formal definitions of individual and (sub)group fairness, their relationships to each other and to the notion of bias, algorithms that provably satisfy them, and methods to audit existing algorithms for fairness. Application domains span social choice (resource allocation, voting, matching) and machine learning (classification, clustering). Students will apply these concepts through a project focused on examining fairness in a domain of their choice.

 

Group 2: Artificial Intelligence, Machine Learning, Knowledge Representation, Computational Linguistics, Computational Biology and Medicine, Robotics, Vision


CSC2431H — Topics in Computational Biology and Medicine: Building and Deploying AI in Medicine   

This course will introduce students to the variety of ways that computational methods are utilized in modern medicine. The topics will include the use of probabilistic and deterministic techniques in the analysis of genomic data, machine learning, and NLP to analyze medical texts, HCI considerations for medical software, as well as other topics. While we will not cover any particular CS research area in depth, the students are expected to have a broad computational background to be able to read research literature in a variety of subject areas, as well as the ability to do independent exploration of topics in medicine.


CSC2501H/CSC485H1 — Computational Linguistics

Computational linguistics and the processing of language by computer. Topics include: language models; context-free grammars; chart parsing, statistical parsing; semantics and semantic interpretation; ambiguity resolution techniques; reference resolution. Emphasis on statistical learning methods for lexical, syntactic, and semantic knowledge.


CSC2502H/CSC486H1 — Knowledge Representation and Reasoning

Representing knowledge symbolically in a form suitable for automated reasoning, and associated reasoning methods. Topics from: first-order logic, entailment, the resolution method, Horn clauses, procedural representations, production systems, description logics, inheritance networks, defaults and probabilities, tractable reasoning, abductive explanation, the representation of action, planning.


CSC2506H/CSC412H1 — Probabilistic Learning and Reasoning

An introduction to probability as a means of representing and reasoning with uncertain knowledge. Qualitative and quantitative specification of probability distributions using probabilistic graphical models. Algorithms for inference and probabilistic reasoning with graphical models. Statistical approaches and algorithms for learning probability models from empirical data. Applications of these models in artificial intelligence and machine learning.


CSC2511H — Natural Language Computing

Introduction to techniques involving natural language processing and speech in applications such as information retrieval, speech recognition and synthesis, machine translation, summarization, and dialogue. N-grams, corpus analysis, neural methods, and information theory. Python and other software.


CSC2512H — Advanced Propositional Reasoning

Many problems in Computer Science can be represented as instances of propositional reasoning problems. For example, any problem in NP can be represented as a SAT problem (Boolean Satisfiability) since SAT is complete for the class NP. For many problems, their representation in SAT is very natural, and more importantly, can often be effectively solved by a general purpose SAT solver. This means that instead of developing and implementing a problem specific algorithm, we can often solve our problems by the much simpler device of encoding them into SAT and then using a SAT solver. Surprisingly, the SAT solver can often outperform problem specific algorithms.

In this course you will be introduced to the basic algorithms that are used to SAT and other types of propositional reasoning problems. In addition, we will discuss various encoding techniques for translating various problems into SAT — the encoding used can have a dramatic effect on performance. Besides problems that can be encoded into SAT we often need to deal problems that require some form of optimization, or some form of quantification (e.g., to reason about two person games). Such problems can be encoded as MAXSAT problems, or QBF problems. We will also cover algorithms for solving these kinds of propositional problems.

The aim of the course is to provide you with the background needed to exploit modern SAT–MAXSAT–QBF solvers in your own work. Knowledge of the basics of propositional logic; be familiar and comfortable with programming, data structures and algorithms.


CSC2515H — Introduction to Machine Learning

Machine learning (ML) is a set of techniques that allow computers to learn from data and experience, rather than requiring humans to specify the desired behaviour manually. This course introduces the main concepts and ideas in ML and provides an overview of many commonly used machine learning algorithms. It also serves as a foundation for more advanced ML courses.

The students will learn about ML problems (supervised, unsupervised, and reinforcement learning), models (linear and nonlinear, including neural networks), loss functions (squared error, cross entropy, hinge, exponential), bias and variance trade-off, ensemble methods (bagging and boosting), optimization techniques in ML, probabilistic viewpoint of ML, etc.

Exclusions: ECE1513H


CSC2516H — Neural Networks and Deep Learning

An introduction to neural networks and deep learning. Backpropagation and automatic differentiation. Architectures: convolutional networks and recurrent neural networks. Methods for improving optimization and generalization. Neural networks for unsupervised and reinforcement learning. 

Exclusions: MIE1517H


CSC2518H — Spoken Language Processing

This is a graduate course broadly on topics of speech processing by machine including digital signal processing, automatic speech recognition, and speech synthesis. systems. Topics include: articulatory and acoustic phonetics, prosody and information structure, introduction to digital signal processing of speech, automated speech recognition, text-to-speech synthesis, language models, dialogue modelling and dialogue systems.


CSC2529H — Computational Imaging

Introductory course covering the foundations of computational imaging. Topics include basic image processing, convolutional neural networks for image processing, digital photography, inverse problems in imaging, proximal gradient methods, introduction to wave optics, time-of-flight imaging, and end-to-end optimization of optics and imaging systems. Emphasis on applications and solving inverse problems using classic algorithms, formal optimization, and modern machine learning techniques.


CSC2530H — Computational Imaging and 3D Sensing

From the advanced depth cameras in today's smartphones to the 3D sensors of next-gen autonomous vehicles, 3D sensing has already begun to revolutionize the way we sense the world. This, however, is just the beginning: cameras that can see in pitch-black darkness and around corners, depth sensors with sub-micron accuracy or a range of several kilometres, and cameras that can see under the skin are already becoming a reality. Key to these developments is the rapid convergence of optics, photonics, sensing, and computation.


CSC2532H — Statistical Learning Theory

This course covers several topics in machine learning theory. The first half focuses on uniform convergence-based methods (e.g., covering, chaining) to establish generalization through complexity measures like Rademacher complexity and VC dimension. Second half starts with reproducing kernel Hilbert spaces and demonstrates double descent phenomenon in a kernel ridge regression setup. Finally, we discuss linearization (NTK) and feature learning in neural networks.

Prerequisites: CSC2515H


CSC2539H — Topics in Computer Vision: Physics-Informed Neural Representations for Visual Computing

An advanced seminar course on selected topics in computer vision and computational imaging. Topics will be based on a collection of papers from the current literature as class reading. 

Recommended Preparation: Graduate-level exposure to computer vision or computational imaging courses (e.g., CSC2529H, CSC2530H) is desirable but not required.

This course focuses on physics-informed neural representations, which combine data-driven learning with physics-based models to address forward and inverse problems in vision, graphics, imaging, and simulation. Topics include neural fields, operator learning, and differentiable solvers, with an emphasis on compact, continuous, and differentiable representations that incorporate priors and physical constraints. The course blends weekly paper discussions with hands-on coding labs, using GitHub as the collaborative backbone. It is delivered as an AI-in-the-loop pilot, where Large Language Models (LLMs) are integrated as structured collaborators for brainstorming and iteration, while maintaining scientific rigor through verification, reproducibility, and critical reflection.


CSC2541H — Topics in Machine Learning: Learning Theory

This course will involve discussion of recent developments in machine learning based on discussions of research papers. Topics may involve deep learning and its applications, foundation models, ethical, societal, and safety implications of ML, and questions of efficiency and scalability. 

Recommended Preparation: At least one prior course in ML is recommended, though specific prerequisites may vary from year to year

This year, the course will be on learning theory, and involve topics such as deep learning theory and optimization algorithms for machine learning. The focus will be on mathematically rigorous results, and is suitable for students with a strong math or CS theory background.


CSC2545H — Advanced Topics in Machine Learning: Geometric Deep Learning

This course will involve a discussion of several recent developments in machine learning research based on a collection of ML research papers. Topics may include basic learning algorithms, representation learning, ML theory, and application specific aspects of ML research. The course can involve case studies of contemporary ML problems and pipelines.  Prerequisites: An undergraduate course in ML (e.g., CSC413H1)

Recommended Preparation: A graduate course in ML (e.g., CSC2516H).


CSC2611H — Computational Models of Semantic Change

Words are fundamental components of human language, but their meanings tend to change over time; e.g., face ('body part' -> 'facial expression'), gay ('happy' -> 'homosexual'), mouse ('rodent' -> 'device'). Changes like these present challenges for computers to learn accurate representations of word meanings — a task that is crucial to natural language systems. This course explores data-driven computational approaches to word meaning representation and semantic change. Topics include latent models of word meaning (e.g., LSA, word2vec), corpus-based detection of semantic change, probabilistic diachronic models of word meaning, and cognitive mechanisms of word sense extension (e.g., chaining, metaphor). The course involves a strong hands-on component that focuses on large-scale text analyses and seminar-style presentations.


CSC2626H — Imitation Learning for Robotics

This course will examine some of the most important papers in imitation learning for robot control, placing more emphasis on developments in the last 10 years. Its purpose is to familiarize students with the frontiers of this research area, to help them identify open problems, and to enable them to make a novel contribution.

Prerequisites: CSC311H1 or CSC2515H or equivalent.

 

Group 3: Systems, Networks, Databases, Security, Programming Languages, Compilers, Software Engineering, Scientific Computing


CSC2103H/CSC410H1 — Software Testing and Verification

Concepts and state-of-the-art techniques in quality assessment of software engineering; quality attributes, formal specifications and their analysis; testing, verification, and validation.


CSC2104H/CSC465H1 — Formal Methods of Program Design

Using mathematics to write error-free programs. Proving each refinement; identifying errors as they are made. Program development to meet specifications; modifications that preserve correctness. Useful for all programming; essential for programs that lives depend on. Basic logic, formal specifications, refinement. Conditional, sequential, parallel, interaction, probabilistic programming, and functional programming.


CSC2108H — Automated Reasoning with Machine Learning

This course introduces the cutting-edge research on combining reasoning with machine learning. We will first study the logical foundations and algorithms behind many reasoning engines, and then learn how machine learning can be used to improve complicated reasoning systems. This course will cover the following topics: Boolean Satisfiability (SAT), Satisfiability modulo Theories (SMT), program synthesis, statistical approaches for software debugging, inductive logic programming, and neuro-symbolic systems. Extensive paper readings, in-class discussions, and project presentations are expected.


CSC2125H — Topics in Software Engineering: Software Engineering for Machine Learning

This course will discuss software engineering techniques and challenges in building modern software systems, such as machine learning systems, blockchains, and other safety-critical systems requiring high-assurance. Students are expected to do significant seminar paper reading, literature review, and presentations.


CSC2126H — Topics in Programming Languages: Advanced Functional Programming

We will study programming languages viewed through the lens of their type structures, semantics, and reasoning principles. The course will cover key concepts especially in language design, functional programming, and type systems.


CSC2208H/CSC469H1 — Advanced Operating Systems

An in-depth exploration of the major components of operating systems with an emphasis on the techniques, algorithms, and structures used to implement these components in modern systems. Project-based study of process management, scheduling, memory management, file systems, and networking is used to build insight into the intricacies of a large concurrent system.


CSC2209H/CSC458H1 — Computer Networking Systems

Computer networks with an emphasis on network programming and applications. An overview of networking basics: layering, naming, and addressing, packet switching fundamentals, socket programming, protocols, congestion control, routing, network security, wireless networks, multimedia, web 2.0, software-defined networking, and online social networks.


CSC2222H — Applications of Parallel and Distributed Computing

This course provides advanced discussions on parallel, distributed, and cloud computing and its applications. It will discuss sources of parallelism and locality in scientific applications, common parallel algorithms used in large-scale simulations, and fundamental performance bottlenecks in scientific codes. The students will learn how to work across the stack of parallel algorithm design, mathematical reformulation, and architecture-specific performance tuning to write scalable and fast code. It is intended to be useful for students actively working with applications that benefit from parallel computing.


CSC2229H — Topics in Computer Networks: Privacy-Enhancing Technologies

Exploration of various research topics in computer networks. Topics may include computer networks for machine learning, hyperscale data center networking, software-defined networking, multiple access communication networks, and emerging areas of networks research.

Recommended Preparation: A previous course on computer networks (CSC2209H or equivalent)

Personal information is central to our identity, and protecting it is crucial to preserving our fundamental right to privacy. Yet, rapid advances in technology often challenge our ability to safeguard it. In this course, we will explore how privacy can be formally defined and protected. We will examine how techniques from cryptography and statistics can be applied to build systems that enable data-driven applications while protecting individual privacy.

The first part of the course introduces key cryptographic concepts, including secure multiparty computation (MPC), fully homomorphic encryption (FHE), zero-knowledge proofs (ZKPs), private information retrieval, oblivious RAM, and anonymous communication protocols. The second part covers statistical approaches to privacy, with a particular focus on differential privacy. Toward the end of the course, we will discuss real-world applications of these privacy-enhancing technologies.


CSC2229H — Topics in Computer Networks: Computer Networks and Machine Learning

Exploration of various research topics in computer networks. Topics may include computer networks for machine learning, hyperscale data center networking, software-defined networking, multiple access communication networks, and emerging areas of networks research.

Recommended Preparation: A previous course on computer networks (CSC2209H or equivalent)

This MSc/PhD-level course delves into the core challenges of interconnection networks, emphasizing the use of machine learning to address these issues. The rapid growth of computing demands, driven by machine learning applications, has introduced significant challenges in areas such as bandwidth, latency, and packet loss. Meeting these demands requires innovative techniques and a fresh approach to traditional networking solutions across various layers, including the link, transport, and application layers.


CSC2234H/CSC443H1 — Database System Technology

This course covers the algorithms and data structures that form the bedrock of modern data management systems. We will first discuss modern hardware and how it motivates the design of database systems. We will then delve deeply into buffer pool management, indexing (B-trees, LSM-trees & circular logs), counting sketches, membership filters, query operators, query optimization, concurrency control, transaction management, recovery algorithms, data layouts (row-stores vs. column-stores). Students will implement a mini-database system from the ground up.


CSC2235H — Cloud-Native Data Management Systems

A big move in the development of database management systems in recent years is the migration to the cloud, where users enjoy a variety of benefits, e.g., high availability, scalability, and elasticity, with database as a service. Meanwhile, database system architectures must be adapted to evolving trends in the cloud environment.

In this seminar course, we will discuss state-of-the-art cloud database systems recently published in top-tier database venues. Specific topics covered will be serverless, resource (storage and memory) disaggregation, new interconnect technologies (e.g., RDMA and CXL), multi-tenancy, and others. There will also be a final project where groups of students research a specific aspect of cloud databases.

Recommended Preparation: Introduction to databases


CSC2236H — Data Structures in the Wild

Data Structures in the Wild is a deep dive into the kinds of data structures you won’t find in a typical graduate course. These are the structures engineered for the real world—built to work well with modern CPUs, memory hierarchies, and diverse types of data. We’ll study how they achieve the right trade-offs between space and speed, and what it takes to make a data structure fast not just in theory, but in practice.


CSC2237H — Secure Computer Hardware Systems

This graduate-level course explores the security of modern computer systems from a micro-architectural perspective. Recent years have revealed critical hardware vulnerabilities, including cache side-channel attacks, transient-execution attacks (e.g., Spectre and Meltdown), and DRAM Rowhammer attacks, that undermine traditional software-based security guarantees. These vulnerabilities enable attackers to extract sensitive information, corrupt data, or escalate privileges, posing serious risks to cloud computing, confidential computing, and critical infrastructure.

The course examines both offensive and defensive aspects of micro-architectural security. Students will study the root causes of hardware vulnerabilities, analyze real-world attacks, and develop proof-of-concept exploits on contemporary systems. In parallel, the course covers architectural and system-level defenses, including cache isolation, secure speculation mitigations, and hardware-based trusted execution environments (TEEs).

The course is primarily lecture-driven, with lectures based on seminal and recent papers from top-tier computer security, and architecture conferences. Through programming assignments and a mini-research project, students gain hands-on experience in secure computer architecture and develop the skills needed to evaluate, design, and implement hardware-based security mechanisms.


CSC2305H/CSC466H1 — Numerical Methods for Optimization Problems

Numerical methods for unconstrained optimization problems, in particular line search methods and trust region methods. Topics include steepest descent, Newton’s method, quasi-Newton methods, conjugate gradient methods and techniques for large problems. This course will normally be offered every other year.


CSC2321H — Matrix Calculations

Review the basic concepts in the numerical solution of linear systems, introduce state-of-the-art developments in numerical linear algebra/PDEs, develop and study efficient linear solvers, implement the above solvers as software, use existing software (routines and higher level environments), study the performance of methods and software. Topics among basic iterative methods, acceleration, perconditioning, multigrid, domain decomposition, fast Fourier transform linear solvers.

Prerequisites: Calculus, numerical linear algebra, interpolation, some knowledge of PDEs, proficiency in a programming language, preferably MATLAB or FORTRAN


CSC2508H — Advanced Data Systems

The course examines how fundamental building blocks of data systems such as indexing, query processing, execution and optimization are influenced by Machine Learning. We will cover the fundamentals of instance optimization both for relational and information retrieval systems: these include workload adaptive indexing, neural retrieval and ranking, workload-based optimization strategies for query execution as well as instance-optimized performance prediction and infrastructure sizing.

 

Group 4: Human Computer Interaction, Computational Social Science, Visualization, Graphics, Sustainability Computing, Computer Science Education


CSC2514H/CSC428H1 — Human-Computer Interaction

Understanding human behaviour as it applies to user interfaces: work activity analysis, observational techniques, questionnaire administration, and unobtrusive measures. Operating parameters of the human cognitive system, task analysis and cognitive modelling techniques, and their application to designing interfaces. Interface representations and prototyping tools. Cognitive walkthroughs, usability studies, and verbal protocol analysis. Case studies of specific user interfaces.


CSC2524H — Topics in Interactive Computing: Human-Centered Artificial Intelligence

This course will cover interactive computing and technologies from the perspective of human-computer interaction. It will be offered in a seminar-style format involving readings of academic papers, student-led presentations, and a course project.

Recommended Preparation: CSC428H1 or CSC2514H or equivalent.

In this course we will examine Human Computer Interaction research on the use of AI and Large Language Models (LLMs) for the development of intelligent user interfaces. We will look at how LLMs can enhance interactive systems across usage domains such as Education, Human-Robot Interaction, and Creativity Support Tools. This course is targeting students wishing to design new interactive systems that leverage AI technologies, or students interested in conducting studies to explore how LLMs will impact the ways we interact with technology. Students will conduct weekly readings, with student led presentations and discussions each week. A final project will make up most of the grade, while student presentation skills and participation in class and in readings will also be emphasized.


CSC2526H — HCI: Topics in Ubiquitous Computing: Context-Aware Computing

This course will cover how computing technology is moving beyond desktop computers and becoming increasingly integrated into everyday environments. It will be offered in a seminar-style format involving readings of academic papers, student-led presentations, and a course project.

Recommended Preparation: Students will have ideally taken a human-computer interaction course (e.g., CSC428H1) and have some exposure to user study design.


CSC2527H/CSC454H1 — The Business of Software

The software and internet industries; principles of operation for successful software enterprises; innovation and entrepreneurship; software business definition and planning; business models, market and product planning; product development, marketing, sales, and support; financial management and financing of high-technology ventures; management, leadership, and partnerships. Students will all write business plans in teams.


CSC2537H/STA2555H — Information Visualization

This course will study techniques and algorithms for creating effective visualizations based on principles from graphic design, visual art, perceptual psychology, and cognitive science. The course is targeted both towards students interested in using visualization in their own work, as well as students interested in learning about cutting edge research in the field. Students will conduct reading and critical analysis of scientific research papers, that will be discussed in class. A final project will make up most of the grade, while student presentation and critical analysis skills will also be emphasized.


CSC2537H — Information Visualization

This course will study techniques and algorithms for creating effective visualizations based on principles from graphic design, visual art, perceptual psychology, and cognitive science. The course is targeted both towards students interested in using visualization in their own work, as well as students interested in learning about cutting edge research in the field. Students will conduct reading and critical analysis of scientific research papers, that will be discussed in class. A final project will make up most of the grade, while student presentation and critical analysis skills will also be emphasized.


CSC2558H — Topics in Multidisciplinary HCI: Technology Abuse in Interpersonal Contexts

This course will cover qualitative and quantitative methods from human-computer interaction and how they are applied in research areas like healthcare and education. Examples of methods include participatory design, interviews, and field deployments. It will be offered in a seminar-style format involving readings of academic papers, student-led presentations, and a course project.

Recommended Preparation: Students will have ideally taken a human-computer interaction course (e.g., CSC428H1) and have some exposure to user study design.

Safe access to digital technologies increasingly plays an important role in personal wellbeing. As such, it has become an increasingly powerful lever for coercive control tactics in abuse settings such as intimate partner violence, domestic violence, human trafficking, and more. This course will explore technology abuse in interpersonal contexts, introducing students to abuse concepts such as coercive control, trauma, and vicarious trauma; the types of tech abuse seen in practice; situating tech abuse within abuse contexts more broadly; the role of dual-use technologies and products explicitly built for abuse; trauma-informed computing and abuse-resistant technology design; the design and delivery of survivor-support interventions in the form resources and tech abuse clinics.


CSC2600H — Topics in Computer Science: Algorithmic Social Systems

This is a topics course in computer science. The topic will change from year to year and may span a variety of different topic in computer science.

How do individuals, AI agents, and algorithms coordinate to achieve shared goals? This course develops a formal understanding of algorithmic social systems such as social groups, AI systems, social media communities, and distributed compute systems,  drawing on tools from computer science and sociology. The course develops a sociology for AI systems. Topics include models of social systems, norm emergence in human and AI communities, gossip algorithms, and social network formation and structure. Methods include optimization theory, game theory, and distributed algorithms.


CSC2631H — Mobile and Digital Health

This course will examine the growing prominence of mobile health over the past twenty years. After briefly discussing various definitions of mobile health, we will focus our attention on how people are using the sensors embedded in ubiquitous and novel devices to capture indicators of physical and mental health. More specifically, we will study how sensors can be used to measure physiological signals, psychomotor function, and disease-specific symptoms.

Non-Breadth Courses


CSC1500H — Fundamentals of Teaching Computer Science in Higher Education

In this course, students will learn and apply evidence-based practices in university teaching of computer science. Topics include principles of instructional design, active learning techniques, and assessment of student learning. While based on foundations in the literature, this is a practical course where students will design course materials, give a teaching demonstration, and reflect on the teaching of others. Students will develop a practice of reflecting on their own teaching, and learn to create a compelling, personal Statement of Teaching Philosophy.

Suitable for computer science graduate students interested in an academic career that includes teaching, and who would like to both be effective and enjoy their teaching.


CSC2600H/CSC491H1 — Topics in Computer Science: Capstone Project for the Business of Software

This is a topics course in computer science. The topic will change from year to year and may span a variety of different topic in computer science.

This course is designed and delivered by industry experts from the Software/Tech fields. Students will work with teammates from CSC454H1 to develop a marketable startup on a selected theme. The class will be small and highly interactive. You will work to develop working software industry best practices. You are expected to have experience writing software and be able to learn on the go


Course information listed below is for the 2025-2026 academic year.


2025-2026 Graduate Course Descriptions

Updated on May 22, 2026

Enrolment Notes:

Enrolment for graduate CS students will open on July 28, 2025.

  • Enrolment for non-CS graduate students for Fall 2025 session courses will open on August 21, 2025 at 10:00 AM ET and September 30, 2025 for Winter 2026 session courses; SGS Add/Drop Courses forms are not required for CS graduate course enrolment unless it is required by the student’s home department.

  • Fall graduate courses start on Tuesday, September 2, 2025

  • Winter graduate courses start on Monday, January 5, 2026

  • Graduate students must enroll in the Graduate Section of cross-listed courses. The Graduate Section is designated by the 4-digit course code. eg: CSC2209H/CSC458H1.


Program Specific Notes:

  • MSc students must complete 4 graduate level half-courses (2.0 FCE) and cover breadth in 2 different groups. Please visit the MSc Handbook for details.

  • PhD students (Transitioned and External Masters) must complete 4 graduate level half-courses (2.0 FCE) and complete breadth in 3 different groups. Please visit the PhD Handbook for details.

  • PhD U students (Direct-Entry) must complete 8 graduate level half-courses (4.0 FCE) these must include courses from at least 3 different groups. Please visit the PhD Handbook for details.

  • MScAC (Computer Science Concentration) students must complete six graduate level half-courses (3.0 FCE) and cover breadth in 2 course groups. No more than 1 course (0.5 FCE) from Group 2 will be counted towards program requirements. A minimum of 2 courses (1.0 FCE) must be from the Computer Science timetable (i.e. CSCXXXX course code) and courses from other departments may fulfill up to 1.0 FCE of course requirements if approved by the MScAC program. Students must complete two required courses (1.0 FCE): CSC2701H and CSC2702H.

  • MScAC (Applied Math Concentration) students must complete six graduate level half-courses (3.0 FCE). Two graduate level half-courses (1.0 FCE) should be selected from two groups in the Department of Computer Science course schedule. Two graduate level half-courses (1.0 FCE) should be selected from the Department of Mathematics. Students must complete two required courses (1.0 FCE): CSC2701H and CSC2702H.

  • MScAC (Artificial Intelligence) students must complete six graduate level half-courses (3.0 FCE). Two graduate level half-courses (1.0 FCE) should be selected from the core list of AI courses. One graduate level half-course (0.5 FCE) should be selected from Group 2. One graduate level half-course (0.5 FCE) should be chosen from Group 1, 3 or 4. Students must complete two required courses (1.0FCE): CSC2701H and CSC2702H.

  • MScAC (Artificial Intelligence in Healthcare) students must complete six graduate level half-courses (3.0 FCE). One graduate level half-course (0.5 FCE) should be selected from approved data science courses. One graduate level half-course (0.5 FCE) should be selected from Group 2. One graduate level half-course should be selected from Group 3 (0.5 FCE). One graduate level half-course (0.5 FCE) should be selected from approved courses in the Faculty of Medicine. Students must complete two required courses (1.0 FCE): CSC2701H and CSC2702H.

  • MScAC (Data Science Concentration) students must complete six graduate level half-courses (3.0 FCE). Two graduate level half-courses (1.0 FCE) should be selected from two groups in the Department of Computer Science course schedule. Two graduate level half-courses (1.0 FCE) should be selected from the Department of Statistics courses at STA2000H or higher. Students must complete two required courses (1.0FCE): CSC2701H and CSC2702H.

  • MScAC (Data Science for Biology Concentration) students must complete six  graduate level half-courses (3.0 FCE). Two graduate level half-courses (1.0 FCE) should be selected from two groups in the Department of Computer Science course schedule. Two graduate level half-courses (1.0 FCE) should be selected from graduate course schedules in CSB, EEB, MMG or Statistics. From these, a maximum of one course (0.5 FCE) may be selected from EEB, MMG and Statistics. Students must complete two required courses (1.0FCE): CSC2701H and CSC2702H.

  • MScAC (Quantum Computing Concentration) students must complete six graduate level half-courses (3.0 FCE). Two graduate level half-courses (1.0 FCE) should be selected from two groups in the Department of Computer Science course schedule. Two graduate level half-courses (1.0 FCE) should be selected from the Department of Physics course schedule. Students must complete two required courses (1.0FCE): CSC2701H and CSC2702H.

Graduate courses in the Department of Computer Science are divided into 4 groups, depending on their subject area:

Group 1: Algorithms, Complexity, Cryptography, Theory of Distributed Computing

Group 2: Artificial Intelligence, Machine Learning, Knowledge Representation, Computational Linguistics, Computational Biology and Medicine, Robotics, Vision

Group 3: Systems, Networks, Databases, Security, Programming Languages, Compilers, Software Engineering, Scientific Computing

Group 4: Human Computer Interaction, Computational Social Science, Visualization, Graphics, Sustainability Computing, Computer Science Education

The course descriptions below are available for the 2025-2026 academic year. For a full list of graduate courses at the Department of Computer Science please visit the SGS Calendar entry for Computer Science.

Non-breadth Courses: Course offerings out of the Department of Computer Science that are not eligible for fulfilling the breadth requirements. 


Group 1: Algorithms, Complexity, Cryptography, Theory of Distributed Computing


CSC2555H —  Mathematical Foundations of Algorithmic Fairness (Summer 2026)

This course explores the emerging mathematical foundations of algorithmic fairness across various decision-making contexts. Students will examine formal definitions of individual and (sub)group fairness, their relationships to each other and to the notion of bias, algorithms that provably satisfy them, and methods to audit existing algorithms for fairness. Application domains span social choice (resource allocation, voting, matching) and machine learning (classification, clustering). Students will apply these concepts through a project focused on examining fairness in a domain of their choice.