Search Courses

CSC2231H - Special Topics in Computer Systems

This course provides a specialized focus on a particular research area in computer systems. Topic areas will vary from year to year and may include secure systems and hardware, systems for visual computing, massively parallel systems, or other emerging areas.

Credit Value (FCE): 0.50
Recommended Preparation: Familiarity with operating systems and computer architecture
Campus(es): St. George
Delivery Mode: Online, In Class

CSC2233H - Topics in Storage Systems

Over 90% of all new information produced in the world is being stored on digital storage systems and storage systems are the backbone of many enterprises. In particular in today's data-driven world, the success of many enterprises depends on their ability to efficiently and reliably storage large amounts of data. Storage systems often dominate overall systems performance and the exponentially growing need for data capacity and access speed makes this an important and exciting area of research. In this class you will learn about the foundations as well as the most recent advances in storage systems. You will also perform a cutting-edge mini-research project, where you design, build, and/or evaluate a system.

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

CSC2234H - 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, and 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.

Credit Value (FCE): 0.50
Recommended Preparation: CSC343H1; CSC369H1; CSC373H1 or CSC375H1; or equivalent
Campus(es): St. George
Delivery Mode: In Class

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.

Credit Value (FCE): 0.50
Recommended Preparation: Introduction to databases
Campus(es): St. George
Delivery Mode: In Class

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.

Credit Value (FCE): 0.50
Recommended Preparation: Students should have completed a course equivalent to CSC263H1 (Data Structures and Analysis), covering algorithm analysis (worst-case, average-case, amortized, expected), core data structures (e.g., graphs, dictionaries, priority queues) and their implementations (e.g., balanced trees, hashing, heaps). CSC373H1 (Algorithm Design) is strongly recommended for analytical maturity. CSC443H1 (Database System Technology) is also recommended, particularly for familiarity with storage systems and structures such as Bloom filters, LSM-trees, and B-trees.
Campus(es): St. George
Delivery Mode: In Class

CSC2237H - Secure Computer Hardware and 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.

Recommended Preparation: Strong background in computer organization (CSC258H1 or equivalent), operating systems (CSC369H1 or equivalent), and computer architecture (CSC368H1 or equivalent).
Campus(es): St. George
Delivery Mode: In Class

CSC2240H - Graphs, Matrices and Optimization

This course will focus on tools and techniques in modern algorithm design (mostly from continuous optimization and analysis), and their applications to the design of fast algorithms for fundamental problems in theoretical computer science, and numerical linear algebra. Topics covered will include basic matrices associated with graphs, connections between eigenvalues of these matrices and combinatorial structure of the graph, studying graphs as resistive networks, connections between random walks on graphs and resistive networks, and fast algorithms for solving resistive networks and Laplacian systems.

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

CSC2302H - Numerical Solutions of Initial Value Problems for Ordinary Differential Equations

Issues involved in the numerical solution of initial value problems in ODEs. Error propagation and the design of robust numerical methods. Methods designed for stiff and non-stiff problems will be reviewed and the significant difficulties arising in each area identified. State-of-the-art software will be surveyed and critically evaluated. Difficulties associated with implicit equations, algebraic constraints and delay terms will also be considered.

Credit Value (FCE): 0.50
Delivery Mode: In Class

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

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

CSC2306H - High Performance Scientific Computing

Computationally intensive applications in science and engineering are implemented on the fastest computers available, today composed of many processors operating in parallel. Parallel computer architectures; implementation of numerical algorithms on parallel architectures; performance evaluation. Topics from: matrix-vector product, solution of linear systems, sparse matrices, iterative methods, domain decomposition, Fourier solvers. For students in computer science, applied mathematics, science, engineering. Ordinarily offered in years alternating with CSC2310H Computational Methods for Partial Differential Equations.

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

CSC2310H - Computational Methods for Partial Differential Equations

Finite Difference and Finite Element methods for boundary value problems including 2-point boundary value problems and 2-dimensional problems. Convergence of methods. Efficiency of the solution of linear systems. Finite difference methods for initial value problems. Consistency, stability, and convergence. Method of lines. Special topics of interest among domain decomposition, multigrid, FFT solvers.

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

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.

Credit Value (FCE): 0.50
Prerequisites: Calculus, numerical linear algebra, interpolation, some knowledge of PDEs, proficiency in a programming language, preferably MATLAB or FORTRAN
Campus(es): St. George
Delivery Mode: In Class

CSC2332H - Introduction to Quantum Algorithms

This course will provide a rigorous introduction to quantum computing for computer science students. Topics covered will include: the quantum circuit model; quantum query complexity; basic quantum algorithms including Grover's algorithm and amplitude amplification, the quantum Fourier transform and applications, phase estimation, Deutsch Josza, the quantum linear systems algorithm, quantum error correction, and quantum simulation. Modern approaches to quantum algorithm design will also be covered including linear combinations of unitaries, block encodings, and quantum singular value transformations.

Credit Value (FCE): 0.50
Prerequisites: Good knowledge of linear algebra and elementary real and complex analysis
Campus(es): St. George
Delivery Mode: In Class

CSC2401H - Introduction to Computational Complexity

This is an introductory-level course in computational complexity theory, which is one of the core areas in theoretical computer science. Motivated by questions such as the P vs NP problem, the goal of complexity theory is to explore the limits of efficient computation: Which problems are inherently hard to solve, and what makes them so? How do resource constraints (such as limited time and memory) inhibit algorithms, and why? And which mathematical and algorithmic tools can we use to study these questions? The purpose of the course is to introduce graduate students to the fundamental notions and results in the area, as well as expose students to active lines of research.

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

CSC2404H - Computability and Logic

Computable functions, Church's thesis, unsolvable problems, recursively enumerable sets. Predicate calculus, including the completeness, compactness, and Lowenheim-Skolem theorems. Formal theories and the Gödel Incompleteness Theorem.

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

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

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

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.


Credit Value (FCE): 0.50
Exclusions: MAT1307H
Recommended Preparation: Exposure to basic undergraduate math and theory CS material recommended but not required.
Jointly Offered with Course(s): 1307HMAT
Campus(es): St. George
Delivery Mode: In Class

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

Credit Value (FCE): 0.50
Jointly Offered with Course(s): MAT1501H
Delivery Mode: In Class

CSC2412H - Algorithms for Private Data Analysis

In this course we will study individual privacy in data analysis from a rigorous theoretical perspective. We will focus on Differential Privacy: an approach to achieving strong provable privacy protection guarantees in the analysis of sensitive data. Informally, a data analysis algorithm is differentially private if changing the data of a single individual changes the output distribution of the algorithm only slightly. This guarantee ensures that the privacy risk to any individual increases only slightly by participating in data collection. Our focus in this course will be on the design of efficient differentially private algorithms. We will also learn about connections between differential privacy and other fields, such as statistics, machine learning, and geometry. While we focus on the algorithms, there will be proofs: it is important to prove formally that an algorithm provides privacy. Most proofs are simple, but the course does require mathematical maturity and a background in probability theory, and in the design and analysis of algorithms.

Credit Value (FCE): 0.50
Prerequisites: CSC373H1 or equivalent, or permission of the instructor.
Campus(es): St. George
Delivery Mode: In Class

CSC2414H - Advanced Topics in Complexity Theory

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

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

CSC2415H - Advanced Topics in the Theory of Distributed Computing

An advanced course on topics in the theory of distributed computing. Topics may include impossibility results or papers from the current literature. Students with a good background in complexity theory are welcome to take the course, provided they are willing to do some background reading.

Credit Value (FCE): 0.50
Recommended Preparation: A course in theory of distributed computing, such as CSC2221H
Campus(es): St. George
Delivery Mode: In Class

CSC2419H - Topics in Cryptography

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.

Credit Value (FCE): 0.50
Delivery Mode: In Class

CSC2420H - Algorithm Design, Analysis and Theory

This course serves as an introduction to algorithm design at the graduate level. It is a foundational course, appropriate for students in computer science, computer engineering, and mathematics, but is also of interest to students looking for research topics in the theory of algorithms. We cover both topics normally discussed in an undergraduate algorithms courses, as well as some more advanced topics. Some sample topics are: standard algorithmic paradigms such as greedy, local search and dynamic programming algorithms, and precise models for them; combinatorial and convex optimization, including the theory of linear programming, online optimization, and stochastic optimization; streaming algorithms; randomized algorithms; primal-dual algorithms; approximation algorithms; approximate near neighbour search; and mechanism design.

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

CSC2421H - Topics in 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).

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

CSC2426H - Fundamentals of Cryptography

Cryptography is a branch of computer science that aims at building secure systems that protect sensitive information against adversarial attacks. It allows us to construct systems that enable private communication over public channels, systems that prevent tampering of data during transmission, systems that enable us to securely outsource data and computation to external entities like cloud service providers, and many more. These systems are crucial in ensuring the security of communication and computation happening over the internet. In this course, we will study the theoretical foundations of cryptography and the theory behind constructing such secure systems. Specifically, we will first study how to rigorously define the security properties that these systems need to satisfy. We will then look at how to construct these systems and formally prove that the constructed systems satisfy these security properties. Students taking this course are expected to have completed undergraduate-level courses on discrete mathematics, algorithms, and complexity theory. As this course will be theoretical, students are expected to have good mathematical maturity and should be comfortable with writing proofs.

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

CSC2427H - Topics in Graph Theory

An advanced course on a topic in graph theory. Topics will change from one instance of the course to another. Some examples of past topics are: random graphs; graph colouring; the probabilistic method.

Credit Value (FCE): 0.50
Delivery Mode: In Class

CSC2429H - Topics in the Theory of Computation

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.

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

CSC2431H - Topics in Computational Biology and 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.

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class

CSC2451H - Quantum Computing, Foundations to Frontier

This course will give a broad overview of the field of quantum computing. We will start with a crash course in the fundamentals of quantum computing (qubits, quantum circuits, basic quantum algorithms such as Grover's search algorithm and Shor's factoring algorithm). Armed with the basics, we will then explore topics at the frontier of quantum computing: quantum complexity theory, device-independent quantum cryptography, quantum machine learning algorithms, and quantum supremacy. Students will make project presentations at the end of the course. This is a theoretical course that requires mathematical maturity and a strong background in linear algebra and probability theory. Familiarity with analysis of algorithms and complexity theory is a major plus but not required. No physics background will be assumed.

Credit Value (FCE): 0.50
Exclusions: MAT1751H
Campus(es): St. George
Delivery Mode: In Class

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

Credit Value (FCE): 0.50
Campus(es): St. George
Delivery Mode: In Class