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: This is a Science course
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 www.cs.toronto.edu/dcs, Choose Programs & Courses > Undergraduate Courses > Choosing Your First Year Courses.


Class TimeCheck current enrolment

FL0101MWF9D. Heap
 L5101W6-8 
  W8 
SL0101TRF9G. Baumgartner

Course Rating & Comments

CSC108H1    Introduction to Computer Programming[36L/12T/12P]

Structure of computers; the computing environment. Programming in a language such as Python. Program structure: elementary data types, statements, control flow, functions, classes, objects, methods, fields. Lists; searching, sorting and complexity. Practical (P) sections consist of supervised work in the computing laboratory. These sections are offered when facilities are available, and attendance is required.

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

Exclusion: CSC120H1, CSC148H1, CSC150H1
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101TBAP. Gries
 L0201MWF10J. Campbell
 L0202MWF10T. Fairgrieve
 L0301MWF1J. Campbell
 L5101W6-9T. Fairgrieve
 T0101Cancel 
 T0201Cancel 
 T0301Cancel 
 T0401Cancel 
 T0501Cancel 
 T0601Cancel 
 T0701Cancel 
 T0801Cancel 
 T0901Cancel 
 T1001Cancel 
 T5101Cancel 
 T5201Cancel 
SL0101TBAJ. Campbell
 L0201MWF10T. Fairgrieve
 L5101W6-9T. Fairgrieve
 T0101Cancel 
 T0201Cancel 
 T0301Cancel 
 T0401Cancel 
 T0501Cancel 
 T0601Cancel 
 T5101Cancel 
 T5201Cancel 

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

Class TimeCheck current enrolment

SL0101MW10Tba
 L5101Cancel 
 T0101T3-5 
 T5101T5-7 

Course Rating & Comments

CSC148H1    Introduction to Computer Science[24L/12T/12P]

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 in a language such as Python, C++, or Java, 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
Exclusion: CSC150H1; you may not take this course after taking more than two CSC courses at the 200-level or higher
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MW9D. Liu
 L0201MW10D. Liu
 T0101R9-11 
 T0201R11-1 
 T0301Cancel 
 T5101R7-9 
SL0101MW9D. Horton
 L0201MW10D. Heap
 L5101W6-8D. Heap
 T0101R9-11 
 T0201R11-1 
 T0301R1-3 
 T0401R3-5 
 T0501F11-1 
 T0601Cancel 
 T5101R5-7 
 T5201R7-9 

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: CSC108H1/CSC148H1
Exclusion: CSC236H1, CSC240H1; MAT102H5 (University of Toronto Mississauga)
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

200-level courses

Class TimeCheck current enrolment

FL0101MWF11D. Heap
  T9-11D. Heap
 L0201MWF12D. Heap
  M7-9D. Heap
 L5101T6-9Tba
  R7-9Tba
SL0101MWF11Tba
  T2-4Tba
 L0201MWF2Tba
  R2-4Tba

Course Rating & Comments

CSC200Y1    Economic and Social Networks: Models and Applications[48L/24T]

The course will provide an informal, but rigourous treatment of a variety of topics, introducing students to the relevant background in graph theory, social network formation, incentives and game theory, and providing exposure to the relevant mathematical and computational tools required to analyze relevant phenomenon. Topics may include: structural analysis of social networks, matching markets, trading networks, web search, information cascades, prediction markets, and online advertising, among others.

Distribution Requirement Status: This is a Science course
Breadth Requirement: Society and its Institutions (3) + The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

YL0101MWF3Borodin/Boutilier

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: CSC148H1/CSC150H1
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101M12M. Abdelrazik Mansour Abdelk
  WF12M. Abdelrazik Mansour Abdelk
 L0201M2M. Abdelrazik Mansour Abdelk
  WF2M. Abdelrazik Mansour Abdelk
 L5101W5M. Abdelrazik Mansour Abdelk
  W6-8M. Abdelrazik Mansour Abdelk
 T0101Cancel 
 T0201Cancel 
 T0301Cancel 
 T5101Cancel 
SL0101M1J. Campbell
  WF1J. Campbell
 L0201Cancel 
 L2003MWF1J. Campbell
 T0101Cancel 
 T0201Cancel 

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/enrolment in Bioinformatics and Computational Biology (BCB) subject POSt
Exclusion: CSC372H1, CSC369H1, CSC469H1
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101TR1M. Craig
 L2003TR1M. Craig
 T0101F11 
 T0201F12 
SL0101MW12K. 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 (including the Master Theorem); 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 proceeeding directly into CSC236H1.

Prerequisite: CSC148H1/CSC150H1, CSC165H1
Exclusion: CSC240H1
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101M11G. Baumgartner
  WF11G. Baumgartner
 L0201R10 
  R11-1 
 L2503Cancel 
 L5101R6G. Baumgartner
  R7-9G. Baumgartner
SL0101TR1G. Baumgartner
  R2G. Baumgartner
 L0201Cancel 
 L2003TR1G. Baumgartner
  R2G. Baumgartner

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
Exclusion: CSC236H1
Recommended Preparation: first term of MAT137Y1/MAT157Y1
Distribution Requirement Status: This is a Science course
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: CSC148H1/CSC150H1, CSC165H1/CSC240H1
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101Cancel 
 L5101T6-9S. Engels
  R6-9S. Engels
SL0101MWF11S. Engels
  T3-6S. Engels
 L5101M6-9S. Engels
  T6-9S. Engels

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: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101T10F. Pitt
  R10-12F. Pitt
 L2003T10F. Pitt
  R10-12F. Pitt
SL0101MWF2M. Craig
 L0201MWF3M. Craig
 L2503Cancel 
 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: This is a Science course
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

FL0101M10-12F. Ellen
  R11F. Ellen

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: This is a Science course
Breadth Requirement: Society and its Institutions (3)

Class TimeCheck current enrolment

FL0101W3-6S. Engels
 L5101Cancel 
SL5101R6-8M. Abdelrazik Mansour Abdelk
  R8M. Abdelrazik Mansour Abdelk

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: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101TR10M. Abdelrazik Mansour Abdelk
  R11M. Abdelrazik Mansour Abdelk
SL2503M6-9M. Abdelrazik Mansour Abdelk
 L5101M6-9M. Abdelrazik Mansour Abdelk

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 modeling and analysis.

Prerequisite: CSC301H1
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

SL0101TR10M. Abdelrazik Mansour Abdelk
  R11M. Abdelrazik Mansour Abdelk

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, CSC343H1
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101T2E. Delara
  R1-3E. Delara
 L0201MWF3E. Delara
 L2001T2E. Delara
  R1-3E. Delara
SL0101MW10Tba
  F10Tba
 L2001MWF10Tba
 L5101W6-9Tba

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/CSC260H1; STA247H1/STA255H1/STA257H1/STA107H1; (MAT135H1, MAT136H1)/ MAT135Y1/MAT137Y1/MAT157Y1, MAT221H1/MAT223H1/MAT240H1
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101Cancel 

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. Enrolment limited, but non-computer scientists welcome.

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: This is a Science course
Breadth Requirement: None

Class TimeCheck current enrolment

FL0101R12Tba
  R1-3Tba
 L2001R12Tba
  R1-3Tba
 L2501M6Tba
  M7-9Tba
 L5101M6Tba
  M7-9Tba
SL0101T4-6Tba
  T6Tba
 L0201MWF11Tba
 L2001Cancel 
 L2501Cancel 
 L5101Cancel 

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++); (MAT135H1, MAT136H1)/MAT135Y1/MAT137Y1/MAT157Y1, MAT221H1/MAT223H1/MAT240H1
Distribution Requirement Status: This is a Science course
Breadth Requirement: None

Class TimeCheck current enrolment

FL0101MWF2Tba
 L2001MWF2Tba
SL2501W6-9K. Kutulakos
 L5101W6-9K. 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: (MAT135H1, MAT136H1)/MAT135Y1/MAT137Y1/MAT157Y1, MAT221H1/MAT223H1/MAT240H1; STA247H1/STA255H1/STA257H1
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

SL0101TR1Tba
  R12Tba
 L2001TR1Tba
  R12Tba
 L2501T6-9Tba
 L5101T6-9Tba

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: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF11 
 L2003MWF11 
 L5101R6D. Liu
  R7-9D. Liu
SL0101MW2D. Liu
  F2D. Liu
 L5101R6-9D. Liu

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: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF11K. Jackson
 L2003Cancel 
SL5101M6C. Christara
  M7-9C. Christara

Course Rating & Comments

CSC343H1    Introduction to Databases[24L/12T]

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

Prerequisite: CSC165H1/CSC240H1/(MAT135H1, MAT136H1) /MAT135Y1/MAT137Y1/MAT157Y1; CSC207H1 Prerequisite for Engineering students only: ECE345/CSC190/CSC192
Exclusion: CSC434H1
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101T1-3D. Horton
  R1D. Horton
 L0201W1-3D. Horton
  F1D. Horton
 L2001T1-3D. Horton
  R1D. Horton
 L2003W1-3D. Horton
  F1D. Horton
 L2501T6-9 
 L2503Cancel 
 L5101T6-9Tba
SL0101MWF12D. Horton
 L0201MWF2D. Horton
 L2001MWF12D. Horton
 L2005Cancel 
 L2201MWF2D. Horton
 L2501T6-8D. Liu
  T8D. Liu
 L2505Cancel 
 L5101T6-8D. Liu
  T8D. Liu

Course Rating & Comments

CSC358H1    Principles of Computer Networks[24L/12T]

Introduction to computer networks with an emphasis on fundamental principles. Basic understanding of computer networks and network protocols. Topics include network hardware and software, routing, addressing, congestion control, reliable data transfer, performance analysis, local area networks, and TCP/IP.

Prerequisite: CSC209H1, CSC258H1, CSC263H1/CSC265H1, STA247H1/STA255H1/STA257H1/ECO227Y1
Distribution Requirement Status: This is a Science course
Breadth Requirement: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

SL0101M10P. Marbach
  R3-5P. Marbach
 L5101T6-9Tba