Course Search

CRTC80H3 - Curator as Artist; Artist as Curator

Viewed from an artist’s perspective, this course considers the exhibition as medium, and curating as a creative act. By studying the history of exhibitions organized by artists and artist collectives, this course considers their influence on contemporary curatorial practice with a focus on historical and contemporary Canadian exhibitions.

Prerequisite: CRTB01H3
Enrolment Limits: 20
Breadth Requirements: Arts, Literature and Language
Note: Priority will be given to students enrolled in programs in Curatorial Studies, Art History and Visual Culture, Arts Management, Media Studies, and Studio Art.

CRTD43H3 - Curating Contemporary Art

Curatorial practice and the responsibilities of the curator, such as the intellectual and practical tasks of producing a contemporary art exhibition, researching Canadian contemporary art and artists, building a permanent collection, administrating a public art competition, and critical writing about works of visual art in their various contexts. Studio and/or gallery visits required.

Prerequisite: 11.0 credits including [VPHB39H3 and CRTB01H3 and CRTB02H3]
Exclusion: (VPHD43H3)
Breadth Requirements: Arts, Literature and Language
Course Experience: Partnership-Based Experience

CRTD44H3 - Curating Historical Art

Time and history bring different factors to our understanding and interpretation of artworks. Students will explore both intellectual and practical factors concerning curating historical art, from conservation, research, and handling issues to importance of provenance, collecting, and display, through workshops, critical writing and discussion, field trips, and guest speakers.

Prerequisite: 11.0 credits including [VPHB39H3, CRTB01H3 and CRTB02H3
Exclusion: (VPHD44H3)
Breadth Requirements: Arts, Literature and Language
Course Experience: Partnership-Based Experience

CSCA08H3 - Introduction to Computer Science I

Programming in an object-oriented language such as Python. Program structure: elementary data types, statements, control flow, functions, classes, objects, methods. Lists; searching, sorting and complexity.  This course is intended for students having a serious interest in higher level computer science courses, or planning to complete a computer science program.

Prerequisite: Grade 12 Calculus and Vectors and one other Grade 12 mathematics course.
Exclusion: CSCA20H3, CSC108H, CSC120H. CSCA08H3 may not be taken after or concurrently with CSCA48H3.
Breadth Requirements: Quantitative Reasoning
Note: This course does not require any prior exposure to computer programming.

CSCA20H3 - Introduction to Programming

An introduction to computer programming, with an emphasis on gaining practical skills. Introduction to programming, software tools, database manipulation. This course is appropriate for students with an interest in programming and computers who do not plan to pursue a Computer Science program.

Exclusion: CSCA08H3, CSC108H, CSC120H
Breadth Requirements: Quantitative Reasoning
Note: This course does not require any prior exposure to computer programming.

CSCA48H3 - Introduction to Computer Science II

Abstract data types and data structures for implementing them. Linked data structures. Object Oriented Programming. Encapsulation and information-hiding. Testing. Specifications. Analyzing the efficiency of programs. Recursion.

Prerequisite: CSCA08H3
Exclusion: CSC148H
Breadth Requirements: Quantitative Reasoning

CSCA67H3 - Discrete Mathematics

Introduction to discrete mathematics: Elementary combinatorics; discrete probability including conditional probability and independence; graph theory including trees, planar graphs, searches and traversals, colouring. The course emphasizes topics of relevance to computer science, and exercises problem-solving skills and proof techniques such as well ordering, induction, contradiction, and counterexample.
Same as MATA67H3

Prerequisite: Grade 12 Calculus and Vectors and one other Grade 12 mathematics course
Exclusion: MATA67H3, (CSCA65H3), CSC165H, CSC240H, MAT102H
Recommended Preparation: CSCA08H3 or CSCA20H3
Breadth Requirements: Quantitative Reasoning

CSCB07H3 - Software Design

An introduction to software design and development concepts, methods, and tools, using a statically-typed object-oriented language such as Java. Topics from: version control, build management, unit testing, refactoring, object-oriented design and development, design patterns and advanced IDE usage.

Prerequisite: CSCA48H3 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: CSC207H
Breadth Requirements: Quantitative Reasoning

CSCB09H3 - Software Tools and Systems Programming

Software techniques in a Unix-style environment, using scripting languages and a machine-oriented programming language (typically C). What goes on in the system when programs are executed. Core topics: creating and using software tools, pipes and filters, file processing, shell programming, processes, system calls, signals, basic network programming.

Prerequisite: CSCA48H3 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: CSC209H
Breadth Requirements: Quantitative Reasoning

CSCB20H3 - Introduction to Databases and Web Applications

A practical introduction to databases and Web app development. Databases: terminology and applications; creating, querying and updating databases; the entity-relationship model for database design. Web documents and applications: static and interactive documents; Web servers and dynamic server-generated content; Web application development and interface with databases.

Prerequisite: Some experience with programming in an imperative language such as Python, Java or C.
Exclusion: This course may not be taken after - or concurrently with - any C- or D-level CSC course.
Recommended Preparation: CSCA08H3 or CSCA20H3
Breadth Requirements: Quantitative Reasoning

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]
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 CSCC43H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
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: 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: CSC411H, (CSCD11H3)
Recommended Preparation: CSCC37H3
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 [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

CSCD25H3 - Advanced Data Analysis

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]
Enrolment Limits: 40
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