Also check out our Live Library Workstation Availability page (St George only).

CSC104H1 Computational Thinking[24L/12T]

Humans have solved problems for millennia on computing devices by representing data as diverse numbers, text, images, sound and genomes, and then transforming the data. A gentle introduction to designing programs (recipes) for systematically solving problems that crop up in diverse domains such as science, literature, and graphics. Social and intellectual issues raised by computing. Algorithms, hardware, software, operating systems, the limits of computation.

Note: you may not take this course concurrently with any Computer Science course, but you may take CSC108H1/CSC148H1 after CSC104H1.

Exclusion: Any Computer Science courseDistribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

Choosing first year courses

To help you select the programming course that is right for you, see http://web.cs.toronto.edu/program/ugrad/courses_ug/1st.htm

**Class Time** – Check current enrolment

F | L0101 | MWF11 | D Heap |

| L0201 | MWF12-1 | D Heap |

| T0101 | W10 | |

| T0201 | W11 | |

| T0301 | W12-1 | |

| T0401 | W1 | |

S | L0101 | MWF11 | G Baumgartner |

| L0201 | MWF12-1 | G Baumgartner |

| T0101 | W10 | |

| T0201 | W11 | |

| T0301 | W12-1 | |

| T0401 | W3 |

CSC108H1 Introduction to Computer Programming[36L]

Programming in a language such as Python. Elementary data types, lists, maps. Program structure: control flow, functions, classes, objects, methods. Algorithms and problem solving. Searching, sorting, and complexity. Unit testing. No prior programming experience required.

NOTE: You may not take this course concurrently with CSC120H1/CSC148H1, but you may take CSC148H1 after CSC108H1.

Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

F | L0101 | MWF10 | E De Lara |

| L0102 | MWF10 | J Smith |

| L0201 | MWF1 | E De Lara |

| L5101 | W6-9 | J Smith |

| L9901 | - | P Gries |

S | L0101 | MWF10 | T Fairgrieve |

| L5101 | W6-9 | T Fairgrieve |

| L9901 | - | P Gries |

CSC120H1 Computer Science for the Sciences[24L/12P]

An introduction to computer science for students in other sciences, with an emphasis on gaining practical skills. Introduction to programming with examples and exercises appropriate to the sciences; web programming; software tools. Topics from: database design, considerations in numerical calculation, using UNIX/LINUX systems. At the end of this course you will be able to develop computer tools for scientific applications, such as the structuring and analysis of experimental data. With some additional preparation, you will also be ready to go on to CSC148H1. Practical (P) sections consist of supervised work in the computer laboratory. No programming experience is necessary.

Exclusion: Any CSC course, with the exception of CSC104H1Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

F | L0101 | TR1 | T Fairgrieve |

R3-5 | T Fairgrieve |

CSC121H1 Computer Science for Statistics[24L/12P]

An introduction to computer science for students planning to use computers for statistical analysis and research. Using a statistical programming environment, fundamental programming concepts, and computational topics relevant to statistics, such as issues with numerical calculation, random number generation, and management of data. Practicals consist of supervised work in the computer laboratory to reinforce concepts and develop programming skills. No previous programming experience is necessary. Please consult with the CS Undergraduate office if you intend to continue on to CSC148H1.

Exclusion: Any CSC course, with the exception of CSC104H1Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

S | L0101 | TF1 | |

W1-3 |

CSC148H1 Introduction to Computer Science[36L/24P]

Abstract data types and data structures for implementing them. Linked data structures. Encapsulation and information-hiding. Object-oriented programming. Specifications. Analyzing the efficiency of programs. Recursion. This course assumes programming experience as provided by CSC108H1. Students who already have this background may consult the Computer Science Undergraduate Office for advice about skipping CSC108H1. Practical (P) sections consist of supervised work in the computing laboratory. These sections are offered when facilities are available, and attendance is required. NOTE: Students may go to their college to drop down from CSC148H1 to CSC108H1. See above for the drop down deadline.

Prerequisite: CSC108H1/(equivalent programming experience)Exclusion: CSC150H1

Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

F | L0101 | MWF10 | D Horton |

| L0201 | MWF2 | D Liu |

| T0101 | R9-11 | |

| T0201 | R11-1 | |

| T0301 | R1-3 | |

| T5101 | R7-9 | |

S | L0101 | MWF10 | D Heap |

| L0201 | MWF1 | J Smith |

| L0301 | MWF9 | B Simion |

| L5101 | W6-9 | D Heap |

| T0101 | R9-11 | |

| T0201 | R11-1 | |

| T0301 | R1-3 | |

| T0401 | R3-5 | |

| T0501 | F11-1 | |

| T5101 | R5-7 | |

| T5201 | R7-9 | |

| T5301 | F5-7 |

CSC165H1 Mathematical Expression and Reasoning for Computer Science[36L/24T]

Introduction to abstraction and rigour. Informal introduction to logical notation and reasoning. Understanding, using and developing precise expressions of mathematical ideas, including definitions and theorems. Structuring proofs to improve presentation and comprehension. General problem-solving techniques. Running time analysis of iterative programs. Formal definition of Big-Oh. Diagonalization, the Halting Problem, and some reductions. Unified approaches to programming and theoretical problems.

Corequisite: CSC148H1/(CSC108H1/CSC120H1, MAT137Y1/MAT157Y1)Exclusion: CSC236H1, CSC240H1

Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

200-level courses

**Class Time** – Check current enrolment

F | L0101 | MWF11 | T Fairgrieve |

T9-11 | T Fairgrieve | ||

| L5101 | T6-9 | T Fairgrieve |

R7-9 | T Fairgrieve | ||

S | L0101 | MF11-1 | D Liu |

W11 | D Liu | ||

| L0201 | MF2-4 | T Pitassi |

W12-1 | T Pitassi | ||

| L0301 | W2 | D Liu |

R3-5 | D Liu | ||

F11-1 | D Liu | ||

| L5101 | M6-9 | T Pitassi |

R6-8 | T Pitassi |

CSC204H1 Collaborating with Computer Scientists[48L/24P]

This course teaches the language, culture, and communication mechanisms necessary for effective collaboration on large-scale software projects involving both computer scientists and non-computer scientists. This course is intended for students with little or no computer science background.

Distribution Requirement Status: HumanitiesBreadth Requirement: The Physical and Mathematical Universes (5)

**Class Time**

Not Available (Possibly Cancelled)

CSC207H1 Software Design[24L/12T]

An introduction to software design and development concepts, methods, and tools using a statically-typed object-oriented programming language such as Java. Topics from: version control, unit testing, refactoring, object-oriented design and development, design patterns, advanced IDE usage, regular expressions, and reflection. Representation of ï¬‚oating-point numbers and introduction to numerical computation.

Prerequisite: 60% or higher in CSC148H1/CSC150H1Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

F | L0101 | TWF10 | |

| L0201 | T2 | |

WF12-1 | |||

| L0301 | F1 | P Gries |

F2-4 | P Gries | ||

| L2000 | TWF10 | |

| L5101 | W5 | |

W6-8 | |||

S | L0101 | MWF12-1 | P Gries |

| L0201 | MWF1 | P Gries |

| L2000 | MWF12-1 | |

| L2003 | MWF1 |

CSC209H1 Software Tools and Systems Programming[24L/12T]

Software techniques in a Unix-style environment, using scripting languages and a machine-oriented programming language (typically C). What goes on in the operating 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: CSC207H1Exclusion: CSC372H1, CSC369H1, CSC469H1

Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

F | L0101 | TR1 | |

| L0201 | TR4 | |

| L2003 | TR1 | |

| T0101 | F10 | |

| T0201 | F11 | |

| T0301 | F12-1 | |

S | L0101 | MW10 | K Reid |

| L0201 | MW12-1 | K Reid |

| L5101 | W6-8 | K Reid |

| T0101 | F1 | |

| T0201 | F2 | |

| T0301 | F3 | |

| T5101 | W8 |

CSC236H1 Introduction to the Theory of Computation[24L/12T]

The application of logic and proof techniques to Computer Science. Mathematical induction; correctness proofs for iterative and recursive algorithms; recurrence equations and their solutions; introduction to automata and formal languages. This course assumes university-level experience with proof techniques and algorithmic complexity as provided by CSC165H1. Very strong students who already have this experience (e.g. successful completion of MAT157Y1) may consult the undergraduate office about proceeding directly into CSC236H1.

Prerequisite: 60% or higher in CSC148H1/CSC150H1, 60% or higher in CSC165H1Exclusion: CSC240H1

Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

F | L0101 | MWF11 | A Chinaei |

| L0201 | MWF1 | A Chinaei |

| L0301 | MWF12-1 | |

| L2000 | MWF11 | |

| L5101 | R6-8 | D Heap |

R8 | D Heap | ||

S | L0101 | MWF11 | J Smith |

| L2000 | MWF11 | |

| L5101 | R6 | J Smith |

R7-9 | J Smith |

CSC240H1 Enriched Introduction to the Theory of Computation[24L/12T]

The rigorous application of logic and proof techniques to Computer Science. Propositional and predicate logic; mathematical induction and other basic proof techniques; correctness proofs for iterative and recursive algorithms; recurrence equations and their solutions (including the Master Theorem); introduction to automata and formal languages. This course covers the same topics as CSC236H1, together with selected material from CSC165H1, but at a faster pace, in greater depth and with more rigour, and with more challenging assignments. Greater emphasis will be placed on proofs and theoretical analysis. Certain topics briefly mentioned in CSC165H1 or CSC236H1 may be covered in more detail in this course, and some additional topics may also be covered.

NOTE: Students may go to their college to drop down from CSC240H1 to CSC165H1 (or to CSC236H1 if they have already passed CSC165H1). See above for the drop down deadline.

Corequisite: CSC148H1/CSC150H1; MAT137Y1/MAT157Y1Exclusion: CSC236H1

Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

S | L0101 | MWF11 | F Ellen |

CSC258H1 Computer Organization[24L/12T/13P]

Computer structures, machine languages, instruction execution, addressing techniques, and digital representation of data. Computer system organization, memory storage devices, and microprogramming. Block diagram circuit realizations of memory, control and arithmetic functions. There are a number of laboratory periods in which students conduct experiments with digital logic circuits.

Prerequisite: 60% or higher in CSC148H1/CSC150H1, 60% or higher in CSC165H1/CSC240H1Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

F | L0101 | MWF11 | |

W6-9 | |||

| L5101 | TR6-9 | |

S | L0101 | MWF11 | S Engels |

W6-9 | S Engels | ||

| L0201 | MWF1 | S Engels |

M6-9 | S Engels | ||

| L5101 | MT6-9 |

CSC263H1 Data Structures and Analysis[24L/12T]

Algorithm analysis: worst-case, average-case, and amortized complexity. Expected worst-case complexity, randomized quicksort and selection. Standard abstract data types, such as graphs, dictionaries, priority queues, and disjoint sets. A variety of data structures for implementing these abstract data types, such as balanced search trees, hashing, heaps, and disjoint forests. Design and comparison of data structures. Introduction to lower bounds.

Prerequisite: CSC207H1, CSC236H1/CSC240H1; STA247H1/STA255H1/STA257H1Exclusion: CSC265H1

Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

F | L0101 | W12-2 | D Liu |

F10 | D Liu | ||

| L0201 | W4-6 | D Liu |

F1 | D Liu | ||

| L2000 | W4-6 | |

F1 | |||

| L2001 | W12-2 | |

F10 | |||

| L2003 | W12-2 | |

F10 | |||

| L2201 | W4-6 | |

F1 | |||

S | L0101 | MWF2 | S Toueg |

| L0201 | MWF3 | S Toueg |

| L0301 | MWF4 | |

| L2000 | MWF2 | |

| L5101 | R6-8 | F Pitt |

R8 | F Pitt |

CSC265H1 Enriched Data Structures and Analysis[24L/12T]

This course covers the same topics as CSC263H1, but at a faster pace, in greater depth and with more rigour, and with more challenging assignments. Greater emphasis will be placed on proofs, theoretical analysis, and creative problem-solving. Certain topics briefly mentioned in CSC263H1 may be covered in more detail in this course, and some additional topics may also be covered. Students without the exact course prerequisites but with a strong mathematical background are encouraged to consult the Department about the possibility of taking this course.

NOTE: Students may go to their college to drop down from CSC265H1 to CSC263H1. See above for the drop down deadline.

Prerequisite: CSC240H1 or an A- in CSC236H1Corequisite: STA247H1/STA255H1/STA257H1

Exclusion: CSC263H1

Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

300-level courses

If you are not in our Major or Specialist program, you are limited to three 300-/400-level CSC/ECE half-courses.

**Class Time** – Check current enrolment

F | L0101 | T2-4 | A Nikolov |

R3 | A Nikolov |

CSC300H1 Computers and Society[24L/12T]

Privacy and Freedom of Information; recent Canadian legislation and reports. Computers and work; employment levels, quality of working life. Electronic fund transfer systems; transborder data flows. Computers and bureaucratization. Computers in the home; public awareness about computers. Robotics. Professionalism and the ethics of computers. The course is designed not only for science students, but also those in social sciences or humanities.

Prerequisite: Any half-course on computingDistribution Requirement Status: Science

Breadth Requirement: Society and its Institutions (3)

**Class Time** – Check current enrolment

F | L0101 | W3-5 | S Easterbrook |

W5 | S Easterbrook | ||

| L5101 | W6 | M Zaleski |

W7-9 | M Zaleski | ||

S | L0101 | R3-5 | |

R5 | |||

| L5101 | R6-8 | |

R8 |

CSC301H1 Introduction to Software Engineering[24L/12T]

An introduction to agile development methods appropriate for medium-sized teams and rapidly-moving projects. Basic software development infrastructure; requirements elicitation and tracking; estimation and prioritization; teamwork skills; basic UML; design patterns and refactoring; security, discussion of ethical issues, and professional responsibility.

Prerequisite: CSC209H1, CSC263H1/CSC265H1Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

F | L0101 | M12-2 | Y Freund |

T12-1 | Y Freund | ||

| L5101 | M6-8 | Y Freund |

M8 | Y Freund | ||

S | L0101 | T12-2 | Y Freund |

R1 | Y Freund | ||

| L2503 | M6-8 | |

M8 | |||

| L5101 | M6-8 | Y Freund |

M8 | Y Freund |

CSC302H1 Engineering Large Software Systems[24L/12T]

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

Prerequisite: CSC301H1Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

S | L0101 | MWF4 | M Zaleski |

CSC304H1 Algorithmic Game Theory and Mechanism Design[24L/12P]

A mathematical and computational introduction to game theory and mechanism design. Topics include games in matrix and extensive form, equilibria and price of anarchy, matching markets, auctions, network externalities, tipping points, voting theory. This course is intended for economics, mathematics, and computer science students.

Prerequisite: STA247H1/STA255H1/STA257H1/PSY201H1/ECO227Y1, (MAT135H1, MAT136H1)/MAT137Y1/MAT157Y1Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

F | L0101 | MWF3 | A Borodin |

CSC309H1 Programming on the Web[24L/12T]

An introduction to software development on the web. Concepts underlying the development of programs that operate on the web; survey of technological alternatives; greater depth on some technologies. Operational concepts of the internet and the web, static client content, dynamic client content, dynamically served content, n-tiered architectures, web development processes, and security on the web. Assignments involve increasingly more complex web-based programs. Guest lecturers from leading e-commerce firms will describe the architecture and operation of their web sites.

Prerequisite: CSC209H1Recommended Preparation: CSC343H1

Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

F | L0101 | T1 | K Reid |

R1-3 | K Reid | ||

| L0201 | MWF3 | K Reid |

| L2001 | T1 | |

R1-3 | |||

S | L0101 | MWF10 | A Chinaei |

| L2001 | MWF10 | |

| L2501 | M6-8 | |

M8 | |||

| L5101 | M6-8 | A Chinaei |

M8 | A Chinaei |

CSC310H1 Information Theory[24L/12T]

Measuring information. The source coding theorem. Data compression using ad hoc methods and dictionary-based methods. Probabilistic source models, and their use via Huffman and arithmetic coding. Noisy channels and the channel coding theorem. Error correcting codes, and their decoding by algebraic and probabilistic methods.

Prerequisite: 60% or higher in CSC148H1/CSC150H1; STA247H1/STA255H1/STA257H1/STA107H1; (MAT135H1, MAT136H1)/ MAT135Y1/MAT137Y1/MAT157Y1, MAT221H1/MAT223H1/MAT240H1Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time**

Not Available (Possibly Cancelled)

CSC318H1 The Design of Interactive Computational Media[24L/12T]

User-centred design of interactive systems; methodologies, principles, and metaphors; task analysis. Interdisciplinary design; the role of graphic design, industrial design, and the behavioural sciences. Interactive hardware and software; concepts from computer graphics. Typography, layout, colour, sound, video, gesture, and usability enhancements. Classes of interactive graphical media; direct manipulation systems, extensible systems, rapid prototyping tools. Students work on projects in interdisciplinary teams.

Prerequisite: Any CSC half-courseRecommended Preparation: CSC300H1 provides useful background for work in CSC318H1, so if you plan to take CSC300H1 then you should do it before CSC318H1

Distribution Requirement Status: Science

Breadth Requirement: None

**Class Time** – Check current enrolment

F | L0101 | TR10 | |

R9 | |||

| L2001 | TR10 | |

R9 | |||

| L2501 | M6 | |

M7-9 | |||

| L5101 | M6 | |

M7-9 | |||

S | L0101 | MWF11 | |

| L0201 | T4-6 | |

T6 | |||

| L2001 | T4-6 | |

T6 |

CSC320H1 Introduction to Visual Computing[24L/12P]

Image synthesis and image analysis aimed at students with an interest in computer graphics, computer vision, or the visual arts. Focus on three major topics: (1) visual computing principles—computational and mathematical methods for creating, capturing, analyzing, and manipulating digital photographs (image acquisition, basic image processing, image warping, anti-aliasing); (2) digital special effects—applying these principles to create special effects found in movies and commercials; (3) visual programming—using C/C++ and OpenGL to create graphical user interfaces for synthesizing and manipulating photographs. The course requires the ability to use differential calculus in several variables and linear algebra.

Prerequisite: CSC209H1/(CSC207H1, proficiency in C or C++); MAT221H1/MAT223H1/MAT240H1, (MAT136H1 with a minimum mark of 77)/(MAT137Y1 with a minimum mark of 73)/(MAT157Y1 with a minimum mark of 67)/MAT235Y1/MAT237Y1/MAT257Y1Recommended Preparation: MAT235Y1/MAT237Y1/MAT257Y1

Distribution Requirement Status: Science

Breadth Requirement: None

**Class Time** – Check current enrolment

S | L0101 | MWF2 | K Kutulakos |

| L2501 | W6-8 | |

W8 | |||

| L5101 | W6-8 | K Kutulakos |

W8 | K Kutulakos |

CSC321H1 Introduction to Neural Networks and Machine Learning[24L/12P]

The first half of the course is about supervised learning for regression and classification problems and will include the perceptron learning procedure, backpropagation, and methods for ensuring good generalisation to new data. The second half of the course is about unsupervised learning methods that discover hidden causes and will include K-means, the EM algorithm, Boltzmann machines, and deep belief nets.

Prerequisite: (MAT136H1 with a minimum mark of 77)/(MAT137Y1 with a minimum mark of 73)/(MAT157Y1 with a minimum mark of 67)/MAT235Y1/MAT237Y1/MAT257Y1, MAT221H1/MAT223H1/MAT240H1; STA247H1/STA255H1/STA257H1Recommended Preparation: MAT235Y1/MAT237Y1/MAT257Y1

Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

S | L0101 | TR1 | R Grosse |

R2 | R Grosse | ||

| L2001 | TR1 | |

R2 | |||

| L2501 | T6-8 | |

T8 | |||

| L5101 | T6-8 | R Grosse |

T8 | R Grosse |

CSC324H1 Principles of Programming Languages[24L/12T]

Programming principles common in modern languages; details of commonly used paradigms. The structure and meaning of code. Scope, control flow, datatypes, and parameter passing. Two non-procedural, non-object-oriented programming paradigms: functional programming (illustrated by languages such as Lisp/Scheme, ML or Haskell) and logic programming (typically illustrated in Prolog).

Prerequisite: CSC263H1/CSC265H1Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

F | L0101 | MWF11 | |

| L2003 | MWF11 | |

| L5101 | R6 | |

R7-9 | |||

S | L0101 | MWF2 | G Baumgartner |

CSC336H1 Numerical Methods[24L/12T]

The study of computational methods for solving problems in linear algebra, non-linear equations, and approximation. The aim is to give students a basic understanding of both floating-point arithmetic and the implementation of algorithms used to solve numerical problems, as well as a familiarity with current numerical computing environments.

Prerequisite: CSC148H1/CSC150H1; MAT133Y1(70%)/(MAT135H1, MAT136H1)/MAT135Y1/MAT137Y1/MAT157Y1, MAT221H1/MAT223H1/MAT240H1Exclusion: CSC350H1, CSC351H1

Distribution Requirement Status: Science

Breadth Requirement: The Physical and Mathematical Universes (5)

**Class Time** – Check current enrolment

F | L0101 | MWF11 | K Jackson |

| L2003 | MWF11 | |

S | L5101 | T6 | C Christara |

T7-9 | C Christara |