Graduate Course Descriptions
Updated on December 19, 2024 @ 12:23 PM
Enrolment Notes:
Enrolment for graduate CS students will open on July 25, 2024 at 10:00AM ET.
Enrolment for non-CS graduate students will open on August 22, 2024 at 10:00AM ET; 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 3, 2024
Winter graduate courses start on Monday, January 6, 2025.
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 2024-2025 academic year. For a full list of gradute courses at the Department of Computer Science please visit the SGS Calendar entry for Computer Science.
Group 1: Algorithms, Complexity, Cryptography, Theory of Distributed Computing
CSC2221HF — Introduction to 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.
Prerequisite: A course in algorithm design and analysis, such as CSC373H1.
CSC2332HF — Introduction to Quantum Computing
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.
Prerequisite: good knowledge of linear algebra and elementary real and complex analysis.
CSC2401HF — 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.
CSC2405HS/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.
Prerequisite: A course in algorithm design and analysis, such as CSC373.
CSC2414HS/MAT1304H — Advanced Topics in Complexity Theory: Algebraic Gems in Math & CS
An advanced course on a topic in complexity theory. Topics will change from one instance of the course to another.
In the last few decades, algebraic methods have proven to be extremely powerful in several areas of computer science. Many of the recent and important advances in the field have relied on very simple properties of polynomials. In this course we will see many interesting and often surprising applications of linear algebra and polynomials to complexity theory, cryptography, combinatorics, and algorithm design. We will develop all the algebraic tools that we need along the way.
The main prerequisite is mathematical maturity. It might be helpful to have some familiarity with discrete math/algorithms and linear algebra. Students with an interest in discrete mathematics and/or theoretical computer science are welcome.
A tentative (and partial) list of topics that we will cover:
• Applications of linear algebra • Polynomials methods in combinatorics and discrete geometry • Polynomials and error correcting codes • Algebraic methods in complexity theory and cryptography • Introduction to arithmetic circuits/arithmetic computation
CSC2420HS — 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.
CSC2427HS/MAT1500H — Topics in Graph Theory: The Probabilistic Method
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.
The probabilistic method, pioneered by Erdos in the 1950's, is now one of the most important and broadly used proof techniques in graph theory and combinatorics. It also has wide applications in other areas of math and theoretical computer science. Roughly speaking: In order to prove the existence of an object with certain properties (eg a colouring of a graph), we devise a way to generate that object randomly, and then prove that the desired properties hold with positive probability.
CSC2429HF/MAT1306H — Topics in Theory of Computation: Pseudorandomness & Expanders
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.
Group 2: Artificial Intelligence, Machine Learning, Knowledge Representation, Computational Linguistics, Computational Biology and Medicine, Robotics, Vision
CSC2501HF/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.
CSC2502HF/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.
CSC2511HS/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
CSC2515HF — 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.
CSC2516H/CSC413H1 — 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.
CSC2527HS/CSC454H1 — Business 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.
CSC2529HF — 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.
Recommended preparation: Students should have a strong background in calculus and linear algebra; familiarity with statistical signal processing, convex optimization, and coding in Python is recommended.
CSC2530HS — Computer 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 began 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 kilometers, 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.
This seminar course will provide an in-depth look at 3D sensing and related technologies, and the computational techniques used to model and exploit them. Specific topics will include "extreme imaging" with single-photon detectors; principles of time-of-flight imaging and LiDAR; structured-light imaging; 3D imaging through scattering media; and imaging around corners. Class format will be discussion based, with approximately one paper covered per week and a term project.
Recommended preparation: Graduate-level exposure to one or more of computer vision, computer graphics, sensing or numerical optimization is desirable but not required.
CSC2539HS — 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., CSC2529, CSC2530) is desirable but not required.
CSC2541HF — Topics in Machine Learning: Generative AI for Images
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.
Generative AI has recently achieved revolutionary performance and burst into public view through such systems as ChatGPT and DALL-E. This course examines the techniques that have made this possible, with an emphasis on machine vision and image synthesis. Topics will be selected from diffusion models, score matching, normalizing flows, neural differential equations, variational autoencoders, transformers, and large language models. Many of these techniques are mathematically sophisticated.
This is primarily a seminar course in which students read and present papers from the literature, though there may be some supplementary lectures on advanced material. There will also be a major course project. The goal is to bring students to the state of the art in this exciting field.
Recommended Preparation: An advanced course in Machine Learning (such as CSC413H1 or CSC2516H), especially neural nets, a solid knowledge of linear algebra, the basics of multivariate calculus and probability, and programming skills, especially programming with vectors and matrices. Mathematical maturity will be assumed.
CSC2541HS — Topics in Machine Learning: Large Models
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.
Large Models: Large Language Models, like ChatGPT, are changing how society interacts with computers. In this seminar course, students will read and discuss the recent academic literature that spans the entire large model stack: from pre-training considerations to post-training methods. The topics covered in this course will include scaling laws, data selection, benchmarking, and prompt engineering.
CSC2545HF — 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. In preparation, an undergraduate course in ML is required (e.g. CSC413) and a graduate course in ML is recommended (e.g. CSC2516).
Geometric Deep Learning: This year’s iteration of the course will focus on Geometric Deep Learning. This will involve learning aspects of handling geometric input representations, discussion of output representations, geometry-inspired inductive biases, and examples of integrating neural nets in some traditional geometry processing pipelines.
CSC2600HS/CSC491H1 — Topics in Computer Science: Automated Reasoning with Machine Learning
CSC2626HF — 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.
Group 3: Systems, Networks, Databases, Security, Programming Languages, Compilers, Software Engineering, Scientific Computing
CSC2104HF/CSC465HF — 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.
Prerequisite: CSC236H1/ CSC240H1/ MAT309H1/ CSC236H5/ CSCB36H3
CSC2107HS/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.
CSC2108HF — 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.
CSC2125HF — 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.
Software Engineering for ML-Enabled Systems (SE4AI): The course provides an in-depth understanding of software engineering concerns and challenges in building ML-enabled systems at scale: requirements and specifications, testing and verification, safety and reliability, data and architecture. The course material consists of instructor-led lectures and student paper presentations. A “hands-on” version of the course consists of a series of assignments and possibly a group project. A “research” version requires that a student write a research paper on the topic of their interest, within the scope of the course.
CSC2125HS — Topics in Software Engineering: Blockchain Technology and 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.
Blockchain Technology and Engineering: This course will be half lecture and half reading group. We will cover techniques and software engineering challenges behind blockchain systems. Through the study of this course, students would learn the overall architecture of blockchain systems. The course would also dive into important sub-topics such as Proof-of-Work, consensus protocol, and smart contract VMs.
CSC2126HF — Topics in Programming Languages: Types and Effects
We will study advanced topics in 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. Most of the course will be a reading group. From this course, students will learn the underlying semantics of programming languages, learn state-of-the-art developments in the programming languages research area, and appreciate the deep philosophical and mathematical underpinnings of programming languages design and implementations.
Types and Effects: Emphasis on functional programming and type systems. An independent course project and an oral student presentation is required. Recommended background: CSC324
CSC2130HS/ECE1785H — Empirical Research Methods in Software Engineering
This course provides an overview and hands-on experience with a core of qualitative and quantitative empirical research methods, including interviews, qualitative coding, survey design, and large-scale mining and analysis of data. There will be extensive reading with occasional student presentations about the reading in class, weekly homework assignments, and a semester-long research project for which students must prepare in-class kickoff and final presentations as well as a final report.
We will focus on software-engineering related research questions in readings and assignments. Students will mine and integrate data from and across online software repositories (e.g., GitHub and Stack Overflow) and employ a spectrum of data analysis techniques, ranging from statistical modeling to social network analysis.
For the final research project, we encourage students to come up with a research question of interest to themselves. The delivery will be a research paper, and one or more empirical methods presented in class have to be part of the paper.
Prerequisites: CSC207H1, CSC236H1, CSC240H1
CSC2206H — Computer Systems Modelling
The emphasis of the course is on models for systems with uncertainty. We study the properties of various models and discuss how they can be applied to analyze algorithm and system performance. This course is useful for students interested in the analysis of algorithms and systems with uncertainty that arise in computer systems, reinforcement learning, social networks, online markets etc. Concepts covered include renewal processes, Markov chains&processes, and Markov decision processes.
CSC2209HF/CSC458HF — 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.
CSC2210HS — 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.
This course is intended for graduate and advanced undergraduate students. It will start with basic principles and then cover the latest research. For ML, vision, or graphics students, you will gain an understanding of the difference between hardware architectures (e.g., TPUs, GPUs, and FGPAs), the principles behind software frameworks (e.g., TensorFlow, Halide, CUDA), etc. and the tradeoffs/techniques in writing high-performance algorithms for visual computing applications. For systems students, this course will serve as an introduction to cutting-edge vision, graphics, DL, robotics applications and their optimization. This course will include lectures, interactive discussions of state-of-art research, industry guest lectures, and a research project.
CSC2229HS — 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).
Computer Networks for Machine Learning: This course closely examines the fundamental challenges of interconnection networks, with a focus on machine learning solutions. The rapid growth of computing requirements, primarily driven by machine learning applications, has created significant challenges for computer networks. Providing high performance in terms of bandwidth, latency, loss, etc. requires novel techniques and a fresh perspective on traditional solutions applied in various layers in computer networks (link, transport, and applications). Throughout this course, we will review these challenges and explore some of the new solutions in this area, drawing from papers presented at top networking conferences.
CSC2231HF — Topics in Computer Systems: Secure Computer Systems and Hardware
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.
In recent years, numerous hardware vulnerabilities have surfaced leaving software systems exposed to exploitation. Notable examples include processor speculation attacks like Spectre and Meltdown, Cache Side-Channel attacks, and Rowhammer attacks. These attacks enable malicious software to extract sensitive data from systems, tamper critical data, and even seize control of entire systems. This course will discuss various aspects of hardware and systems security. Students will gain a thorough understanding of micro-architectural attacks, such as Spectre, Cache Side-Channels, and Rowhammer, while also exploring emerging defense mechanisms designed to thwart these exploits. The course will also cover classic topics in hardware and systems security like trusted execution environments, memory safety and other topics.
This course is intended for graduate and advanced undergraduate-level students who have some background in hardware or systems. Students with a software/systems background will gain insights into the influence of micro-architectural designs on system security. Conversely, students with a hardware background will explore the techniques employed by malicious software to reverse-engineer hardware and compromise systems. By bridging these perspectives, students will develop a comprehensive understanding of secure computer architecture. The course lecture material will be derived from the research papers in system security conferences (e.g., IEEE S&P, USENIX Security) and computer architecture conferences (e.g., ISCA, MICRO, HPCA, ASPLOS). The course will also include hands-on assignments where students will learn to construct micro-architectural attacks on real systems. Students will also undertake a mini-research project to hone their expertise in secure computer architecture.
CSC2231HS — Special Topics in Computer Systems: Privacy-Enhancing Technologies
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 protect 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 design systems that enable us to continue benefiting from data while protecting individual privacy. The first part of the course focuses on key cryptographic concepts like secure multiparty computation (MPC), fully homomorphic encryption (FHE), Zero-knowledge proofs (ZKP), private information retrieval, oblivious RAM, and anonymous communication protocols. In the second part, we will discuss statistical approaches to privacy, with a particular focus on differential privacy. Toward the end of the course, we will explore applications of privacy-enhancing technologies. This course is designed for graduate and advanced undergraduate-level students. By the end of the course, students will be able to analyze privacy issues and design privacy-preserving systems using cryptographic and statistical tools. Students will also gain hands-on experience applying these techniques to practical scenarios.
Recommended Preparation (if any); familiarity with cryptography
CSC2233HS — Topics in Storage Systems: Vector Databases in Modern AI Applications
Cutting-edge AI applications rely on custom storage systems that store billions of dense vectors, search through them quickly, and retrieve relevant results within milliseconds. Examples include LLM-based AI code assistants, image and video search, computational chemistry, generative AI using retrieval-augmented generation (RAG), and recommending videos or music (YouTube, Spotify). These applications embed data -- images, user preferences, or molecule structure -- as dense vectors, and then rely on fast search to find related vectors. The recent explosion of such AI applications has given rise to a new class of specialized storage system: the vector database, or VDBMS, which combines vector storage with semantic search over stored vectors.
CSC2235HF — 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.
Prerequisite: introductory courses on databases
CSC2234HF/ 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.
CSC2310HS/CSC446H1 — 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.
CSC2525HS — 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.
This course covers advanced research topics in the design of big database systems. This year, we will study various topics including expandable arrays, probabilistic filter data structures (XOR, blocked Bloom, range, and quotient filters), database page layouts, compression techniques (e.g., Elias-Fano, LZ7, delta encoding, entropy encoding), advanced index trees and tries, multi-dimensional indexes (R-trees, space-filling curves), key-value stores, etc.
Note: This course assumes background knowledge from CSC443/CSC2234, though there will be opportunities to catch up on this background material
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.
Prerequisites: CSC318H1; STA247H1/ STA255H1/ STA257H1; CSC209H1/ proficiency C++ or Java
CSC2521HF — Topics in Computer Graphics: Seminar on 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.
Physics-based Animation: This particular offering will cover the application of physics to computer animation, with example topics including deformation mechanics, fluid mechanics, rigid body dynamics, cloth simulation, and ML applications in all of the above. Students will be asked to read, interpret, present, and implement research papers from top-tier graphics journals. The course project will involve implementing an algorithm from one of the paper presented in the course.
CSC2526HF — HCI: Topics in Ubiquitous Computing: Using LLMs & GPTs for Ubiquitous 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., CSC 428) and have some exposure to user study design.
Using LLMs & GPTs for Ubiquitous Computing:
This particular offering will cover uses of LLMs and GPT in ubiquitous computing applications. This course is for students interested in designing and evaluating applications that leverage AI technologies. Students will also work on a term project which explores novel applications that leverage LLMs for user-facing applications.
CSC2537HS — 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.
CSC2557HF — Adaptive Experimentation for Intelligent Interventions
This course will cover digital and online interventions such as experiments involving web apps in industry, online education, and online mental wellbeing interventions. Students will become more familiar with how to use randomized A/B/N experiments to compare alternative intervention components and continuously enhance the design of digitally delivered interventions.
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.
CSC2615HF — 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.
CSC2631HS — 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.
2025-2026 Graduate Course Descriptions
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 gradute courses at the Department of Computer Science please visit the SGS Calendar entry for Computer Science.
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 — 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 of 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.
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.
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.
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.
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.
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: Special 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: 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
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.