Top

Graduate Course Descriptions

Updated on July 2, 2024 @ 12:14 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 — 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 Vision for Advanced Digital Photography

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 Met​hods 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


CSC2206HF — 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

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.


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.

Bigger, Faster, and Strogner Systems: This course covers advanced research topics in the design of big database management systems. We will explore hardware topics including SSDs, non-volatile memory, shingled HDDs, NUMA, CPU pipelining, SIMD, etc. We will discuss the limits of traditional relational database systems and emerging database architectures such as NoSQL, NewSQL, KV-stores, stream processors, and graph databases. We will delve deeply into state-of-the-art data organization techniques such as indexing, compression, data sketching, and set-membership filtering.

Note: This is a more advanced course than CSC2525H/CSC443H — Research Topics in Database Management: Database System Technology." They should have distinct course codes. The instructor would also like this course to be open to undergrads who did well in CSC443H and wish to learn more about databases. The enrollment cap should be increased from 20 to 30 students.


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.


CSC2604HS — Topics in Human-Centred and Interdisciplinary Computing: Seminar on User Interfaces and 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.

Recommended preparation: CSC428H1/2514H or equivalent.

This particular offering will cover intellectual property issues that arise in protecting and leveraging contemporary human-machine interface innovations both in the academic and commercial arenas. Students will be asked to carefully examine contemporary tussles in industry surrounding the use of these innovations. Students will be expected to read various documents each week and lead the discussions.


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.