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

Course Rating & Comments

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 course
Distribution 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 TimeCheck current enrolment

FL0101MWF11D Heap
 L0201MWF12-1D Heap
 T0101W10
 T0201W11
 T0301W12-1
 T0401W1
SL0101MWF11G Baumgartner
 L0201MWF12-1G Baumgartner
 T0101W10
 T0201W11
 T0301W12-1
 T0401W3

Course Rating & Comments

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.

Exclusion: CSC120H1, CSC121H1, CSC148H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF10E De Lara
 L0102MWF10J Smith
 L0201MWF1E De Lara
 L5101W6-9J Smith
 L9901-P Gries
SL0101MWF10T Fairgrieve
 L5101W6-9T Fairgrieve
 L9901-P Gries

Course Rating & Comments

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 CSC104H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101TR1T Fairgrieve
  R3-5T 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 CSC104H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

SL0101TF1
  W1-3

Course Rating & Comments

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 TimeCheck current enrolment

FL0101MWF10D Horton
 L0201MWF2D Liu
 T0101R9-11
 T0201R11-1
 T0301R1-3
 T5101R7-9
SL0101MWF10D Heap
 L0201MWF1J Smith
 L0301MWF9B Simion
 L5101W6-9D Heap
 T0101R9-11
 T0201R11-1
 T0301R1-3
 T0401R3-5
 T0501F11-1
 T5101R5-7
 T5201R7-9
 T5301F5-7

Course Rating & Comments

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 TimeCheck current enrolment

FL0101MWF11T Fairgrieve
  T9-11T Fairgrieve
 L5101T6-9T Fairgrieve
  R7-9T Fairgrieve
SL0101MF11-1D Liu
  W11D Liu
 L0201MF2-4T Pitassi
  W12-1T Pitassi
 L0301W2D Liu
  R3-5D Liu
  F11-1D Liu
 L5101M6-9T Pitassi
  R6-8T 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: Humanities
Breadth Requirement: The Physical and Mathematical Universes (5)

Class Time

Not Available (Possibly Cancelled)

Course Rating & Comments

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 floating-point numbers and introduction to numerical computation.

Prerequisite: 60% or higher in CSC148H1/CSC150H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101TWF10
 L0201T2
  WF12-1
 L0301F1P Gries
  F2-4P Gries
 L2000TWF10
 L5101W5
  W6-8
SL0101MWF12-1P Gries
 L0201MWF1P Gries
 L2000MWF12-1
 L2003MWF1

Course Rating & Comments

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: CSC207H1
Exclusion: CSC372H1, CSC369H1, CSC469H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101TR1
 L0201TR4
 L2003TR1
 T0101F10
 T0201F11
 T0301F12-1
SL0101MW10K Reid
 L0201MW12-1K Reid
 L5101W6-8K Reid
 T0101F1
 T0201F2
 T0301F3
 T5101W8

Course Rating & Comments

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 CSC165H1
Exclusion: CSC240H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF11A Chinaei
 L0201MWF1A Chinaei
 L0301MWF12-1
 L2000MWF11
 L5101R6-8D Heap
  R8D Heap
SL0101MWF11J Smith
 L2000MWF11
 L5101R6J Smith
  R7-9J Smith

Course Rating & Comments

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/MAT157Y1
Exclusion: CSC236H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

SL0101MWF11F Ellen

Course Rating & Comments

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/CSC240H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF11
  W6-9
 L5101TR6-9
SL0101MWF11S Engels
  W6-9S Engels
 L0201MWF1S Engels
  M6-9S Engels
 L5101MT6-9

Course Rating & Comments

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/STA257H1
Exclusion: CSC265H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101W12-2D Liu
  F10D Liu
 L0201W4-6D Liu
  F1D Liu
 L2000W4-6
  F1
 L2001W12-2
  F10
 L2003W12-2
  F10
 L2201W4-6
  F1
SL0101MWF2S Toueg
 L0201MWF3S Toueg
 L0301MWF4
 L2000MWF2
 L5101R6-8F Pitt
  R8F Pitt

Course Rating & Comments

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 CSC236H1
Corequisite: 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 TimeCheck current enrolment

FL0101T2-4A Nikolov
  R3A Nikolov

Course Rating & Comments

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 computing
Distribution Requirement Status: Science
Breadth Requirement: Society and its Institutions (3)

Class TimeCheck current enrolment

FL0101W3-5S Easterbrook
  W5S Easterbrook
 L5101W6M Zaleski
  W7-9M Zaleski
SL0101R3-5
  R5
 L5101R6-8
  R8

Course Rating & Comments

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/CSC265H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101M12-2Y Freund
  T12-1Y Freund
 L5101M6-8Y Freund
  M8Y Freund
SL0101T12-2Y Freund
  R1Y Freund
 L2503M6-8
  M8
 L5101M6-8Y Freund
  M8Y Freund

Course Rating & Comments

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: CSC301H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

SL0101MWF4M 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/MAT157Y1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF3A Borodin

Course Rating & Comments

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: CSC209H1
Recommended Preparation: CSC343H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101T1K Reid
  R1-3K Reid
 L0201MWF3K Reid
 L2001T1
  R1-3
SL0101MWF10A Chinaei
 L2001MWF10
 L2501M6-8
  M8
 L5101M6-8A Chinaei
  M8A 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/MAT240H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class Time

Not Available (Possibly Cancelled)

Course Rating & Comments

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-course
Recommended 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 TimeCheck current enrolment

FL0101TR10
  R9
 L2001TR10
  R9
 L2501M6
  M7-9
 L5101M6
  M7-9
SL0101MWF11
 L0201T4-6
  T6
 L2001T4-6
  T6

Course Rating & Comments

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/MAT257Y1
Recommended Preparation: MAT235Y1/MAT237Y1/MAT257Y1
Distribution Requirement Status: Science
Breadth Requirement: None

Class TimeCheck current enrolment

SL0101MWF2K Kutulakos
 L2501W6-8
  W8
 L5101W6-8K Kutulakos
  W8K Kutulakos

Course Rating & Comments

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/STA257H1
Recommended Preparation: MAT235Y1/MAT237Y1/MAT257Y1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

SL0101TR1R Grosse
  R2R Grosse
 L2001TR1
  R2
 L2501T6-8
  T8
 L5101T6-8R Grosse
  T8R Grosse

Course Rating & Comments

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/CSC265H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF11
 L2003MWF11
 L5101R6
  R7-9
SL0101MWF2G Baumgartner

Course Rating & Comments

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/MAT240H1
Exclusion: CSC350H1, CSC351H1
Distribution Requirement Status: Science
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF11K Jackson
 L2003MWF11
SL5101T6C Christara
  T7-9C Christara