2005/2006 Calendar
Calendar Home Calendar Contents Contact Us Arts and Science Home

Computer Science Courses

See page 30 for Key to Course Descriptions

For Distribution Requirement purposes (see page 24), all CSC courses are classified as SCIENCE courses.

NOTE: The University of Toronto at Mississauga computer science Minor subject POSt is not recognized as a restricted CS
subject POSt for St. George courses enrolments.

NOTE: No late registration is permitted in any CSC course after the first two weeks of classes.
Enrolment in most CSC courses above 100-level is restricted. Consult the Calendar or the Arts and Science Registration
Handbook and Timetable for details.

Prerequisites and exclusions are enforced. Please refer to the 2005-06 Registration Handbook and Timetable for prerequisite
waiver deadlines.

Students may go to their college to drop down from enriched courses to regular courses. The courses are as follow:
from CSC150H1 to CSC108H1, from CSC240H1 to CSC165H (or to CSC236H1 if you have already passed CSC165H1), from CSC265H1 to CSC263H1, from CSC365H1 to CSC363H1, and from CSC375H1 to CSC373H1.

Drop down deadlines:
Fall session - October 12, 2005
Winter session - February 8, 2006.

 

| Course Winter Timetable |

INX199Y1
First-Year Seminar        52S


SCI199Y1
First Year Seminar        52S

Undergraduate seminar that focuses on specific ideas, questions, phenomena or controversies, taught by a regular Faculty
member deeply engaged in the discipline. Open only to newly admitted first year students. It may serve as a distribution
requirement course; see page 40.


CSC104H1
The Why and How of Computing       26L, 13T

Computer parts and their interconnection. Software: operating systems, files, interfaces. Hardware: storage media, memory,
data representation, I/O devices. History of computing. Problem solving with computers: algorithms and basic programming
concepts. Science and computer science; graphics, artificial intelligence. Common computer applications: databases,
simulations. Implications for society: computers and work, office automation, computer security. (Students work with various
applications and software, but the aim is to discuss general concepts of computer applications, not to serve as a tutorial for
specific packages.)

Exclusion: SMC104H1; VIC104H1; grade 12U/OAC computer studies or data processing
NOTE: This course may not be taken after or concurrently with any other computing course. This course is intended primarily
for students in the Humanities and Social Sciences.


CSC107H1
Self-paced Introduction to Computer Programming       TBA

Through independent study, students learn the material at their own pace. Structure of computers; the computing environment;
programming in an object-oriented language such as Java. Program structure in an object-oriented language: classes, objects,
methods, fields. Internal structure of methods: elementary data types, statements, control flow. Arrays; searching, sorting and
complexity. Not offered every year.

Exclusion: CSC108H1, 139H1, CSC148H1, 149H1, CSC150H1.
NOTE: You may not take this course after or concurrently with CSC148H1, but you may take CSC148H1 after CSC107H1.
Prerequisite: Grade 12 U/OAC mathematics


CSC108H1
Introduction to Computer Programming        39L, 12T, 12P

Structure of computers; the computing environment. Programming in an object-oriented language such as Java. Program
structure in an object-oriented language: classes, objects, methods, fields. Internal structure of methods: elementary data
types, statements, control flow. Arrays; 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.

Exclusion: CSC107H1, 139H1, CSC148H1, 149H1, CSC150H1.
NOTE: You may not take this course after or concurrently with CSC148H1, but you may take CSC148H1 after CSC108H1.
Prerequisite: Grade 12 U/OAC mathematics


CSC148H1
Introduction to Computer Science        26L, 13T, 12P

Abstract data types and data structures for implementing them. Linked data structures. Encapsulation and information-hiding.
Object-oriented programming in a language such as Java. Specifications. Analyzing the correctness and efficiency of programs
using mathematical reasoning. Recursion. Recurrence relations for analyzing the efficiency of recursive code. This course
assumes programming experience in an object-oriented language such as 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.

Exclusion: CSC139H1, 149H1, CSC150H1
Prerequisite: CSC107H1/CSC108H1; two of: Geometry and Discrete Mathematics, Advanced Functions and Introductory Calculus
or Mathematics of Data Management OR two of: OAC Calculus, Algebra & Geometry or Finite Mathematics
NOTE: It is recommended that CSC148H1/CSC150H1 and CSC165H1/CSC240H1 be taken at the same time, since each course relies on material from the other. If you take one before the other, it is preferable to take CSC148H1/CSC150H1 first. In any case, you will be at a modest disadvantage in the first of the two courses, and will be expected to pick up the relevant material from
the other course on your own.


CSC150H1
Accelerated Introduction to Computer Science       39L, 13T, 12P

An accelerated course covering all the material of CSC148H1 and also object-oriented topics (classes, objects, methods and
fields, and program design). Suitable for students with a solid programming background in Turing, C, Pascal or a similar
language, who are willing to accept a heavier workload than in CSC108H1 and CSC148H1.

Exclusion: CSC107H1, CSC108H1, 139H1, CSC148H1, 149H1
Prerequisite: Two of: Geometry and Discrete Mathematics, Advanced Functions and Introductory Calculus or Mathematics of
Data Management OR two of: OAC Calculus, Algebra & Geometry or Finite Mathematics; and one year of programming in a
procedural language. Students should thoroughly understand arrays, searching, sorting, functions/procedures/subprograms,
arguments and parameters, and modular design.
NOTE: It is recommended that CSC148H1/CSC150H1 and CSC165H1/CSC240H1 be taken at the same time, since each course relies on material from the other. If you take one before the other, it is preferable to take CSC148H1/CSC150H1 first. In any case, you will be at a modest disadvantage in the first of the two courses, and will be expected to pick up the relevant material from
the other course on your own. Students may go to their college to drop down from CSC150H1 to CSC108H1. See above for the drop down deadline.


CSC165H1
Mathematical Expression and Reasoning for Computer Science       26L, 13T

Introduction to abstraction and rigour. Understanding, using and developing precise expressions of mathematical ideas,
including definitions and theorems. Informal introduction to logical notation and reasoning. Representation of floating point
numbers and introduction to numerical computation.

Exclusion: CSC236H1, 238H1, CSC240H1
Prerequisite: CSC107H1/CSC108H1/(CSC148H1/CSC150H1 taken concurrently); U Advanced Functions and Introductory Calculus, and one of U Geometry and Discrete Mathematics or U Mathematics of Data Management OR OAC Calculus and one of
Algebra & Geometry or Finite Mathematics
Recommended preparation: first term of MAT135Y1/MAT137Y1/MAT157Y1
NOTE: It is recommended that CSC148H1/CSC150H1 and CSC165H1/CSC240H1 be taken at the same time, since each course relies on material from the other. If you take one before the other, it is preferable to take CSC148H1/CSC150H1 first. In any case, you will be at a modest disadvantage in the first of the two courses, and will be expected to pick up the relevant material from
the other course on your own.
Note
To enrol in any CSC course at the 200-level or higher, you must have a cumulative GPA of at least 2.50 (3.00 for 300-and 400-
level courses) or be enrolled in a restricted subject POSt sponsored by the Department of Computer Science. The University of
Toronto at Mississagua Computer Science Minor is not a restricted subject POSt.


CSC207H1
Software Design        26L, 13T

An introduction to software design and development concepts, methods, and tools. Core topics: object-oriented design and
programming; the role of scripting in the software development process; unit testing; version control; build management.
Prerequisite: CSC148H1/CSC150H1; CGPA 2.5/enrolment in a CSC subject POSt
Co-requisite: CSC165H1/CSC240H1/(CSC148H1 as given before Fall 2003)


CSC209H1
Software Tools and Systems Programming        26L, 13T

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.

Exclusion: CSC372H1, CSC408H1, 468H1
Prerequisite: CSC207H1/270H1, CSC258H1/enrolment in Bioinformatics and Computational Biology (BCB) subject POSt; CGPA
2.5/enrolment in a CSC subject POSt


CSC236H1
Introduction to the Theory of Computation        26L, 13T

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.

Exclusion: CSC238H1, CSC240H1
Prerequisite: CSC148H1/CSC150H1, CSC165H1/(CSC148H1 as given before Fall 2003); CGPA 2.5/enrolment in a CSC subject POSt


CSC240H1
Enriched Introduction to the Theory of Computation       26L, 13T

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.

Exclusion: CSC236H1, 238H1
Prerequisite: OAC Calculus and one of Algebra & Geometry or Finite Mathematics OR U Advanced Functions and Introductory
Calculus, and one of U Geometry and Discrete Mathematics or U Mathematics of Data Management, with high grades
Recommended preparation: first term of MAT137Y1/MAT157Y1
Co-requisite: CSC148H1/CSC150H1; CGPA 2.5/enrolment in a CSC subject POSt
NOTE: Students may go to their college to drop down from CSC240H1 to CSC165H1 (or to CSC236H1 if you have already
passed CSC165H1). See above for the drop down deadline.


CSC258H1
Computer Organization        26L, 9P, 10T

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.

Exclusion: CSC257H1 as given before 1985
Prerequisite: CSC148H1/CSC150H1, CSC165H1/CSC240H1/(CSC148H1 as given before Fall 2003); CGPA 2.5/enrolment in a CSC subject POSt


CSC260H1
Introduction to Scientific, Symbolic, and Graphical Computation        26L, 13T

Problems in transforming continuous mathematical models to discrete computational models. Inadequacy of naive computer
solutions, and techniques to remedy inadequacies. Symbolic computation, plotting, 3-D graphics, and conventional
programming languages. Intended for students from computer science, sciences and mathematics: for computer scientists,
introduction to design and implementation of robust algorithms; for scientists, techniques in transforming scientific problems
into computational solutions; for mathematicians, insight into differences between mathematical models and computational
solutions.

Exclusion: CSC160H1 as taught in Spring 1992; after taking CSC270H1/CSC263H1/CSC265H1 and any 300-/400-level CSC
course, you may not take CSC260H1 without departmental permission in writing
Prerequisite: CSC107H1/CSC108H1/computing experience, as from a good high school programming course; CGPA 2.5/enrolment
in a CSC subject POSt
Co-requisite: MAT135Y1/MAT137Y1/MAT157Y1, MAT223H1/MAT240H1


CSC263H1
Data Structures and Analysis        26L, 13T

Algorithm analysis: worst-case, average-case, and amortized complexity. 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, implementation, and comparison of data structures.

Exclusion: CSC265H1, 378H1
Prerequisite: CSC207H1/270H1, CSC236H1/238H1/CSC240H1; STA247H1/STA255H1/STA257H1; CGPA 2.5/enrolment in a CSC subject POSt


CSC265H1
Enriched Data Structures and Analysis        26L, 13T

Algorithm analysis: worst-case, average-case, and amortized complexity. Standard abstract data types, such as graphs,
dictionaries, priority queues, and disjoint sets. A variety of advanced data structures for implementing these abstract data
types, such as AVL trees, self-adjusting data structures, perfect hashing, and binomial heaps. Design and comparison of data
structures. 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.

Exclusion: CSC263H1, 378H1
Prerequisite: CSC207H1/270H1, CSC240H1/(CSC236H1/238H1) with permission of the instructor - see footnote)/(CSC148H1 with permission of the instructor and strong mathematical background, such as with a specialist in Mathematics); STA247H1/255H1/257H1; CGPA 2.5/enrolment in a CSC subject POSt

Footnote: Permission will typically be given only to students with an A or A+ in CSC236H1/238H1. Those with CSC240H1 do
not require permission.
NOTE: Students may go to their college to drop down from CSC265H1 to CSC263H1. See above for the drop down deadline.


CSC290H1
Communication Skills for Computer Scientists        39L

Targeted instruction and significant practice in the communications required for careers in computer science. The curriculum
covers written, oral, and interpersonal communication. Students will hand in short pieces of writing each week, will make oral
presentations several times in the semester, and will work together in simulated project meetings and other realistic scenarios
of pair and small group interaction.


CSC300H1
Computers and Society        26L, 13T

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.

Exclusion: PSCD03H (UTSc)
Prerequisite: Any half-course on computing; CGPA 3.0/enrolment in a CSC subject POSt


CSC309H1
Programming on the Web        26L, 13T

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/228H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC310H1
Information Theory        26L, 13T

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: CSC207H1/CSC260H1/270H1; STA247H1/STA255H1/STA257H1; MAT137Y1, MAT223H1/MAT240H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC318H1
The Design of Interactive Computational Media       26L, 13T

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; CGPA 3.0/enrolment in a CSC subject POSt
Recommended preparation: CSC300H1 provides useful background for work in CSC318H1, so if you plan to take CSC300H1
then you should do it before CSC318H1


CSC320H1
Introduction to Visual Computing        26L, 13P

A unified introduction to 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 (raster algorithms, 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.
Prerequisite: CSC209H1/270H1/(CSC207H1,proficiency in C or C++); MAT137Y1, MAT223H1/MAT240H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC321H1
Introduction to Neural Networks and Machine Learning       26L, 13P

Supervised neural networks: the perceptron learning procedure, the backpropagation learning procedure and its applications.
Elaborations of backpropagation: activation and error functions, improving speed and generalization, Bayesian approaches.
Associative memories and optimization: Gibbs sampling, mean field search. Representation in neural networks: distributed
representations, effects of damage, hierarchical representations. Unsupervised neural networks: competitive learning,
Boltzmann machines, sigmoid belief nets.
Prerequisite: CSC207H1/270H1; MAT137Y1, MAT223H1/MAT240H1; STA247H1/STA255H1/STA257H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC324H1
Principles of Programming Languages       26L, 13T

Major topics in the development of modern programming languages. Syntax specification, the evolution of programming
languages (including abstract data types and object orientation, and contributions of C++ to language design) design and
implementation of subprograms (including parameter passing techniques, and scope and lifetime of variables), run-time
storage management (including garbage collection), and programming paradigms. Two non-procedural programming
paradigms: functional programming (illustrated by languages such as Lisp, Scheme, ML or Haskell) and logic programming
(illustrated by languages such as Prolog, XSB or Coral).

Exclusion: CSC248H1
Prerequisite: CSC207H1/270H1, CSC236H1/238H1/CSC240H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC330H1
Logical Specifications        26L, 13T

Logic and its use as a declarative language in computer science. Syntax and semantics of propositional and predicate
calculus. Proving entailment and non-entailment rigorously. Formal derivations. Satisfiability. Applications, including information
systems, program verification, artificial intelligence, software engineering. Computational tools, including Prolog. Other logics.

Exclusion: CSC230H1
Prerequisite: CSC236H1/238H1/CSC240H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC336H1
Numerical Methods        26L, 13T

The study of computational methods for solving problems in linear algebra, non-linear equations, approximation, integration,
and ordinary differential equations. The aim is to give students a basic understanding of both floating-point arithmetic and the
methods used to solve numerical problems as well as a familiarity with the types of subroutines found in typical software
packages.

Exclusion: ACT323H1, 335H1; CSC350H1, CSC351H1
Prerequisite: CSC207H1/270H1/(CSC260H1,CSC148H1/CSC150H1); MAT133Y1(70%)/MAT135Y1/MAT137Y1/MAT157Y1, MAT223H1/MAT240H1; CGPA
3.0/enrolment in a CSC subject POSt


CSC340H1
Requirements Engineering        26L, 13T

Theory, tools and techniques of problem analysis for software systems development, covering both information systems and
control systems. Topics include: requirements specification, object-oriented analysis, business process modeling, and analysis
of non-functional requirements.
Prerequisite: CSC207H1/270H1,CSC236H1/238H1/CSC240H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC343H1
Introduction to Databases        26L, 13T

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.

Exclusion: CSC434H1
Prerequisite: CSC263H1/CSC265H1/(228H1,238H1)/378H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC350H1
Numerical Algebra and Optimization        26L, 13T

Floating-point arithmetic. The efficiency and stability of solution techniques for systems of linear equations and least squares
problems, including LU- and QR-based methods. Eigenvalue and eigenvector calculations. Algorithms for systems of non-
linear equations and optimization problems, including linear programming.

Exclusion: CSC336H1; ACT323H1, 335H1
Prerequisite: CSC207H1/270H1/(CSC260H1,CSC148H1/CSC150H1); MAT223H1/MAT240H1, MAT237Y1/MAT257Y1; CGPA 3.0/enrolment in a CSC
subject POSt


CSC351H1
Numerical Approximation, Integration and Ordinary Differential Equations       26L, 13T

Analysis of methods for approximation, integration and the solution of ordinary differential equations. Emphasis on the
convergence and stability properties of the algorithms, rather than on their implementation.

Exclusion: ACT323H1, 335H1; CSC336H1
Prerequisite: CSC350H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC354H1
Discrete-Event Simulation and Modelling        26L, 13T

Simulation and mathematical analysis of models of queuing systems. Concentration on dynamic, stochastic, discrete-event
systems. Simulation topics: selecting input probability distributions, generating random numbers and random variates, output
data analysis for one or more system configurations, variance reduction techniques. Analysis topics: queuing characteristics,
transient and steady-state behaviour, performance measures, the M/M/1 queue in detail, some non-Markovian queues.
Prerequisite: CSC209H1/270H1; MAT137Y1; STA247H1/STA255H1/STA257H1, STA248H1/STA250H1/STA261H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC363H1
Computational Complexity and Computability       26L, 13T

Introduction to the theory of computability: Turing machines, Church's thesis, computable and noncomputable functions,
recursive and recursively enumerable sets, reducibility. Introduction to complexity theory: models of computation, P, NP,
polynomial time reducibility, NP-completeness, heuristics and approximation algorithms, lower bounds on the complexity of
problems.

Exclusion: CSC364H1, CSC365H1
Prerequisite: CSC236H1/238H1/CSC240H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC365H1
Enriched Computational Complexity and Computability       26L, 13T

This course covers the same topics as CSC363H1, 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 CSC363H1 may be covered in more detail in this course, and some additional topics may
also be covered.

Exclusion: CSC363H1, 364H1
Prerequisite: CSC240H1/(CSC236H1/238H1 with permission of the instructor - see footnote)/(CSC148H1 with permission of the
instructor and strong mathematical background, such as with a specialist in Mathematics); CGPA 3.0/enrolment in a CSC
subject POSt
Footnote: Permission will typically be given only to students with an A or A+ in CSC236H1/238H1. Those with CSC240H1 do
not require permission.
NOTE: Students may go to their college to drop down from CSC365H1 to CSC363H1. See above for the drop down deadline.


CSC369H1
Operating Systems        26L, 13T

Principles of operating systems. The operating system as a control program and as a resource allocator. The concept of a
process and concurrency problems: synchronization, mutual exclusion, deadlock. Additional topics include memory
management, file systems, process scheduling, threads, and protection.

Exclusion: CSC468H1
Prerequisite: CSC258H1, CSC209H1, CSC207H1/270H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC372H1
Microprocessor Software        26L, 13T, 39P

Development of reliable efficient software for controlling and monitoring an environment. Concurrent programming techniques,
such as interrupt handling, buffer management, polling and time outs. Projects use microprocessors to control equipment (such
as a robot arm) and to read sensors. Design, implementation and testing of software using high level software, such as Turing
or C.
Prerequisite: CSC209H1; ECE385H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC373H1
Algorithm Design & Analysis        26L, 13T

Standard algorithm design techniques: divide-and-conquer, greedy strategies, dynamic programming, linear programming,
randomization, and others (such as local search). Students will be expected to show good design principles and adequate
skills at reasoning about the correctness and complexity of algorithms.

Exclusion: CSC375H1, 364H1
Prerequisite: CSC263H1/CSC265H1/378H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC375H1
Enriched Algorithm Design & Analysis       26L, 13T


This course covers the same topics as CSC373H1, 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 CSC373H1 may be covered in more detail in this course, and some additional topics may
also be covered

Exclusion: CSC373H1, 364H1
Prerequisite: CSC265H1/(CSC263H1/378H1 with permission of the instructor - see footnote); CGPA 3.0/enrolment in a CSC
subject POSt
Footnote: Permission will typically be given only to students with an A or A+ in CSC263H1/378H1. Those with CSC265H1 do
not require permission.
NOTE: Students may go to their college to drop down from CSC375H1 to CSC373H1. See above for the drop down deadline.


CSC384H1
Introduction to Artificial Intelligence        26L, 13T

Theories and algorithms that capture (or approximate) some of the core elements of computational intelligence.
Topics include: search; logical representations and reasoning, classical automated planning, representing and reasoning with
uncertainty, learning, decision making (planning) under uncertainty. Assignments provide practical experience, both
theory and programming, of the core topics.

Exclusion: CSC484H1
Prerequisite: CSC324H1; STA247H1/STA255H1/STA257H1; CGPA 3.0/enrolment in a CSC subject POSt


ECE385H1
Microprocessor Systems        26L, 39P

A hardware-oriented course dealing with microprocessor systems. Microprocessor components, memory devices, input/output
techniques, bus structure, peripheral device controllers, hardware system and programming considerations. Laboratory
experiments provide "hands-on" experience.
Prerequisite: CSC258H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC401H1
Natural Language Computing        26L, 13T

Introduction to techniques involving natural language and speech in applications such as information retrieval, extraction, and
filtering; intelligent Web searching; spelling and grammar checking; speech recognition and synthesis; and multi-lingual
systems including machine translation. N-grams, POS-tagging, semantic distance metrics, indexing, on-line lexicons and
thesauri, markup languages, collections of on-line documents, corpus analysis. PERL and other software.
Prerequisite: CSC207H1/CSC209H1/228H1; STA247H1/STA255H1/STA257H1; CGPA 3.0/enrolment in a CSC subject POSt
Recommended preparation: MAT223H1/MAT240H1 is strongly recommended


CSC407H1
Software Architecture and Design        26L, 13T

An introduction to the development of system-level architectures and class-level object-oriented designs for software systems.
Special emphasis on the study of architecture and design patterns: the core of solutions to commonly occurring design
problems. Representations of design/architecture (with emphasis on the use of UML as a class-level design notation),
architectural assessment, product lines, architecture extraction, and re-factoring. There is no major project, but there is a series
of smaller design and architecture exercises requiring some programming. A knowledge of UML as used for requirements
analysis and a working knowledge of both the C++ and Java languages are assumed.
Prerequisite: CSC340H1, CSC263H1/CSC265H1/378H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC408H1
Software Engineering        26L, 13T

The structure and unique characteristics of large software systems. The software process and software project management
including project planning, risk management, staffing and organizational issues. Review of requirements analysis and
specification. Software development techniques, version control, configuration management, system construction tools.
Software system testing and quality assurance. Software maintenance and product delivery strategies. A course project is
used to illustrate software engineering techniques.
Prerequisite: CSC340H1, CSC263H1/CSC265H1/378H1; CGPA 3.0/enrolment in a CSC subject POSt
Recommended preparation: Proficiency in C or C++; CSC209H1, CSC318H1, CSC407H1


CSC410H1
Software Testing and Verification       26L, 13T

Concepts and state of the art techniques in quality assessment for software engineering; quality attributes; formal
specifications and their analysis; testing, verification and validation.
Prerequisite: CSC407H1


CSC411H1
Machine Learning and Data Mining       26L, 13T

An introduction to methods for automated learning of relationships on the basis of empirical data. Classification and regression
using nearest neighbour methods, decision trees, linear models, and neural networks. Clustering algorithms. Problems of
overfitting and of assessing accuracy. Problems with handling large databases.
Prerequisite: CSC263H1/CSC265H1/270H1; MAT137Y1, STA247H1/STA255H1/STA257H1, STA248H1/STA250H1/STA261H1; CGPA 3.0/enrolment in a CSC subject POSt
Recommended preparation: CSC336H1/CSC350H1


CSC412H1
Probabilistic Learning and Reasoning       26L, 13T

An introduction to probability as a means of representing and reasoning with uncertain knowledge. Qualitative and quantitative
specification of probability distributions using probabilistic graphical models. Algorithms for inference and probabilistic
reasoning with graphical models. Statistical approaches and algorithms for learning probability models from empirical data.
Applications of these models in artificial intelligence and machine learning.
Prerequisite: CSC411H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC418H1
Computer Graphics        26L, 13T

Identification and characterization of the objects manipulated in computer graphics, the operations possible on these objects,
efficient algorithms to perform these operations, and interfaces to transform one type of object to another. Display devices,
display data structures and procedures, graphical input, object modelling, transformations, illumination models, primary and
secondary light effects; graphics packages and systems. Students, individually or in teams, implement graphical algorithms or
entire graphics systems.
Prerequisite: CSC336H1/CSC350H1/CSC351H1/CSC363H1/364H1/CSC365H1/CSC373H1/CSC375H1/378HI, MAT137Y1; CGPA 3.0/enrolment in a CSC subject POSt
Recommended preparation: MAT237Y1, MAT244H1


CSC420H1
Introduction to Image Understanding       26L, 13P

Introduction to fundamental concepts in image understanding, the subdiscipline of artificial intelligence dealing with the
automation of visual tasks by computer. Exploration of a number of real-world image interpretation problems, as motivation for
key low- and intermediate-level vision algorithms. A course project will include the construction of a number of practical vision
systems.
Prerequisite: CSC260H1/CSC263H1/CSC265H1/270H1, MAT137Y1; CGPA 3.0/enrolment in a CSC subject POSt
Recommended preparation: CSC320H1


CSC428H1
Human-Computer Interaction        26L, 13T

Understanding human behaviour as it applies to user interfaces: work activity analysis, observational techniques, questionnaire
administration and unobtrusive measures. Operating parameters of the human cognitive system, task analysis and cognitive
modelling techniques and their application to designing interfaces. Interface representations and prototyping tools. Cognitive
walkthroughs, usability studies and verbal protocol analysis. Case studies of specific user interfaces.
Prerequisite: CSC318H1; STA247H1/STA255H1/STA257H1, STA248H1/STA250H1/STA261H1; CGPA 3.0/enrolment in a CSC subject POSt
Recommended preparation: A course in PSY; CSC209H1, CSC407H1


CSC438H1
Computability and Logic        26L, 13T

Computable functions, Church's thesis, unsolvable problems, recursively enumerable sets. Predicate calculus, including the
completeness, compactness, and Lowenheim-Skolem theorems. Formal theories and the G”del Incompleteness Theorem.

Exclusion: MAT309H1; PHL344H1
Prerequisite: CSC363H1/364H1/CSC365H1/MAT247H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC443H1
Database System Technology        26L, 13T

Implementation of database management systems. Storage management, indexing, query processing, concurrency control,
transaction management. Database systems on parallel and distributed architectures. Modern database applications: data
mining, data warehousing, OLAP, data on the web. Object-oriented and object-relational databases.
Prerequisite: CSC343H1/434H1, CSC369H1/468H1, 364H1/CSC373H1/CSC375H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC446H1
Computational Methods for Partial Differential Equations        26L, 13T

Finite difference methods for hyperbolic and parabolic equations; consistency, convergence, and stability. Finite element
methods for 2-point boundary value problems and elliptic equations. Special problems of interest.
Prerequisites: CSC351H1/(CSC336H1 (75%))/equivalent mathematical background; MAT237Y1/MAT257Y1; APM346H1/351Y1/(MAT244H1/267H1 and exposure to PDE's); CGPA 3.0/enrolment in a CSC subject POSt


CSC448H1
Formal Languages and Automata        26L, 13T

Regular, deterministic, context free, context sensitive, and recursively enumerable languages via generative grammars and
corresponding automata (finite state machines, push down machines, and Turing machines). Topics include complexity bounds
for recognition, language decision problems and operations on languages.
Prerequisite: CSC236H1/238H1/CSC240H1, CSC363H1/364H1/CSC365H1/MAT247H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC454H1
The Business of Software        26L, 13T

Overview of the software industry, and principles of operation for successful software enterprises. Software business definition
and planning; market and product planning; management of innovation, research and software development; software
marketing and sales management; software manufacturing and support; financial management of high-technology ventures;
human resource management and development in high-technology industries. (Ordinarily offered in alternate years.)
Prerequisite: Five CSC half-courses at the 200-level or higher; CGPA 3.0/enrolment in a CSC subject POSt
Recommended preparation: MGT120H1


CSC456H1
High-Performance Scientific Computing       26L, 13T

Computationally-intensive applications in science and engineering are implemented on the fastest computers available, today
composed of many processors operating in parallel. Parallel computer architectures; implementation of numerical algorithms
on parallel architectures. Topics from: performance evaluation; scientific visualization; numerical methods; applications from
science and engineering. For students in computer science, applied mathematics, science, engineering.
Prerequisite: CSC350H1/(CSC336H1 (75%))/equivalent mathematical background; CGPA 3.0/enrolment in a CSC subject POSt


CSC458H1
Computer Networks        26L, 13T

Computer communication network design and operation. Representation of information on physical channels; error detection
and recovery; local area networks; deadlock and congestion avoidance; internetworking and gateways; network naming and
addressing; remote procedures. Emphasis on fundamental principles rather than case studies, but with examples from real
networks.
Prerequisite: CSC258H1, CSC354H1/CSC363H1/364H1/CSC365H1/ CSC372H1/CSC373H1/CSC375H1/378H1/ ECE385H1; STA247H1/255H1/257H1/(80% in STA220H1/ ECO220Y1); CGPA 3.0/enrolment in a CSC subject POSt


CSC465H1
Formal Methods in Software Design        26L, 13T

The use of logic as an aid to programming. Formal semantics of programming languages: imperative programs, functional
programs, parallel processes, communicating processes. Partial and total correctness. Refinement theorems: by steps, by
parts, by cases. Semantics of recursion and the least-fixed-point construction; monotonicity, continuity. Semantics of data
types; data refinement.
Prerequisite: CSC236H1/238H1/CSC240H1/MAT309H1; CGPA 3.0/enrolment in a CSC subject POSt
Recommended preparation: CSC363H1/364H1/CSC365H1


CSC469H1
Operating Systems Design and Implementation        26L, 13T

An in-depth exploration of the major components of operating systems with an emphasis on the techniques, algorithms, and
structures used to implement these components in modern systems. Project-based study of process management, scheduling,
memory management, file systems, and networking is used to build insight into the intricacies of a large concurrent system.

Exclusion: CSC468H1
Prerequisite: CSC369H1; CGPA 3.0/enrolment in a CSC subject POSt


CSC485H1
Computational Linguistics        26L, 13T

Computational linguistics and the understanding of language by computer. Possible topics include: augmented context-free
grammars; chart parsing, parsing in Prolog, statistical parsing; semantics and semantic interpretation; ambiguity resolution
techniques; discourse structure and reference resolution; machine translation. Emphasis on statistical learning methods for
lexical, syntactic and semantic knowledge.
Prerequisite: CSC324H1/experience in Lisp or Prolog; CGPA 3.0/enrolment in a CSC subject POSt
Recommended preparation: Suggested background includes substantial programming experience and either a course in AI,
such as CSC384H1, or a Linguistics course in syntax or semantics


CSC486H1
Knowledge Representation and Reasoning       26L, 13T


Representing knowledge symbolically in a form suitable for automated reasoning, and associated reasoning methods: first-
order logic, entailment, the resolution method, Horn clauses, procedural representations, production systems, description
logics, inheritance networks, defaults and probabilities, tractable reasoning, abductive explanation, the representation of action,
planning.
Prerequisite: CSC384H1; CGPA 3.0/enrolment in a CSC subject POSt
Recommended preparation: CSC330H1/equivalent background


CSC487H1
Foundations of Computer Vision        26L, 13T

Introduction to vision, visual processes, and image understanding. Brief biological motivation for computational vision. Camera
system geometry and image acquisition, basic visual processes for recognition of edges, regions, lines, surfaces. Processing
colour, stereo images, and motion in image sequences. Active vision methods such as visual attention and interpretation-
guided imaging system geometry changes. Object recognition. Applications of visual systems.
Prerequisite: CSC320H1/CSC420H1; MAT235Y1/MAT237Y1/MAT257Y1; CGPA 3.0/enrolment in a CSC subject POSt


CSC488H1
Compilers and Interpreters        26L, 13T

Compiler organization, compiler writing tools, use of regular expressions, finite automata and context-free grammars, scanning
and parsing, runtime organization, semantic analysis, implementing the runtime model, storage allocation, code generation.
Prerequisite: CSC258H1, CSC324H1, CSC263H1/CSC265H1/378H1; CGPA 3.0/enrolment in a CSC subject POSt
Recommended preparation: Proficiency in C such as from CSC209H1


ECE489H1
Optimizing Compilers        26L, 39P

Theoretical and practical aspects of building modern optimizing compilers. Topics: intermediate representations, basic blocks
and flow graphs, data flow analysis, partial evaluation and redundancy elimination, loop optimizations, register allocation,
instruction scheduling, interprocedural analysis, and memory hierarchy optimizations. Students implement significant
optimizations within the framework of a modern research compiler. (This course is a cross-listing of ECE540H1, Faculty of
Applied Science and Engineering.)
Prerequisite: CSC258H1, CSC324H1, CSC263H1/CSC265H1/378H1; CGPA 3.0/enrolment in a CSC subject POSt
Recommended preparation: ECE385H1, proficiency in C, and perhaps CSC488H1


CSC490H1/491H1
Capstone Design Project        52L


This full-year half-course gives students experience solving a substantial problem that may span several areas of Computer
Science. Students will define the scope of the problem, develop a solution plan, produce a working implementation, and
present their work using written, oral, and (if suitable) video reports. Class time will focus on the project, but may include some
lectures. The class will be small and highly interactive. See www.cs.utoronto.ca/~csc490h and www.cs.utoronto.ca/~csc491h
for this year's topic themes and required preparation.
Prerequisite: Permission of the instructor; CGPA 3.0/enrolment in a CSC subject POSt


CSC494H1/495H1
Computer Science Project        TBA

This half-course involves a significant project in any area of Computer Science. The project may be undertaken individually or
in small groups. The course is offered by arrangement with a Computer Science faculty member.
Prerequisite: Three 300-level Computer Science half-courses, a CGPA of 3.00 (2.50 for students in a CSC program), and
permission of the Associate Chair, Undergraduate Studies.


Calendar Home ~ Calendar Contents ~ Contact Us ~ Arts & Science Home
Copyright © 2005, University of Toronto