2025 Summer Graduate Course Description
Enrolment Notes:
Summer graduate courses start on May 5.
Enrolment for graduate CS students will open on March 17, 2025.
Enrolment for non-CS graduate students will open on April 17, 2025; SGS 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 summer session graduate courses is May 12.
Final date to drop May-to-August session Y section courses without academic penalty is June 23.
Group 4: Human Computer Interaction, Computational Social Science, Visualization, Graphics, Sustainability Computing, Computer Science Education
CSC2558H — Topics in Multidisciplinary HCI: Qualitative Data Analysis and Writing for HCI
This summer seminar is designed for graduate students in Human-Computer Interaction (HCI) who aim to enhance their qualitative research and academic writing skills. Qualitative research methods are common, though often poorly understood, in HCI. Over the term, students will gain an understanding of qualitative data analysis methods, learn to craft polished research papers, and work towards preparing their own manuscripts for publication.
This is a project-based course, with students expected to bring a qualitative dataset of their own to analyze and work with during class, with the goal of producing a paper that is submittable to the September deadline of the ACM SIGCHI Conference on Human-Computer Interaction (CHI). For those without existing data, guidance and resources will be provided to help identify suitable datasets.
Early sessions will cover the philosophical foundations of qualitative research, data collection strategies, and methodological approaches such as ethnography, grounded theory, and thematic analysis. As the course progresses, students will focus on coding data, developing themes, and drafting each section of a research paper. Emphasis will also be placed on developing effective writing habits, self-editing techniques, as well as providing and responding to peer review. The course culminates in in-class presentations of student papers and the submission of a polished manuscript.
2025-2026 Graduate Course Descriptions
Enrolment Notes:
Enrolment for graduate CS students will open on July 28, 2025 at 10:00AM ET.
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
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.
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.
Prerequisites: Good knowledge of linear algebra and elementary real and complex analysis
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: Algorithmic Approaches to Lower Bounds
An advanced course on a topic in complexity theory. Topics will change from one instance of the course to another.
How can we prove lower bounds? That is, how can we prove that there are no efficient algorithms solving certain hard problems? This course will focus on an approach that has been fruitful in the last decade, which is proving lower bounds by designing algorithms: To prove that problem X cannot be solved by any efficient algorithm, we design an efficient algorithm that solves problem Y. We will learn which problems we need to algorithmically solve in order to prove lower bounds, study the proofs of why designing algorithms for these problems implies lower bounds, and see some recent algorithms and resulting lower bounds from the last few years.
CSC2419H — Topics in Cryptography: Lattice-based 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.
Lattices have revolutionized cryptography by enabling constructions of advanced cryptographic primitives that were unimaginable a few years back. In this course, we will study the (i) mathematical properties of lattices, (ii) discuss several lattice problems which we believe are hard (even against quantum computers), and (iii) use these hard problems to construct cryptographic applications. The major focus of this course would be on part (iii), with a particular emphasis on recent results. This course does not require any prior knowledge of cryptography and the only prerequisite is basic linear algebra and probability.
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).
While the title may seem very specialized, the course should be accessible to any CS student and also serves as a partial introduction to many of the topics in CSC2420. The course will be based on a text (co-authored with Denis Pankratov) that should be completed by the fall term 2025. It is a “self-contained” text for anyone who has the equivalent of our CSC373 undergraduate text.
The adjective “myopic” implies algorithms where we do not see all the input items in advance; that is, after processing the first $i$ items we have limited knowledge about item $i+1$ and other future items. We will take a broad view of this term and (for example) will include (for example) algorithms that have some limited ability to change past decisions and we will consider both worst case and stochastic inputs.
The topic of online myopic algorithms is of growing interest due to the increasing number of applications. We will consider various applications such as auctions, fair division, scheduling, learning theory, online advertising.
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.eory, and in the design and analysis of algorithms.
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. Recommended preparation: a course in theory of distributed computing, such as CSC2221. Students with a good background in complexity theory are welcome to take the course, provided they are willing to do some background reading.
The goal of this course will be to understand to power and limitations of algebraic computation. Arithmetic circuits are a very natural model of computation for many natural algebraic algorithms such as matrix multiplication, computing fast fourier transforms, computing the determinant etc. The problem of proving lower bounds for arithmetic circuits is one of the most interesting and challenging problems in complexity theory. This course will discuss lower bounds for arithmetic circuits, both recent and classical. It will also discuss the very related problems of derandomizing polynomial identity testing, polynomial reconstruction and polynomial factoring. The course will assume strong mathematical maturity, as well as some basic background in complexity theory and algorithms.
CSC2429H — Topics in the Theory of Computation: Algebraic Complexity
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.
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
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.
CSC2503H — Foundations of Computer Vision
Introduction to vision, visual processes, and image understanding. Camera system geometry and image acquisition. Scene lighting and reflectance models. Image and object classification. Generative models. 3D vision. Temporal sequence/video analysis. Combining vision with other modalities.
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
CSC2517H — Discrete Mathematical Models of Sentence Structure
An introduction to the principal mathematical models of sentence structure used in computational linguistics today. Topics include: string matching and similarity, string and tree transducers, extended context-free formalisms, tree-adjoining grammar, substructural logics, discourse representation calculi, typed feature structures, and topological models. Parsing, algorithmic complexity, algebraic properties, and formal equivalence will be discussed. A basic knowledge of logic, formal language theory, and graph theory is required. Some familiarity with syntactic theory will be helpful, but is not assumed.
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.
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.
CSC2541H — Topics in Machine Learning: Introduction to Causality
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. In preparation, at least one prior course in ML is recommended, though specific prerequisites may vary from year to year.
There is an increasing interest in using machine learning to solve problems in causal inference and the use of causal inference to design new machine learning algorithms. In this course, we will discuss the difference between statistical and causal estimands and introduce assumptions and models that allow estimating causal queries. It will be a mixed lecture/assignment/seminar/project-based course. Students will learn the basic concepts, nomenclature, and results in causality, along with advanced material characterizing recent applications of causality in machine learning. The motivating examples for the course material will be the application of machine learning to problems in healthcare. Students must have a strong background in probability theory, statistics, Bayesian networks, and familiarity with linear algebra and latent variable modeling.
CSC2541H — Topics in Machine Learning: AI for Drug Discovery
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 graduate course is a pilot course delivered in conjuction with a sister course in the Department of Pharmacology & Toxicology. This course will allow students from the graduate program in Computer Science to acquire foundational knowledge for collaborative drug development and a critical understanding of illustrative biological datasets. The scope of the course includes structural biology, genomics, and phenomics. With facilitation, students will conduct hands-on active learning assignments using simplified datasets to solidify their understanding of drug discovery data and problems. A course project, carried out in teams comprised of students from the Department of Pharmacology & Toxicology and the Department of Computer Science, is the centrepiece of the course's work. The project will involve co-designing the research questions, research designs, and datasets of authentic projects at the intersection of AI and drug development. Tutorials will involve co-working sessions facilitated with expert guidance. Students in the Computer Science Department will appreciate the priorities and research approaches of drug discovery scientists, in order to work together productively and effectively in future projects. Computer science students will share their domain-specific expertise and their perspectives about modern machine learning algorithms with their counterparts in Pharmacology & Toxicology.
CSC2547H — Current Topics in Machine Learning: Formalized mathematics in the age of LLMs
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. In preparation, at least one prior course in ML is recommended.
This seminar will dive into the rapidly expanding intersection of machine learning and formal mathematics, studying how large language models (LLMs) are transforming the way we discover and verify mathematics. Starting with a quick primer on proof assistants such as LEAN, we will study dataset construction for mathematics, recent neural approaches to theorem proving (including expert iteration, auto-formalization, hypothesis generation), and reinforcement learning from proof feedback. Prerequisites: Students are expected to have working knowledge of modern machine learning, algorithms and data structures, and solid programming skills.
Ideally, students should have already taken the following courses (or equivalent ones):
CSC311H1 Introduction to Machine Learning
CSC324H1 Principles of Programming Languages (or another course that covers first order logic)
CSC373H1 Algorithm Design, Analysis & Complexity
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.
CSC2511H/CSC401H1 — 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.
CSC2545H — Advanced Topics in Machine Learning: Topics in Causal and Moral Reasoning with LLMs
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. In preparation, an undergraduate course in ML is required (e.g. CSC413) and a graduate course in ML is recommended (e.g. CSC2516).
With the rise of large language models, we face various technical and ethical challenges. Technically, we aim to enable LLMs to conduct reliable reasoning, such as inferring the causes and effects of certain phenomena. Enhancing the causal reasoning skills of language models has two major impacts: first, on AI for science, by propelling the next generation of AI causal scientists who can aggregate evidence, conduct statistical analysis, and combine causal knowledge from different sources to advance scientific domains; second, on the reliability and safety of AI use, as understanding the consequences of actions on others and the environment is crucial for safe AI behavior. Beyond causal reasoning, another milestone we must achieve is improving LLMs' moral reasoning skills. When choosing between actions leading to different consequences, moral reasoning becomes essential—determining which consequence is more desirable can be modeled by existing utility functions, or reasoned from first principles, such as considering what would happen if everyone adopted the action (Kantian reasoning) or how it affects human well-being in the short and long term.
This course connects various schools of moral philosophy, including consequentialism, deontology, and contractualism, to understand LLMs' existing moral preferences while brainstorming future development guidelines for responsible LLM advancement. By the end of the course, students will gain (1) thorough technical knowledge of causal reasoning, (2) interdisciplinary knowledge and thought-provoking exercises on moral reasoning, (3) a comprehensive literature review of current AI research on these topics, and (4) opportunities to develop top-conference level research projects from seminar discussions.
Group 3: Systems, Networks, Databases, Security, Programming Languages, Compilers, Software Engineering, Scientific Computing
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: Blockchain Technology & Engineering
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.
Emphasis on functional programming and advanced features in languages such as Haskell and OCaml. Most of the course will be paper reading and presentations. In-class discussions and a course report are expected.
CSC2209H/CSC458H1 — Computer Networks
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.
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.
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.
Recommended Preparation: CSC343H1; CSC369H1; CSC373H1 or CSC375H1; or equivalent
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
CSC2508H — Advanced Data Systems: Vector Database Systems and Semistructured Data Management
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.
The course will dive into the technical foundations of vector databases (VDBMS), exploring algorithms and techniques for efficient similarity search, indexing, and querying of high-dimensional vector data. It will provide hands-on experience with techniques that power these systems including modern approximate k-NN algorithms, optimizations for query processing and embeddings. Additionally, we will delve into how to leverage these technologies to query unstructured data, unlocking new insights and applications in AI, including retrieval-augmented generation, image and video search, and database style processing of unstructured data.
CSC2107H/CSC488H1 — Compilers and Interpreters
The structure of compilers, Programming language processing. Scanning based on regular expressions, Parsing using context free grammars, Semantic analysis (type and usage checking), Compiler dictionaries and tables. Runtime organization and storage allocation, code generation, optimization. Use of modern compiler building tools. Course project involves building a complete compiler.
CSC2125H — Topics in Software Engineering: Software Engineering for ML-Enabled Systems (SE4AI)
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.
CSC2210H — Visual and Mobile Computing Systems
This course will cover key principles, techniques, and challenges associated with the design of processors, software frameworks, and algorithms to accelerate important visual computing applications including image processing, deep learning, diffusion models, implicit representations, federated learning, and robotics tasks, and in architectures such as TPUs, GPUs, and FPGAs.
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: Computer Networks for 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.
Recommend Preparation: a previous course on computer networks (CSC2209H or equivalent).
CSC2231H — Special Topics in Computer Systems: Privacy-Enhancing Technologies
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.
Recommended Preparation: Familiarity with operating systems and computer architecture
CSC2306H/CSC456H1 — 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.
CSC2525H — Research Topics in Database Management: Bigger, Faster, and Stronger Systems
This is a research topics course in database management. Topics will vary from year to year.
Recommended Preparation: a previous database systems course.
Group 4: Human Computer Interaction, Computational Social Science, Visualization, Graphics, Sustainability Computing, Computer Science Education
CSC2521H — Topics in Computer Graphics: Physics-Based Animation
This course will cover advanced aspects of graphics and computer animation. It will be offered in a seminar-style format involving readings of academic papers, student-led presentations, and a course project. Recommended preparation: CSC317H1 with CSC417H1 is a plus. Participants are expected to be familiar with basic concepts in graphics as there will be very little introductory matter offered during the seminar.
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.
CSC2552H — Topics in Computational Social Science: LLMs and Society
Computational and algorithmic systems are now embedded in all parts of society, which introduces both great opportunities and challenges. This course presents an introduction to computational social science, a rapidly growing interdisciplinary field that studies questions at the intersection of AI, data, and society. We focus on the spectrum of methodologies now available for conducting social research in the digital age, from large-scale observational studies to online experimentation, as well as research skills including reading state-of-the-art papers, writing reviews, and doing a research project. Topics covered will include online misinformation, algorithmic bias, and social media platforms.
CSC2604H — Topics in Human-Centred and Interdisciplinary Computing: Intellectual Property
This course will cover innovative human-computer interaction technologies that are being used across disciplines to solve real-world problems. These technologies include but are not limited to virtual reality (VR), augmented reality (AR), haptics, and generative AI. It will be offered in a seminar-style format involving readings of academic papers, student-led presentations, and a course project.
Research seminar on intellectual property issues that arise in protecting and leveraging contemporary human-machine interface innovations both in the academic and commercial arenas.
Recommended Preparation: CSC428H1/CSC2514H or equivalent.
CSC2615H — Ethical Aspects of Artificial Intelligence
This course introduces critical social analysis of the ethical aspects of Artificial Intelligence. Students will learn about the theories of ethics, the history of AI, the intersection between ethics and computing, the underlying values of AI, privacy concerns around AI applications, different kinds of biases (based on race, gender, age, sexual orientation, faith, geographic location, etc.) associated with many AI applications, the concerns around AI, and associated debates based on contemporary examples. This course will prepare students for systematically analyzing and auditing an AI system for its ethical standards, and designing new systems that are fairer.
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.
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, or even algorithms work together to achieve a common goal? This course dives into the heart of distributed collaboration and collective intelligence, exploring how agents—whether in social networks, multi-agent AI systems, or platforms like social media—can effectively align their actions to solve complex problems. Combining mathematical rigor and sociological insights, we examine opinion dynamics, network formation, and learning algorithms, equipping you to design and analyze systems that enable collaboration and harness the power of collective intelligence.
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-Centred 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/2514H 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 — 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.
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.
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.