Also try our "Searchable" Subject Post Listings (2017-2018)

Course Rating & Comments

CSC104H1 - Computational Thinking Hours: 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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MF11D Heap
 L0201MF12-1D Heap
 L0301MF3J Smith
 T0101W10
 T0201W11
 T0301W12-1
 T0401W1
 T0501W2
SL0101MF11G Baumgartner
 L0201MF12-1G Baumgartner
 T0101W10
 T0201W11
 T0301W12-1
 T0401W3

Course Rating & Comments

CSC108H1 - Introduction to Computer Programming Hours: 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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF10J Campbell
 L0201MWF11J Smith
 L0301MWF1T Fairgrieve
 L0401MWF2T Fairgrieve
 L5101W6-9J Smith
 L9901-J Campbell
SL0101MWF1J Smith
 L0201MWF1P Gries
  T1-3P Gries
 L0301MWF2
 L5101W6-9P Gries
 L9901-J Smith
 T0201M4
 T0202W4
 T0203F4

Course Rating & Comments

CSC120H1 - Computer Science for the Sciences Hours: 36L/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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF1
  R3-5

CSC121H1 - Computer Science for Statistics Hours: 36L/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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

SL0101MWF12-1
  W1-3

Course Rating & Comments

CSC148H1 - Introduction to Computer Science Hours: 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: CSC207H1
Distribution Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF1D Horton
 L0201MWF2D Liu
 T0101R9-11
 T0201R11-1
 T0301R1-3
 T5101R7-9
SL0101MWF10D Heap
 L0201MWF11D Heap
 L0301MWF2
 L0401MWF3P Gries
 L5101W6-9
 T0101R9-11
 T0201R10-12
 T0301R11-1
 T0401R12-2
 T0501R1-3
 T0601R2-4
 T0701R3-5
 T0801R4-6
 T0901F11-1
 T1301F11-1
 T5101R5-7
 T5201R6-8
 T5301R7-9
 T5401F5-7
 T5501F6-8

Course Rating & Comments

CSC165H1 - Mathematical Expression and Reasoning for Computer Science Hours: 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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101T1D Heap
  T2-4D Heap
  R1-3D Heap
 L5101T6-8
  R6-9
SL0101MF11-1T Fairgrieve
  W11T Fairgrieve
 L0201MF2-4D Liu
  W12-1D Liu
 L0301W2T Pitassi
  R3-5T Pitassi
  F11-1T Pitassi
 L5101M6-9T Pitassi
  R6-8T Pitassi

 

CSC204H1 - Collaborating with Computer Scientists Hours: 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 Requirements: Humanities
Breadth Requirements: The Physical and Mathematical Universes (5)

Class Time

Not Available (Possibly Cancelled)

Course Rating & Comments

CSC207H1 - Software Design Hours: 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
Exclusion: CSC209H1
Distribution Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)
Note: Please note: The minimum prerequisite grade in CSC148H1 and CSC165H1/CSC240H1 is lower than the minimum grade for program admission. If you take this course when your grade in CSC148H1 or CSC165H1/CSC240H1 is lower than the requirement for program admission, you will be unable to enrol in a Computer Science program. If you hope to enrol in a Computer Science program in future, please ensure that you satisfy the program admission grade requirements in CSC148H1 and CSC165H1/CSC240H1 before completing any 200-level course. 

Class TimeCheck current enrolment

FL0101TWF10P Gries
 L0201T2P Gries
  WF11P Gries
 L0301F1
  F2-4
 L2000TWF10P Gries
 L5101W5
  W6-8
SL0101MWF12-1
 L0201MWF1
 L2000MWF12-1
 L2003MWF1

Course Rating & Comments

CSC209H1 - Software Tools and Systems Programming Hours: 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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101TR1K Reid
 L0201TR4D Liu
 L2003TR1K Reid
 T0101F10
 T0201F11
 T0301F12-1
SL0101MW10J Campbell
 L0201MW2M Craig
 L0301MW3M Craig
 L5101W6-8M Craig
 T0101F1
 T0201F2
 T0301F3
 T5101W8

Course Rating & Comments

CSC236H1 - Introduction to the Theory of Computation Hours: 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 or CSC240H1. Prerequisite: 60% or higher in CSC148H1, 60% or higher in CSC165H1
Exclusion: CSC240H1, CSC263H1/​CSC265H1
Distribution Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)
Note: Please note: The minimum prerequisite grade in CSC148H1 and CSC165H1/CSC240H1 is lower than the minimum grade for program admission. If you take this course when your grade in CSC148H1 or CSC165H1/CSC240H1 is lower than the requirement for program admission, you will be unable to enrol in a Computer Science program. If you hope to enrol in a Computer Science program in future, please ensure that you satisfy the program admission grade requirements in CSC148H1 and CSC165H1/CSC240H1 before completing any 200-level course. 

Class TimeCheck current enrolment

FL0101MWF11A Chinaei
 L0201MWF12-1A Chinaei
 L2000MWF11A Chinaei
 L5101R6-8
  R8
SL0101MWF11
 L2000MWF11
 L2003MWF11
 L5101R6
  R7-9

Course Rating & Comments

CSC240H1 - Enriched Introduction to the Theory of Computation Hours: 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; MAT137Y1/​MAT157Y1
Exclusion: CSC236H1, CSC263H1/​CSC265H1
Distribution Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

SL0101MWF11F Ellen

Course Rating & Comments

CSC258H1 - Computer Organization Hours: 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: 70% or higher in CSC148H1, 70% or higher in CSC165H1/​CSC240H1
Distribution Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF11S Engels
  W6-9S Engels
 L2003MWF11
  W6-9
 L5101TR6-9
SL0101MWF1S Engels
  W6-9S Engels
 L0201MWF2S Engels
  W6-9S Engels
 L5101MT6-9

Course Rating & Comments

CSC263H1 - Data Structures and Analysis Hours: 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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101W12-1
  W1
  F10
 L0201W3
  W4
  F1
 L2000W3
  W4
  F1
 L2003W12-1
  W1
  F10
 L2201W3
  W4
  F1
SL0101MWF2S Toueg
 L0201MWF3S Toueg
 L0301MWF4A Nikolov
 L2000MWF2
 L5101R6-8A Nikolov
  R8A Nikolov

Course Rating & Comments

CSC265H1 - Enriched Data Structures and Analysis Hours: 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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101T2-4F Ellen
  R3F Ellen

Course Rating & Comments

CSC300H1 - Computers and Society Hours: 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 Requirements: Science
Breadth Requirements: Society and its Institutions (3)

Class TimeCheck current enrolment

FL0101W3-5M Zaleski
  W5M Zaleski
 L5101W6-8
  W8
SL0101R3-5M Zaleski
  R5M Zaleski
 L5101R6-8
  R8

Course Rating & Comments

CSC301H1 - Introduction to Software Engineering Hours: 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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101M12-2
  T12-1
 L5101M6-8
  M8
SL0101T12-2
  R1
 L5101M6-8
  M8

Course Rating & Comments

CSC302H1 - Engineering Large Software Systems Hours: 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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

SL0101MWF4M Zaleski

CSC304H1 - Algorithmic Game Theory and Mechanism Design Hours: 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
Recommended Preparation: MAT223H1, CSC373H1
Distribution Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF3A Borodin, N Shah

Course Rating & Comments

CSC309H1 - Programming on the Web Hours: 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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF3A Chinaei
 L0201MWF4A Chinaei
 L2001MWF3A Chinaei
SL0101MWF10K Reid
 L2001MWF10K Reid
 L2501M6-8
  M8
 L5101M6-8
  M8

 

CSC310H1 - Information Theory Hours: 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; STA247H1/​STA255H1/​STA257H1/​STA107H1; (MAT135H1, MAT136H1)/ MAT135Y1/​MAT137Y1/​MAT157Y1, MAT221H1/​MAT223H1/​MAT240H1
Distribution Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class Time

Not Available (Possibly Cancelled)

Course Rating & Comments

CSC318H1 - The Design of Interactive Computational Media Hours: 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 Requirements: Science

Class TimeCheck current enrolment

FL0101T10
  R9-11
 L2001T10
  R9-11
 L2501M6
  M7-9
 L5101M6
  M7-9
SL0101MWF11
 L0201T4-6
  T6
 L2201T4-6
  T6

Course Rating & Comments

CSC320H1 - Introduction to Visual Computing Hours: 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 principlescomputational and mathematical methods for creating, capturing, analyzing, and manipulating digital photographs (image acquisition, basic image processing, image warping, anti-aliasing); (2) digital special effectsapplying these principles to create special effects found in movies and commercials; (3) visual programmingusing 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 Requirements: Science

Class TimeCheck current enrolment

SL0101W2-4K Kutulakos
  F2K Kutulakos
 L2501W6-8K Kutulakos
  W8K Kutulakos
 L5101W6-8K Kutulakos
  W8K Kutulakos

Course Rating & Comments

CSC321H1 - Introduction to Neural Networks and Machine Learning Hours: 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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

SL0101TR1R Grosse
  R2R Grosse
 L2001TR1R Grosse
  R2R Grosse
 L2501T6-8R Grosse
  T8R Grosse
 L5101T6-8R Grosse
  T8R Grosse

Course Rating & Comments

CSC324H1 - Principles of Programming Languages Hours: 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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF11G Baumgartner
 L2003MWF11G Baumgartner
 L5101R6G Baumgartner
  R7-9G Baumgartner
SL0101MWF2D Liu

Course Rating & Comments

CSC336H1 - Numerical Methods Hours: 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 Requirements: Science
Breadth Requirements: The Physical and Mathematical Universes (5)

Class TimeCheck current enrolment

FL0101MWF11K Jackson
SL0101T1-3T Fairgrieve
  R1T Fairgrieve
 L2003T1-3T Fairgrieve
  R1T Fairgrieve