Search Courses

CSC2224H - Parallel Computer Architecture and Programming

The goal of this course is to build a strong understanding of the fundamentals of the architecture of parallel computers and efficient programming for them. We will examine how architectures are designed to exploit and extract different types of parallelism. The focus will be on fundamentals, trade-offs in parallel architecture design, and cutting-edge research. Architectures studied may include parallel microprocessors, GPUs, and FPGAs.

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

CSC2226H - Topics in Verification

An advanced course on verification techniques for specifying and verifying programs. Cutting-edge formal methods, program analysis, theorem proving techniques will be discussed. Students with a good background in logic are encouraged to take this course.

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

CSC2227H - Topics in the Design and Implementation of Operating Systems

This course examines the design, implementation, and analysis of selected aspects of operating systems with a focus on networked systems and the impact of emerging hardware such as persistent memory. It covers topics such as: resource naming and discovery, scheduling, and load balancing; fault-tolerance, availability, and persistence; distributed communication models; and storage. We will explore these topics in the context of a variety of system designs including local and distributed systems. This is a seminar-style course based on occasional lectures, paper presentations by students, and discussions of readings. The focus is on the principles used in the design of networked systems and algorithms and data structures used in their implementation. Readings include case studies, seminal papers, and recent conference and journal articles.

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

CSC2228H - Topics in Mobile, Pervasive, and Cloud Computing

Discussion of various research topics in mobile and pervasive applications, and the cloud or edge computing infrastructure on which they rely. Topics may include wireless technologies, disconnected operation, power and bandwidth adaptation, location awareness and tracking, resource discovery, and task offloading.

Credit Value (FCE): 0.50
Recommended Preparation: Familiarity with operating systems and computer networks (CSC2208H and CSC2209H or equivalents)
Campus(es): St. George
Delivery Mode: In Class

CSC2229H - Topics in Computer Networks

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.

Credit Value (FCE): 0.50
Recommended Preparation: A previous course on computer networks (CSC2209H or equivalent)
Campus(es): St. George
Delivery Mode: In Class

CSC2231H - Special Topics in Computer Systems

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

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

CSC2233H - Topics in Storage Systems

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

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

CSC2234H - Database System Technology

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

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

CSC2235H - Cloud-Native Data Management Systems

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

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

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

CSC2240H - Graphs, Matrices and Optimization

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

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

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

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

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

CSC2305H - Numerical Methods for Optimization Problems

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

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

CSC2306H - High Performance Scientific Computing

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

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

CSC2310H - Computational Methods for Partial Differential Equations

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

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

CSC2321H - Matrix Calculations

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

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

CSC2332H - Introduction to Quantum Algorithms

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

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

CSC2401H - Introduction to Computational Complexity

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

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

CSC2404H - Computability and Logic

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

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

CSC2405H - Automata Theory

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

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

CSC2410H - Introduction to Graph Theory

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

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

CSC2412H - Algorithms for Private Data Analysis

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

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

CSC2414H - Advanced Topics in Complexity Theory

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

CSC2415H - Advanced Topics in the Theory of Distributed Computing

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

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

CSC2419H - Topics in Cryptography

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

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

CSC2420H - Algorithm Design, Analysis and Theory

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

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

CSC2421H - Topics in Algorithms

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

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

CSC2426H - Fundamentals of Cryptography

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

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

CSC2427H - Topics in Graph Theory

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

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

CSC2429H - Topics in the Theory of Computation

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

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

CSC2431H - Topics in Computational Biology and Medicine

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

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