Course Search

CSCB36H3 - Introduction to the Theory of Computation

Mathematical induction with emphasis on applications relevant to computer science. Aspects of mathematical logic, correctness proofs for iterative and recursive algorithms, solutions of linear and divide-and-conquer recurrences, introduction to automata and formal languages.

Prerequisite: CSCA48H3 and [(CSCA65H3) or CSCA67H3] and [CGPA of at least 3.5, or enrolment in a CSC Subject POSt, or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Exclusion: CSC236H, CSC240H
Breadth Requirements: Quantitative Reasoning

CSCB58H3 - Computer Organization

Principles of the design and operation of digital computers. Binary data representation and manipulation, Boolean logic, components of computer systems, memory technology, peripherals, structure of a CPU, assembly languages, instruction execution, and addressing techniques. There are a number of laboratory periods in which students conduct experiments with digital logic circuits.

Prerequisite: [CSCA48H3 or PHYB57H3/(PSCB57H3)] and [CGPA of at least 3.5, or enrolment in a CSC Subject POSt, or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Exclusion: CSC258H
Breadth Requirements: Quantitative Reasoning

CSCB63H3 - Design and Analysis of Data Structures

Design, analysis, implementation and comparison of efficient data structures for common abstract data types. Priority queues: heaps and mergeable heaps. Dictionaries: balanced binary search trees, B-trees, hashing. Amortization: data structures for managing dynamic tables and disjoint sets. Data structures for representing graphs. Graph searches.

Prerequisite: CSCB36H3 and [CGPA of at least 3.5, or enrolment in a CSC Subject POSt, or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Corequisite: STAB52H3
Exclusion: CSC263H, CSC265H
Breadth Requirements: Quantitative Reasoning

CSCC01H3 - Introduction to Software Engineering

Introduction to software development methodologies with an emphasis on agile development methods appropriate for rapidly-moving projects. Basic software development infrastructure; requirements elicitation and tracking; prototyping; basic project management; basic UML; introduction to software architecture; design patterns; testing.

Prerequisite: CSCB07H3, CSCB09H3, and [CGPA of at least 3.5, or enrolment in a CSC Subject POSt, or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Exclusion: CSC301H, (CSCC40H3), (CSCD08H3)
Breadth Requirements: Quantitative Reasoning
Course Experience: University-Based Experience

CSCC09H3 - Programming on the Web

An introduction to software development on the web. Concepts underlying the development of programs that operate on the web. Operational concepts of the internet and the web, static and dynamic client content, dynamically served content, n-tiered architectures, web development processes and security on the web.

Prerequisite: CSCB09H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Corequisite: CSCC43H3
Exclusion: CSC309H
Breadth Requirements: Quantitative Reasoning
Course Experience: University-Based Experience

CSCC10H3 - Human-Computer Interaction

The course will provide an introduction to the field of Human-Computer Interaction (HCI) with emphasis on guidelines, principles, methodologies, and tools and techniques for analyzing, designing and evaluating user interfaces. Subsequent topics include usability assessment of interactive systems, prototyping tools, information search and visualization, mobile devices, social media and social networking, and accessibility factors.

Prerequisite: CSCB07H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CCT380H, CSC318H
Breadth Requirements: Quantitative Reasoning

CSCC11H3 - Introduction to Machine Learning and Data Mining

An introduction to methods for automated learning of relationships on the basis of empirical data. Classification and regression using nearest neighbour methods, decision trees, linear and non-linear models, class-conditional models, neural networks, and Bayesian methods. Clustering algorithms and dimensionality reduction. Model selection. Problems of over-fitting and assessing accuracy. Problems with handling large databases.

Prerequisite: [MATB23H3 or MATB24H3] and MATB41H3 and STAB52H3 and [CGPA of at least 3.5 or enrolment in a CSC Subject POSt or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement].
Exclusion: CSC311H1, (CSC311H5), (CSC411H1), (CSCD11H3)
Recommended Preparation: CSCC37H3, STAB57H3
Breadth Requirements: Quantitative Reasoning

CSCC24H3 - Principles of Programming Languages

Major topics in the design, definition, analysis, and implementation of modern programming languages. Study of programming paradigms: procedural (e.g., C, Java, Python), functional (e.g., Scheme, ML, Haskell) and logic programming (e.g., Prolog, Mercury).

Prerequisite: CSCB07H3 and CSCB09H3 and CSCB36H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC324H
Breadth Requirements: Quantitative Reasoning

CSCC37H3 - Introduction to Numerical Algorithms for Computational Mathematics

An introduction to computational methods for solving problems in linear algebra, non-linear equations, approximation and integration. Floating-point arithmetic; numerical algorithms; application of numerical software packages.

Prerequisite: MATA22H3 and [MATA36H3 or MATA37H3] and [CGPA of at least 3.5 or enrolment in a CSC Subject POSt or enrolment in a non-CSC Subject POst for which this specific course is a program requirement]
Exclusion: (CSCC36H3), (CSCC50H3), (CSCC51H3), CSC336H, CSC350H, CSC351H, CSC338H
Breadth Requirements: Quantitative Reasoning

CSCC43H3 - Introduction to Databases

Introduction to database management systems. The relational data model. Relational algebra. Querying and updating databases: the SQL query language. Application programming with SQL. Integrity constraints, normal forms, and database design. Elements of database system technology: query processing, transaction management.

Prerequisite: CSCB09H3 and CSCB63H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC343H
Breadth Requirements: Quantitative Reasoning

CSCC46H3 - Social and Information Networks

How networks underlie the social, technological, and natural worlds, with an emphasis on developing intuitions for broadly applicable concepts in network analysis. Topics include: introductions to graph theory, network concepts, and game theory; social networks; information networks; the aggregate behaviour of markets and crowds; network dynamics; information diffusion; popular concepts such as "six degrees of separation", the "friendship paradox", and the "wisdom of crowds".

Prerequisite: CSCB63H3 and STAB52H3 and [MATA22H3 or MATA23H3] and [a CGPA of 3.5 or enrolment in a CSC Subject POSt]
Breadth Requirements: Quantitative Reasoning

CSCC63H3 - Computability and Computational Complexity

Introduction to the theory of computability: Turing machines, Church's thesis, computable and non-computable functions, recursive and recursively enumerable sets, reducibility. Introduction to complexity theory: models of computation, P, NP, polynomial time reducibility, NP-completeness, further topics in complexity theory.
Note: Although the courses CSCC63H3 and CSCC73H3 may be taken in any order, it is recommended that CSCC73H3 be taken first.

Prerequisite: CSCB36H3 and CSCB63H3 and [CGPA of at least 3.5, or enrolment in a CSC Subject POSt, or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]]
Exclusion: CSC363H, CSC365H, CSC364H
Breadth Requirements: Quantitative Reasoning

CSCC69H3 - Operating Systems

Principles of operating systems. The operating system as a control program and as a resource allocator. The concept of a process and concurrency problem: synchronization, mutual exclusion, deadlock. Additional topics include memory management, file systems, process scheduling, threads, and protection.

Prerequisite: CSCB07H3 and CSCB09H3 and CSCB58H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC369H
Breadth Requirements: Quantitative Reasoning

CSCC73H3 - Algorithm Design and Analysis

Standard algorithm design techniques: divide-and-conquer, greedy strategies, dynamic programming, linear programming, randomization, and possibly others.

Prerequisite: CSCB63H3 and STAB52H3 and [CGPA of at least 3.5 or enrolment in a CSC Subject POSt or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Exclusion: CSC373H, CSC375H, CSC364H
Breadth Requirements: Quantitative Reasoning

CSCC85H3 - Fundamentals of Robotics and Automated Systems

The course introduces the fundamental principles, problems, and techniques involved in the operation of mobile robots and other automated systems. Course topics include: components of automated systems, sensors and sensor management, signal acquisition and noise reduction, principles of robot localization, FSM-based A.I. for planning, fault-tolerance and building fault-tolerant systems, real-time operation and real-time operating systems; and computational considerations such as hardware limitations and code optimization. Ethical considerations in the implementation and deployment of automated systems are discussed. The concepts covered in the course are put in practice via projects developed on a Lego robotic platform.

Prerequisite: CSCB58H3 and CSCB09H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: ECE385H
Recommended Preparation: CSCB07H3
Breadth Requirements: Quantitative Reasoning

CSCD01H3 - Engineering Large Software Systems

An introduction to the theory and practice of large-scale software system design, development, and deployment. Project management; advanced UML; requirements engineering; verification and validation; software architecture; performance modeling and analysis; formal methods in software engineering.

Prerequisite: CSCC01H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC302H, (CSCD08H3)
Breadth Requirements: Quantitative Reasoning
Course Experience: University-Based Experience

CSCD03H3 - Social Impact of Information Technology

The trade-offs between benefits and risks to society of information systems, and related issues in ethics and public policy. Topics will include safety-critical software; invasion of privacy; computer-based crime; the social effects of an always-online life; and professional ethics in the software industry. There will be an emphasis on current events relating to these topics.

Prerequisite: 14.0 credits and enrolment in a Computer Science Subject POSt. Restricted to students in the Specialist/Specialist Co-op programs in Computer Science or in the Specialist/Specialist Co-op programs in Management and Information Technology
Exclusion: CSC300H
Breadth Requirements: Social and Behavioural Sciences
Course Experience: University-Based Experience

CSCD18H3 - Computer Graphics

The course will cover in detail the principles and algorithms used to generate high-quality, computer generated images for fields as diverse as scientific data visualization, modeling, computer aided design, human computer interaction, special effects, and video games. Topics covered include image formation, cameras and lenses, object models, object manipulation, transformations, illumination, appearance modeling, and advanced rendering via ray-tracing and path-tracing. Throughout the course, students will implement a working rendering engine in a suitable programming language.

Prerequisite: MATB24H3 and MATB41H3 and [CSCB09H3 or proficiency in C] and CSCC37H3 and [a CGPA of at least 3.5 or enrolment in a Computer Science Subject POSt]
Exclusion: (CSC418H1)/CSC317H1
Breadth Requirements: Quantitative Reasoning

CSCD21H3 - Blockchains and Decentralized Applications

The course is meant to expose students to Web3 by covering the technical aspects of blockchain technologies and smart contracts. The course will have three learning outcomes. First, the students will learn how to build blockchains based on different consensus. Secondly, they will learn how to develop decentralized applications using smart contracts. Finally, they will learn about the current challenges of blockchain technologies such as scalability, interoperability and privacy.

Prerequisite: CSCC09H3
Breadth Requirements: Quantitative Reasoning

CSCD25H3 - Advanced Data Science

This course teaches the basic techniques, methodologies, and ways of thinking underlying the application of data science and machine learning to real-world problems. Students will go through the entire process going from raw data to meaningful conclusions, including data wrangling and cleaning, data analysis and interpretation, data visualization, and the proper reporting of results. Special emphasis will be placed on ethical questions and implications in the use of AI and data. Topics include data pre-processing, web scraping, applying supervised and unsupervised machine learning methods, treating text as data, A/B testing and experimentation, and data visualization.

Prerequisite: CSCB63H3 and CSCC11H3 and [a CGPA of 3.5 or enrolment in a CSC Subject POSt]
Breadth Requirements: Quantitative Reasoning

CSCD27H3 - Computer and Network Security

Public and symmetric key algorithms and their application; key management and certification; authentication protocols; digital signatures and data integrity; secure network and application protocols; application, system and network attacks and defences; intrusion detection and prevention; social engineering attacks; risk assessment and management.

Prerequisite: CSCB09H3 and CSCB36H3 and CSCB58H3 and [CGPA of at least 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC427H
Recommended Preparation: CSCC69H3
Breadth Requirements: Quantitative Reasoning
Course Experience: University-Based Experience

CSCD37H3 - Analysis of Numerical Algorithms for Computational Mathematics

Most mathematical models of real systems cannot be solved analytically and the solution of these models must be approximated by numerical algorithms. The efficiency, accuracy and reliability of numerical algorithms for several classes of models will be considered. In particular, models involving least squares, non-linear equations, optimization, quadrature, and systems of ordinary differential equations will be studied.

Prerequisite: CSCC37H3 and [MATB23H3 or MATB24H3] and MATB41H3 and [CGPA of at least 3.5 or enrolment in a CSC Subject POSt or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Exclusion: (CSCC50H3), (CSCC51H3), CSC350H, CSC351H
Breadth Requirements: Quantitative Reasoning

CSCD43H3 - Database System Technology

Implementation of database management systems. Storage management, indexing, query processing, concurrency control, transaction management. Database systems on parallel and distributed architectures. Modern database applications: data mining, data warehousing, OLAP, data on the web. Object-oriented and object-relational databases.

Prerequisite: CSCC43H3 and CSCC69H3 and CSCC73H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC443H
Breadth Requirements: Quantitative Reasoning

CSCD54H3 - Technology Innovation and Entrepreneurship

This course examines high-Tech innovation and entrepreneurship, principles of operation of successful high-tech enterprises, customer identification and validation, product development, business models, lean startup techniques, and financing of high-technology ventures. Students will work in teams to develop their own innovative product idea, and will produce a sound business plan to support their product.

Prerequisite: A minimum of 2.5 credits at the B-level or higher in CSC courses
Corequisite: CSCD90H3
Exclusion: CSC454H
Breadth Requirements: Social and Behavioural Sciences
Note: Restricted to students in the Entrepreneurship stream of the Specialist/Specialist Co-op programs in Computer Science. If space permits, students in other streams of the Specialist/Specialist Co-op programs in Computer Science may be admitted to the course, with the permission of the instructor.

CSCD58H3 - Computer Networks

Computer communication network principles and practice. The OSI protocol-layer model; Internet application layer and naming; transport layer and congestion avoidance; network layer and routing; link layer with local area networks, connection-oriented protocols and error detection and recovery; multimedia networking with quality of service and multicasting. Principles in the context of the working-code model implemented in the Internet.

Prerequisite: CSCB58H3 and CSCB63H3 and STAB52H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC458H
Breadth Requirements: Quantitative Reasoning

CSCD60H3 - High-Performance Computing

A comprehensive introduction to the field of high-performance and parallel computing (supercomputing). Topics include foundational theory of communication and distributed systems, parallel programming, modern supercomputer hardware and architecture, and optimization and high-performance scientific computing.

Prerequisite: CSCA48H3, CSCB09H3, CSCB58H3, CSCC37H3, [MATA22H3 or MATA23H3], MATB24H3
Exclusion: CSC367H1, CSC456H1
Recommended Preparation: CSCB07H3, CSCD37H3
Breadth Requirements: Quantitative Reasoning

CSCD70H3 - Compiler Optimization

The goal of this course is to examine the design and implementation of a compiler optimized for modern parallel architectures. Students will learn about common optimizations, intermediate representations (IRs), control-flow and dataflow analysis, dependence graphs, instruction scheduling, and register allocation. Advanced topics include static single assignment, memory hierarchy optimizations and parallelization, compiling for multicore machines, memory dependence analysis, automatic vectorization/thread extraction, and predicated/speculative execution.

Prerequisite: CSCB63H3 and CSCC69H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Breadth Requirements: Quantitative Reasoning

CSCD71H3 - Topics in Computer Science

A topic from computer science, selected by the instructor, will be covered.
The exact topic will typically change from year to year.

Prerequisite: Permission of the instructor and [CGPA 3.5 or enrolment in a CSC Subject POSt]. Normally intended for students who have completed at least 8 credits.

CSCD72H3 - Topics in the Theory of Computing

A topic from theoretical computer science, selected by the instructor, will be covered.
The exact topic will typically change from year to year.

Prerequisite: Permission of the instructor and [CGPA 3.5 or enrolment in a CSC Subject POSt]. Normally intended for students who have completed at least 8 credits.

CSCD84H3 - Artificial Intelligence

A study of the theories, algorithms, and applications of Artificial Intelligence. Topics include a subset of: search, game playing, logical representations and reasoning, planning, reasoning and decision making with uncertainty, neural networks and deep learning models. Assignments provide practical experience of the core topics.

Prerequisite: STAB52H3 and CSCB63H3 and [a CGPA of 3.5 or enrolment in a CSC subject POSt]
Exclusion: CSC484H, CSC384H
Breadth Requirements: Quantitative Reasoning