Faculty
List
Associate Chair: D. Fleet (416-287-5653)
Computer science is the study of the use of computers to process information.
The form of this information may vary widely, from the business person's
records or the scientist's experimental results to the linguist's
texts. One of the fundamental concepts in computer science is the
algorithm - a list of instructions that specify the steps required
to solve a problem. Computer science is concerned with producing correct,
efficient, and maintainable algorithms for a wide variety of applications.
Closely related is the development of tools to foster these goals:
programming languages for expressing algorithms; operating systems
to manage the resources of a computer; and various mathematical and
statistical techniques to study the correctness and efficiency of
algorithms.
Theoretical computer science is concerned with the inherent difficulty
of problems that can make them intractable by computers. Numerical
analysis, data management systems, computer graphics, and artificial
intelligence are concerned with the applications of computers to specific
problem areas.
Limited Enrolment: Because of pressures of demand
for places, it has been necessary to place enrolment limits on most
CSC courses and on admission to the Major and Specialist Programs.
Information on how to apply for admission to a Program is given below.
Note on Admission to CSC Courses
CSC courses are open to all students who meet the prerequisites. Non-CSC
program students who wish to take B-, C-, or D- level courses must
meet additional Cumulative GPA (CGPA) requirements:
- A student who is not in a CSC program and does not have a CGPA
of at least 2.5 may not take any B- level CSC course other than
CSCB07H3.
- A student who is not in a CSC program and does not have a CGPA
of at least 3.0 may not take any C- or D-level CSC course.
- When a B-, C-, or D-level CSC course other than CSCB07H3
approaches its capacity, CSC program students will be given preference
for further enrollment over non-CSC program students.
- Students admitted to the Major or Specialist Program in Computer
Science at any point after first year will be subject to retroactive
program tuition fees.
Service Learning and Outreach (Previously known as Science
Engagement)
For experiential learning through community outreach, and classroom
in-reach, please see the Centre
for Teaching and Learning section of this Calendar.
Computer Science Programs
SPECIALIST
PROGRAM IN COMPUTER SCIENCE (SCIENCE)
Supervisor of Studies: R. Pancer (416-287-7679) Email:
pancer@utsc.utoronto.ca
Program Objectives
This program provides a working
knowledge of the foundations of computer science: modern computer
software and hardware, theoretical aspects of computer science, and
relevant areas of mathematics and statistics. It also imparts an appreciation
of the discipline's transformative impact on science and society.
The program prepares students for further study and for careers in
the computing industry. It comprises three streams with different
emphases:
The Comprehensive Stream provides a broad and balanced
exposure to the discipline. It is the stream best-suited for students
planning to pursue graduate study in computer science, but it is also
suitable for other career paths.
The Software Engineering Stream places a greater
emphasis on the engineering side of the discipline, including computer
systems and core applications.
The Information Systems Stream has a similar focus
as the Software Engineering Stream, but it provides additional exposure
to certain aspects of business management. It is of special interest
to students wishing to pursue careers in technical management but
who have a deep interest in the technology.
Program Admission
Each year up to 150 students are admitted directly from high school
to the Comprehensive Streams of this program and the Co-operative
Specialist Program in Computer Science (see below) on the basis of
academic performance. Applicants must have completed Grade 12 Calculus
& Vectors and Advanced Functions.
After first year, students may transfer from Comprehensive to other
streams. Due to enrolment restrictions in required Management courses,
entry to the Information Systems Stream is limited. Selection is based
on grades in the program's A-level courses, including the two A-level
MGT courses in requirement 6 of the Information Systems Stream below.
An additional number of students may transfer to the program after
first year. To be eligible for late entry to a stream of the program,
a student must have completed all A-level courses required in that
stream. Admission is based on CGPA and grades in computer science,
mathematics, and statistics courses that the student has taken. The
minimum CGPA for admission is calculated annually.
Program Requirements
To remain in the program, a student must maintain a CGPA of 2 or higher
throughout the program. To complete the program, a student must meet
the course requirements described below. (One credit is equivalent
to two courses). The program requirements comprise a core of 21 courses
(10.5 credits), common to all three streams and additional requirements
which depend on the stream, for a total of 27 courses (13.5 credits)
for the Comprehensive and Software Engineering Streams, and 30 courses
(15 credits) for the Information Systems Stream.
Note: Many Computer Science courses are offered both
at U of T Scarborough and at the St. George campus. When a course
is offered at both campuses in a given session, U of T Scarborough
students are expected to take that course at U of T Scarborough. The
Department of Computer Science at the St. George campus cannot guarantee
space for U of T Scarborough students in their courses, especially
those offered at both campuses.
Core (10.5 credits)
1. Writing Requirement (0.5 credit) (*)
One of: ANTA01H3,
ANTA02H3, (CLAA02H3), (CTLA19H3),
CTLA01H3,
ENGA10H3, ENGA11H3,
ENGB06H3, ENGB07H3,
ENGB08H3, ENGB09H3,
ENGB17H3, ENGB19H3,
ENGB50H3, ENGB51H3,
GGRA02H3, GGRA03H3,
GGRB05H3, (GGRB06H3), (HISA01H3),
HLTA01H3, HUMA01H3,
(HUMA11H3), (HUMA17H3), (LGGA99H3), LINA01H3,
PHLA10H3, PHLA11H3,
WSTA01H3.
(*) It is recommended that this requirement be satisfied by the end
of the second year.
2. A-level courses (3 credits)
CSCA08H3 Introduction
to Computer Programming
CSCA48H3 Introduction
to Computer Science
CSCA67H3 Discrete Mathematics
for Computer Scientists
MATA23H3 Linear Algebra I
MATA31H3 Calculus I for Mathematical
Sciences
MATA37H3 Calculus II for Mathematical
Sciences
3. B-level courses (4 credits)
CSCB07H3 Software Design
CSCB09H3 Software Tools
and Systems Programming
CSCB36H3 Introduction
to the Theory of Computation
CSCB58H3 Computer Organization
CSCB63H3 Design and Analysis
of Data Structures
MATB24H3 Linear Algebra II
MATB41H3 Techniques of the
Calculus of Several Variables I
STAB52H3 Introduction to Probability
4. C-level courses (2.5 credits)
CSCC37H3 Introduction
to Numerical Algorithms for Computational Methods
CSCC43H3 Introduction
to Databases
CSCC63H3 Computability
and Computational Complexity
CSCC69H3 Operating Systems
CSCC73H3 Algorithm Design
and Analysis
5. D-level courses (0.5 credit)
CSCD03H3 Social Impact
of Information Technology
A. Comprehensive Stream
This stream requires a total of 27 courses (13.5 credits). In addition
to the core requirements 1-5 common to all streams, 6 other distinct
courses (3 credits) must be chosen satisfying all of the following
requirements:
6. Additional required courses (1 credit)
CSCC24H3 Principles of
Programming Languages
CSCD37H3 Analysis of
Numerical Algorithms for Computational Mathematics
7. Electives from courses on computers systems and applications
(1 credit)
Two of:
CSCC01H3 Introduction
to Software Engineering
CSCC09H3 Programming
on the Web
CSCC85H3 Introduction
to Embedded Systems
CSCD01H3 Engineering
Large Software Systems
CSCD11H3 Machine Learning
and Data Mining
CSCD18H3 Computer Graphics
CSCD27H3 Computer and
Network Security
CSCD43H3 Database System
Technology
CSCD58H3 Computer Networks
CSCD84H3 Artificial Intelligence
CSC318H Design of Interactive Computational Media
CSC320H Visual Computing
CSC321H Introduction to Neural Networks and Machine Learning
CSC401H Natural Language Computing
CSC469H Operating Systems Design and Implementation
CSC485H Computational Linguistics
CSC488H Compilers and Interpreters
8. Electives from courses related to the theory of computing
(0.5 credit)
One of:
MATC09H3 Introduction to Mathematical
Logic
MATC16H3 Coding Theory and
Cryptography
MATC32H3 Graph Theory and
Algorithms for its Applications
MATC44H3 Introduction to Combinatorics
CSC438H Computability and Logic
CSC448H Formal Languages and Automata
CSC465H Formal Methods in Software Design
9. CSC, MAT, or STA elective (0.5 credit)
One of:
Any C- or D-level CSC, MAT, or STA course, excluding MATC82H3,
MATC90H3, and STAD29H3.
B. Software Engineering Stream
This stream requires a total of 27 courses (13.5 credits). In addition
to the core requirements 1-5 common to all streams, 6 other distinct
courses (3 credits) must be chosen satisfying all of the following
requirements:
6. Additional required courses (1.5 credits)
CSCC01H3 Introduction
to Software Engineering
CSCC24H3 Principles of
Programming Languages
CSCD01H3 Engineering
Large Software Systems
7. Electives from courses on computer systems and applications
(1.5 credits)
Three of:
CSCC09H3 Programming
on the Web
CSCC85H3 Introduction
to Embedded Systems
CSCD11H3 Machine Learning
and Data Mining
CSCD18H3 Computer Graphics
CSCD27H3 Computer and
Network Security
CSCD43H3 Database System
Technology
CSCD58H3 Computer Networks
CSCD84H3 Artificial Intelligence
CSC318H Design of Interactive Computational Media
CSC320H Visual Computing
CSC321H Introduction to Neural Networks and Machine Learning
CSC401H Natural Language Computing
CSC469H Operating Systems Design and Implementation
CSC485H Computational Linguistics
CSC488H Compilers and Interpreters
C. Information Systems Stream
This stream requires a total of 30 courses (15 credits). In addition
to the core requirements 1-5 common to all streams, 9 other distinct
courses (4.5 credits) must be chosen satisfying all of the following
requirements:
6. Required management courses (2 credits)
MGTA03H3 Introduction to Management
I
MGTA04H3 Introduction to Management
II
MGTB23H3 Managing People in
Organizations
MGTB29H3 Managing Groups and
Organizations
7. Additional required computer science courses (1.5 credits)
CSCC01H3 Introduction
to Software Engineering
CSCD01H3 Engineering
Large Software Systems
CSCD43H3 Database System
Technology
8. Electives from courses on computer systems and applications
(1 credit)
Two of:
CSCC09H3 Programming
on the Web
CSCC85H3 Introduction
to Embedded Systems
CSCD11H3 Machine Learning
and Data Mining
CSCD18H3 Computer Graphics
CSCD27H3 Computer and
Network Security
CSCD58H3 Computer Networks
CSCD84H3 Artificial Intelligence
CSC318H Design of Interactive Computational Media
CSC320H Visual Computing
CSC321H Introduction to Neural Networks and Machine Learning
CSC401H Natural Language Computing
CSC469H Operating Systems Design and Implementation
CSC485H Computational Linguistics
CSC488H Compilers and Interpreters
SPECIALIST
(CO-OPERATIVE) PROGRAM IN COMPUTER SCIENCE (SCIENCE)
Supervisor of Studies: R. Pancer (416-287-7679) Email:
pancer@utsc.utoronto.ca
Co-op Contact: askcoop@utsc.utoronto.ca
Program Objectives
This program combines the coursework of the Specialist Program
in Computer Science described above with paid work terms in public
and private enterprises. It shares the goals and structure of the
Specialist Program in Computer Science, including its three streams
(Comprehensive, Software Engineering, and Information Systems), but
complements study of the subject with considerable work experience.
Program Admission
Refer to the Program Admission requirements for the Specialist Program
in Computer Science described above and the Co-operative
Programs section in this Calendar. Students entering
this program after first year must have a CGPA of at least 2.75.
Program Requirements
To remain in the program, a student must maintain a CGPA of 2.5 or
higher throughout the program. To complete the program, a student
must meet the work term and course requirements described below.
Work Term Requirements
Students must successfully complete three work terms, at most one
of which can be during the summer. In addition, prior to their first
work term, students must successfully complete the Arts & Science
Co-op Work Term Preparation Activities. These include networking sessions,
speaker panels and industry tours along with seminars covering resumes,
cover letters, job interviews and work term expectations.
Course Requirements
The Co-operative Program can be taken in conjunction with any of the
streams in the Specialist Program in Computer Science. For the course
requirements of each stream, please refer to the description of the
Specialist Program in Computer Science.
MAJOR
PROGRAM IN COMPUTER SCIENCE (SCIENCE)
Supervisor of Studies: R. Pancer (416-287-7679) Email:
pancer@utsc.utoronto.ca
Program Objectives
This program provides basic knowledge of the foundations of computer
science: modern computer software and hardware, theoretical aspects
of computer science, and relevant areas of mathematics and statistics.
This program is intended to be combined with other programs, typically
a major program in another discipline.
Program Admission
Students are admitted to the second year of the program. All A-level
courses required for the program must have been completed (see requirement
1 below). Admission is based on CGPA and grades in computer science
and mathematics courses that the student has taken. The minimum CGPA
for admission is calculated annually.
Program Requirements
This program requires a total of 16 distinct courses (8 credits) satisfying
all of the requirements listed below.
Note: Many Computer Science courses are offered both
at U of T Scarborough and at the St. George campus. When a course
is offered at both campuses in a given session, U of T Scarborough
students are expected to take that course at U of T Scarborough. The
Department of Computer Science at the St. George campus cannot guarantee
space for U of T Scarborough students in their courses, especially
those offered at both campuses.
1. A-level courses (3 credits)
CSCA08H3 Introduction
to Computer Programming
CSCA48H3 Introduction
to Computer Science
CSCA67H3 Discrete Mathematics
for Computer Scientists
MATA23H3 Linear Algebra I
MATA31H3 Calculus I for Mathematical
Sciences
MATA37H3 Calculus II for Mathematical
Sciences
2. B-level courses (3 credits)
CSCB07H3 Software Design
CSCB09H3 Software Tools
and Systems Programming
CSCB36H3 Introduction
to the Theory of Computation
CSCB58H3 Computer Organization
CSCB63H3 Design and Analysis
of Data Structures
One of: (*)
MATB24H3 Linear Algebra II
STAB52H3 Introduction to Probability
(*) In making this choice, students should consider the prerequisites
of courses they plan to take to satisfy requirements 3-4.
3. C-level courses in numerical computation and theory of
computing (1 credit)
CSCC37H3 Introduction
to Numerical Algorithms for Computational Mathematics
One of:
CSCC63H3 Computability
and Computational Complexity
CSCC73H3 Algorithm Design
and Analysis
4. CSC Electives (1 credit)
Two of:
Any C- or D-level CSC courses.
Writing Recommendation:
Students are urged to take a course from the following list of courses
by the end of their second year: ANTA01H3,
ANTA02H3, (CLAA02H3), (CTLA19H3),
CTLA01H3,
ENGA10H3, ENGA11H3,
ENGB06H3, ENGB07H3,
ENGB08H3, ENGB17H3,
ENGB19H3, ENGB50H3,
ENGB51H3, GGRA02H3,
GGRA03H3, GGRB05H3,
(GGRB06H3), (HISA01H3), HLTA01H3,
HUMA01H3, (HUMA11H3), (HUMA17H3),
(LGGA99H3), LINA01H3, PHLA10H3,
PHLA11H3, WSTA01H3.
MAJOR
(CO-OPERATIVE) PROGRAM IN COMPUTER SCIENCE (SCIENCE)
Supervisor of Studies: R. Pancer (416-287-7679) E-mail:
pancer@utsc.utoronto.ca
Co-op Contact: askcoop@utsc.utoronto.ca
Program Objectives
This program combines the coursework of the Major Program
in Computer Science described above with paid work terms in public
and private enterprises. It shares the objectives of the Major Program
in Computer Science, but complements study of the subject with considerable
work experience. This program must be combined with a major program
in another discipline.
Program Admission
Refer to the Program Admission requirements for the Major Program
in Computer Science described above and the Co-operative
Programs section in this Calendar. Students entering
this program must have a CGPA of at least 2.75.
Program Requirements
To remain in the program, a student must maintain a CGPA of 2.5 or
higher throughout the program. To complete the program, a student
must meet the work term and course requirements described below.
Work Term Requirements
Students must successfully complete three work terms, at most one
of which can be during the summer. In addition, prior to their first
work term, students must successfully complete the Arts & Science
Co-op Work Term Preparation Activities. These include networking sessions,
speaker panels and industry tours along with seminars covering resumes,
cover letters, job interviews and work term expectations.
Course Requirements
The course requirements of the Co-operative Major Program in Computer
Science are identical to those of the Major Program in Computer Science
described above.
MINOR
PROGRAM IN COMPUTER SCIENCE (SCIENCE)
Supervisor of Studies: R. Pancer (416-287-7679) Email: pancer@utsc.utoronto.ca
Program Objectives
This program provides a basic introduction to the tools and methodologies
of computer science and equips students with the knowledge necessary
to use the tools and methodologies as they relate to other subjects.
The program is intended to complement programs in other disciplines.
Program Requirements
This program may not be combined with any Major or Specialist Program
in Computer Science, Mathematics or Statistics. It requires 4.0 credits
as follows:
1. Introductory programming courses (1 credit)
CSCA20H3 Computer Science
for the Sciences(*)
CSCA48H3 Introduction
to Computer Science
(*) CSCA08H3 may be substituted
for CSCA20H3 with permission
of the Supervisor of Studies.
2. Basic mathematics courses (0.5 credit)
One of:
CSCA67H3 Discrete Mathematics
for Computer Scientists
MATA23H3 Linear Algebra I
MATA30H3 Calculus I for Biological
and Physical Sciences
MATA31H3 Calculus I for Mathematical
Sciences
MATA32H3 Calculus for Management
I
PHLB50H3 Symbolic Logic I
3. Intermediate programming, systems, and theory courses
(1.5 credits)
Three of:
CSCB07H3 Software Design
CSCB09H3 Software Tools
and Systems Programming
CSCB20H3 Introduction
to Databases and Web Applications
CSCB36H3 Introduction
to the Theory of Computation(**)
CSCB58H3 Computer Organization
CSCB63H3 Design and Analysis
of Data Structures(***)
(**) CSCB36H3 requires
CSCA67H3
(***) CSCB63H3 requires
CSCB36H3
4. CSC electives (1 credit)
Two of:
Any C- or D-level CSC courses (*)
(*) Some C- or D-level courses have prerequisites that would have
to be taken in addition to the 4 credits required for this
program. Check the prerequisites carefully before selecting courses
to satisfy this requirement.
SPECIALIST
PROGRAM IN MANAGEMENT AND INFORMATION TECHNOLOGY (SCIENCE)
See the Management
section of this Calendar for program requirements.
SPECIALIST
PROGRAM IN QUANTITATIVE ANALYSIS (SCIENCE)
See the Statistics
section of this Calendar for program requirements.
Computer Science Courses
CSCA08H3 Introduction
to Computer Programming
Structure of computers; the computing environment. Programming in
an object-oriented language such as Python. Program structure: elementary
data types, statements, control flow, functions, classes, objects,
methods, fields. Lists; searching, sorting and complexity.
Prerequisite: Any Grade 12 mathematics course. Note:
This course is intended for students with no prior exposure to computer
programming. Students who have sufficient programming experience may
enrol directly in CSCA48H3;
consult the instructor or the Supervisor of Studies for guidance.
Exclusion: CSCA20H3,
CSC108H, CSC120H. CSCA08H3
may not be taken after or concurrently with CSCA48H3.
Breadth Requirement: Quantitative Reasoning
CSCA20H3 Computer
Science for the Sciences
An introduction to computer science for students in other sciences,
with an emphasis on gaining practical skills. Introduction to programming;
web programming; database design; software tools; examples and exercises
taken from the sciences. 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.
Exclusion: CSCA08H3,
CSC108H, CSC120H
Breadth Requirement: Quantitative Reasoning
CSCA48H3 Introduction
to Computer Science
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.
Prerequisite: CSCA08H3
& Grade 12 Calculus & Vectors & one other Grade 12 mathematics
course. Note: This course assumes programming experience
in an object-oriented language such as Python, C++ or Java, as provided
by CSCA08H3. Students
who already have this background may consult the instructor or Supervisor
of Studies for advice about skipping CSCA08H3.
Students who enrol in CSCA48H3
and find the course too difficult may "drop down" to CSCA08H3
in sessions when CSCA08H3
is offered. The deadline for "dropping down" is the end of the fifth
week of classes.
Exclusion: CSC148H
Breadth Requirement: Quantitative Reasoning
CSCA67H3 Discrete
Mathematics for Computer Scientists
Introduction to discrete mathematics: Elementary combinatorics; discrete
probability including conditional probability and independence; graph
theory including trees, planar graphs, searches and traversals, colouring.
The course emphasizes topics of relevance to computer science, and
exercises problem-solving skills and proof techniques such as well
ordering, induction, contradiction, and counterexample.
Prerequisite: Grade 12 Calculus and Vectors & one other Grade 12 mathematics
course
Exclusion: (CSCA65H3), CSC165H, CSC240H, MAT102H
Recommended Preparation: CSCA08H3
or CSCA20H3
Breadth Requirement: Quantitative Reasoning
CSCB07H3 Software
Design
An introduction to software design and development concepts, methods,
and tools, using a statically-typed object-oriented language such
as Java. Topics from: version control, build management, unit testing,
refactoring, design patterns, advanced IDE usage, regular expressions,
markup languages, parsing using finite state machines, and reflection.
Prerequisite: CSCA48H3
Corequisite: (CSCA65H3)
Exclusion: CSC207H
Breadth Requirement: Quantitative Reasoning
CSCB09H3 Software
Tools and Systems Programming
Software techniques in a Unix-style environment, using scripting
languages and a machine-oriented programming language (typically C).
What goes on in the 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: CSCA48H3
& [CGPA 2.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC209H
Breadth Requirement: Quantitative Reasoning
CSCB20H3 Introduction
to Databases and Web Applications
A practical introduction to databases and Web app development. Databases:
terminology and applications; creating, querying and updating databases;
the entity-relationship model for database design. Web documents and
applications: static and interactive documents; Web servers and dynamic
server-generated content; Web application development and interface
with databases.
Prerequisite: Some experience with programming in an imperative language
such as Python, Java or C.
Exclusion: This course may not be taken after- or concurrently with-
any C-or D-level CSC course.
Recommended Preparation: CSCA08H3
or CSCA20H3
Breadth Requirement: Quantitative Reasoning
CSCB29H3 Concepts
in Elementary Computer Science
A course specifically for students intending to become elementary
or high school teachers. Computer science concepts will be discussed
at a fundamental level. Topics covered: problem solving, algorithms,
recursion, applications, connections to mathematics, connections to
society. Throughout the course, students will apply these concepts
to fit the current Ministry's Guidelines for the various grade
levels. Students may be required to teach some one-hour classes to
various grade levels in an approved school. This is a "teaching friendly"
course. The course will be broken up into three distinct topics: elementary
level (grades K-5), intermediate (grades 6-9), senior (grades 10-12).
Prerequisite: [CSCA08H3
or CSCA20H3 or PSCB57H3]
& 3 other credits & a CGPA of at least 2.5. Priority will
be given to ETP/CTEP students. Note: This course assumes programming
experience in a language such as Python, C++ or Java as provided by
CSCA08H3. Students who
already have this background may consult the instructor or Supervisor
of Studies for advice about skipping CSCA08H3/CSCA20H3/PSCB57H3.
Exclusion: This course may not be taken after- or concurrently with-
any C- or D-level CSC course.
Breadth Requirement: Quantitative Reasoning
CSCB36H3 Introduction
to the Theory of Computation
Mathematical induction with emphasis on applications relevant to
computer science. Aspects of mathematical logic, correctness proofs
for iterative and recursive algorithms, solutions of linear and divide-and-conquer
recurrences, introduction to automata and formal languages.
Prerequisite: CSCA48H3
& (CSCA65H3) & [CGPA 2.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC236H, CSC240H
Breadth Requirement: Quantitative Reasoning
CSCB58H3 Computer
Organization
Principles of the design and operation of digital computers. Binary
data representation and manipulation, Boolean logic, components of
computer systems, memory technology, peripherals, structure of a CPU,
assembly languages, instruction execution, and addressing techniques.
There are a number of laboratory periods in which students conduct
experiments with digital logic circuits.
Prerequisite: [CSCA48H3
or PSCB57H3] & [CGPA
2.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC258H
Breadth Requirement: Quantitative Reasoning
CSCB63H3 Design
and Analysis of Data Structures
Design, analysis, implementation and comparison of efficient data
structures for common abstract data types. Priority queues: heaps
and mergeable heaps. Dictionaries: balanced binary search trees, B-trees,
hashing. Amortization: data structures for managing dynamic tables
and disjoint sets. Data structures for representing graphs. Graph
searches.
Prerequisite: CSCB07H3
& CSCB36H3 & [CGPA 2.5
or enrolment in a CSC Subject POSt]
Exclusion: CSC263H, CSC265H
Breadth Requirement: Quantitative Reasoning
CSCC01H3 Introduction
to Software Engineering
Introduction to software development methodologies with an emphasis
on agile development methods appropriate for rapidly-moving projects.
Basic software development infrastructure; requirements elicitation
and tracking; prototyping; basic project management; basic UML; introduction
to software architecture; design patterns; testing.
Prerequisite: CSCB07H3,
CSCB09H3, & [CGPA 3.0
or enrolment in a CSC Subject POSt]
Exclusion: CSC301H, (CSCC40H3), (CSCD08H3)
Breadth Requirement: Quantitative Reasoning
CSCC09H3 Programming
on the Web
An introduction to software development on the web. Concepts underlying
the development of programs that operate on the web. Operational concepts
of the internet and the web, static and dynamic client content, dynamically
served content, n-tiered architectures, web development processes
and security on the web.
Prerequisite: CSCB09H3
& CSCC43H3 &
[CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC309H
Breadth Requirement: Quantitative Reasoning
CSCC24H3 Principles
of Programming Languages
Major topics in the design, definition, analysis, and implementation
of modern programming languages. Study of programming paradigms: procedural
(e.g., C, Java, Python), functional (e.g., Scheme, ML, Haskell) and
logic programming (e.g., Prolog, Mercury).
Prerequisite: CSCB07H3
& CSCB09H3 & [CGPA 3.0
or enrolment in a CSC Subject POSt]
Exclusion: CSC324H
Breadth Requirement: Quantitative Reasoning
CSCC37H3 Introduction
to Numerical Algorithms for Computational Mathematics
An introduction to computational methods for solving problems in
linear algebra, non-linear equations, approximation and integration.
Floating-point arithmetic; numerical algorithms; application of numerical
software packages.
Prerequisite: [MATA36H3 or
MATA37H3] & MATA23H3
& [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: (CSCC36H3), (CSCC50H3), (CSCC51H3), CSC336H, CSC350H, CSC351H,
CSC338H
Breadth Requirement: Quantitative Reasoning
CSCC43H3 Introduction
to Databases
Introduction to database management systems. The relational data
model. Relational algebra. Querying and updating databases: the SQL
query language. Application programming with SQL. Integrity constraints,
normal forms, and database design. Elements of database system technology:
query processing, transaction management.
Prerequisite: CSCB09H3
& CSCB63H3 [CGPA 3.0
or enrolment in a CSC Subject POSt]
Exclusion: CSC343H
Breadth Requirement: Quantitative Reasoning
CSCC63H3 Computability
and Computational Complexity
Introduction to the theory of computability: Turing machines, Church's
thesis, computable and non-computable functions, recursive and recursively
enumerable sets, reducibility. Introduction to complexity theory:
models of computation, P, NP, polynomial time reducibility, NP-completeness,
further topics in complexity theory.
Note: Although the courses CSCC63H3
& CSCC73H3 may be
taken in any order, it is recommended that CSCC73H3
be taken first.
Prerequisite: CSCB36H3
& [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC363H, CSC365H, CSC364H
Breadth Requirement: Quantitative Reasoning
CSCC69H3 Operating
Systems
Principles of operating systems. The operating system as a control
program and as a resource allocator. The concept of a process and
concurrency problem: synchronization, mutual exclusion, deadlock.
Additional topics include memory management, file systems, process
scheduling, threads, and protection.
Prerequisite: CSCB07H3
& CSCB09H3 &
CSCB58H3 & [CGPA
3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC369H
Breadth Requirement: Quantitative Reasoning
CSCC73H3 Algorithm
Design and Analysis
Standard algorithm design techniques: divide-and-conquer, greedy
strategies, dynamic programming, linear programming, randomization,
and possibly others.
Prerequisite: CSCB63H3
& STAB52H3; [CGPA 3.0 or enrolment
in a CSC Subject POSt]
Exclusion: CSC373H, CSC375H, CSC364H
Breadth Requirement: Quantitative Reasoning
CSCC85H3 Introduction
to Embedded Systems
The course covers the components and fundamental principles of operation
of systems built around micro-processing elements: the architecture,
operation, and types of micro-processing components; sensors, actuators,
signal acquisition and processing, and basic principles of control
theory. Laboratory sessions involving the use of a mobile robotic
platform provide hands-on experience.
Prerequisite: CSCB58H3
& [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: ECE385H
Breadth Requirement: Quantitative Reasoning
CSCD01H3 Engineering
Large Software Systems
An introduction to the theory and practice of large-scale software
system design, development, and deployment. Project management; advanced
UML; requirements engineering; verification and validation; software
architecture; performance modeling and analysis; formal methods in
software engineering.
Prerequisite: CSCC01H3
& [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC302H, (CSCD08H3)
Breadth Requirement: Quantitative Reasoning
CSCD03H3 Social
Impact of Information Technology
The trade-offs between benefits and risks to society of information
systems, and related issues in ethics and public policy. Topics will
include safety-critical software; computational invasion of privacy;
computer-based crime; and professional ethics in the software industry.
There will be an emphasis on current events relating to these topics.
Prerequisite: 14.0 credits including CSCA08H3
or PSCB57H3 or CSCA48H3
[or, in special cases, (CSCA02H3) & permission of the instructor]
Exclusion: CSC300H
Breadth Requirement: Social & Behavioural Sciences
CSCD11H3 Machine
Learning and Data Mining
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, neural networks,
support vector machines, ensemble methods, and Bayesian methods. Clustering
algorithms and dimensionality reduction. Model selection. Problems
of over-fitting and assessing accuracy. Problems with handling large
databases.
Prerequisite: MATB24H3 &
MATB41H3 & STAB52H3
& CSCC37H3 &
[CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC411H
Breadth Requirement: Quantitative Reasoning
CSCD18H3 Computer
Graphics
Identification and characterization of objects manipulated in computer
graphics, operations 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 modeling, transformations, illumination models,
light effects; graphics packages and systems.
Prerequisite: MATB24H3 &
MATB42H3 & [CSCB09H3
or proficiency in C] & CSCC37H3
& [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC418H
Breadth Requirement: Quantitative Reasoning
CSCD27H3 Computer
and Network Security
Public and symmetric key algorithms and their application; key management
and certification; authentication protocols; digital signatures and
data integrity; secure network and application protocols; application,
system and network attacks and defences; intrusion detection and prevention;
social engineering attacks; risk assessment and management.
Prerequisite: CSCB09H3
& CSCB36H3 &
[CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC427H
Recommended Preparation: CSCC69H3
Breadth Requirement: Quantitative Reasoning
CSCD37H3 Analysis
of Numerical Algorithms for Computational Mathematics
Most mathematical models of real systems cannot be solved analytically
and the solution of these models must be approximated by numerical
algorithms. The efficiency, accuracy and reliability of numerical
algorithms for several classes of models will be considered. In particular,
models involving least squares, non-linear equations, optimization,
quadrature, and systems of ordinary differential equations will be
studied.
Prerequisite: CSCC37H3
& MATB24H3 & MATB41H3
& [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: (CSCC50H3), (CSCC51H3), CSC350H, CSC351H
Breadth Requirement: Quantitative Reasoning
CSCD43H3 Database
System Technology
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: CSCC43H3
& CSCC69H3 &
CSCC73H3 & [CGPA
3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC443H
Breadth Requirement: Quantitative Reasoning
CSCD58H3 Computer
Networks
Computer communication network principles and practice. The OSI protocol-layer
model; Internet application layer and naming; transport layer and
congestion avoidance; network layer and routing; link layer with local
area networks, connection-oriented protocols and error detection and
recovery; multimedia networking with quality of service and multicasting.
Principles in the context of the working-code model implemented in
the Internet.
Prerequisite: CSCB58H3
& CSCB63H3 &
[STAB52H3 or STAB57H3]
& [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC458H
Breadth Requirement: Quantitative Reasoning
CSCD71H3 Topics
in Computer Science
A topic from computer science, selected by the instructor, will be
covered.
The exact topic will typically change from year to year.
Prerequisite: Permission of the instructor & [CGPA 3.0 or enrolment
in a CSC Subject POSt]. Normally intended for students who have completed
at least 8.0 credits.
CSCD72H3 Topics
in the Theory of Computing
A topic from theoretical computer science, selected by the instructor,
will be covered.
The exact topic will typically change from year to year.
Prerequisite: Permission of the instructor & [CGPA 3.0 or enrolment
in a CSC Subject POSt]. Normally intended for students who have completed
at least 8.0 credits.
CSCD84H3 Artificial
Intelligence
A study of the theories and algorithms of Artificial Intelligence.
Topics include a subset of: search, game playing, logical representations
and reasoning, planning, natural language processing, reasoning and
decision making with uncertainty, computational perception, robotics,
and applications of Artificial Intelligence. Assignments provide practical
experience of the core topics.
Prerequisite: CSCC24H3
& STAB52H3 & [CGPA 3.0 or enrolment
in a CSC subject POSt]
Exclusion: CSC484H, CSC384H
Breadth Requirement: Quantitative Reasoning
CSCD94H3 Computer
Science Project
A significant project in any area of computer science. The project
may be undertaken individually or in small groups. This course is
offered by arrangement with a computer science faculty member, at
U of T Scarborough or the St. George campus. This course may be taken
in any session and the project must be completed by the last day of
classes in the session in which it is taken. Students must obtain
consent from the Supervisor of Studies before registering for this
course.
Prerequisite: [Three C-level CSC courses] & [permission of the
Supervisor of Studies] & [CGPA 3.0 or enrolment in a CSC Subject
POSt]
Enrolment procedures: Project supervisor's note
of agreement must be presented to the Supervisor of Studies, who must
issue permission for registration.
Exclusion: CSC494H
CSCD95H3 Computer
Science Project
Same description as CSCD94H3.
Normally a student may not take two project half-courses on closely
related topics or with the same supervisor.
If an exception is made allowing a second project on a topic closely
related to the topic of an earlier project, higher standards will
be applied in judging it. We expect that a student with the experience
of a first project completed will be able to perform almost at the
level of a graduate student.
Prerequisite: CSCD94H3
Enrolment
procedures: Project supervisor's note of agreement must be presented
to the Supervisor of Studies, who must issue permission for registration.
Exclusion: CSC495H