Tomorrow is created here.

Google Search

Search the Calendar:
« Back to Cognitive Science Go to Table of Contents Continue to Concurrent Teacher Education»

Computer Science



Faculty List

W.H. Enright, B.Sc. (U.B.C.), M.Sc., Ph.D. (Toronto), Professor
D.J. Fleet, B.Sc. (Queen's), M.Sc., Ph.D. (Toronto), Professor
V. Hadzilacos, B.S.E. (Princeton), Ph.D. (Harvard), Professor
G. Hirst, B.A., B.Sc. (Monash), M.Sc. (A.N.U., U.B.C.), Ph.D. (Brown), Professor
M. Molloy, B.Math, M.Math (Waterloo), Ph.D. (Carnegie Mellon), Professor
N. Koudas, B.Sc. (Patras), M.Sc. (Maryland), Ph.D. (Toronto), Associate Professor
R. Johnson, B.Sc. (Brigham Young), M.Sc., Ph.D. (Carnegie Mellon), Assistant Professor
B. Schroeder, M.Sc. (Saarbrucken), Ph.D. (Carnegie Mellon), Assistant Professor
A. Bretscher, B.Sc., M.Sc. (Queen's), Ph.D. (Toronto), Senior Lecturer
N. Cheng, B.Sc. (Toronto), Senior Lecturer
R. Pancer, B.Sc., M.Sc., Ph.D. (Toronto), Senior Lecturer
A. Rosselet, B.Sc. (NCSU), M.Sc., Ph.D. (Toronto), Senior Lecturer
J. Estrada, B.Eng. (ITESM, Mex.), M.Sc., Ph.D. (Toronto), Lecturer
M. Szamosi, B.A. (Brandeis), M.A. (Harvard), Lecturer
A. Tafliovich, Hon. B.Sc., M.Sc., Ph.D. (Toronto), Lecturer
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 requirements:

  • A student who is not in a CSC program and does not have a cumulative GPA 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 cumulative GPA 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.


Science Engagement Courses
For science experiential learning through community outreach, classroom in-reach and team research, please see the Science Engagement section of this Calendar.



SPECIALIST PROGRAM IN COMPUTER SCIENCE (SCIENCE)

This program has three streams:

  1. Comprehensive Stream
  2. Information Systems Stream
  3. Software Engineering Stream


Program Admission
Each year, up to 80 students are admitted to the three streams of the Specialist Program in addition to those admitted to the Specialist Co-operative Program. There are three ways to be admitted:
  1. Directly from Secondary School: Up to 40 students will be admitted directly from high school on the basis of academic performance. Applicants must have completed Grade 12 Calculus & Vectors and Advanced Functions.
  2. At the end of 1st Year: Applicants must have completed all A-level courses required in their stream of the Specialist Program. Students applying for admission on completion of their first year (at least 4.0 full credits) will be accepted on the basis of their 1st year GPA and their marks in Computer Science and Mathematics courses. The minimum GPA to guarantee acceptance is calculated annually. It is never less than 2.0 and for this year it will not be greater than 2.8.
  3. After 2nd Year: Admission of students after second year will also be on the basis of the grades they have received in Computer Science and Mathematics courses.

Students applying at the end of their first year or later will be considered together for a total of approximately 40 places in the Specialist Program. As noted above, a GPA of 2.80 and above will guarantee acceptance (provided all required A-level courses have been successfully completed).

Program Requirements
In order to remain in the Program, a student must maintain a cumulative GPA of 2.0 or higher throughout the Program. The courses may be taken in any order as long as the prerequisites and co-requisites are satisfied.

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. Comprehensive Stream
    Supervisor of Studies: R. Pancer (416-287-7679) Email: pancer@utsc.utoronto.ca

    This stream requires 14.5 full credits.
    Writing requirement
    (Should be completed by the end of second year.)

    One of: ANTA01H3, ANTA02H3, (CLAA02H3), CTLA19H3, ENGA10H3, ENGA11H3, ENGB06H3, ENGB07H3, ENGB08H3, ENGB09H3, ENGB17H3, ENGB19H3 , ENGB50H3, ENGB51H3, GGRA02H3, GGRA03H3, GGRB05H3, (GGRB06H3), (HISA01H3), HLTA01H3, (HUMA11H3), (HUMA17H3), (LGGA99H3), LINA01H3, PHLA10H3, PHLA11H3, WSTA01H3.

    A level courses
    CSCA08H3 Introduction to Computer Programming
    CSCA48H3 Introduction to Computer Science
    CSCA65H3 Mathematical Expression and Reasoning for Computer Science
    MATA23H3 Linear Algebra I
    MATA31H3 Calculus I for Mathematical Sciences
    MATA37H3 Calculus II for Mathematical Sciences

    B level courses
    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
    MATB42H3 Techniques of the Calculus of Several Variables II
    STAB52H3 Introduction to Probability

    C level courses
    CSCC24H3 Principles of Programming Languages
    CSCC43H3 Introduction to Databases
    CSCC50H3 Numerical Algebra and Optimization
    CSCC51H3 Numerical Approximation, Integration and Ordinary Differential Equations
    CSCC63H3 Computability and Computational Complexity
    CSCC69H3 Operating Systems
    CSCC73H3 Algorithm Design and Analysis

    D level courses
    CSCD03H3 Social Impact of Information Technology

    Elective courses
    Note: In selecting the 2.5 credits needed to meet this requirement, student must include at least one D-level (400-level) course. Two of (additional courses related to the practice of computing):
    CSCC09H3 Programming on the Web
    CSCC40H3 Analysis and Design of Information Systems
    CSCC85H3 Microprocessor Systems
    CSCD08H3 Software Engineering
    CSCD11H3 Machine Learning and Data Mining
    CSCD18H3 Computer Graphics
    CSCD27H3 Computer and Network Security
    CSCD43H3 Database System Technology
    CSCD58H3 Computer Networks
    CSC321H Introduction to Neural Networks and Machine Learning
    CSC372H Microprocessor Software
    CSC384H Introduction to Artificial Intelligence
    CSC428H Human-Computer Interaction
    CSC469H Operating Systems Design and Implementation
    CSC485H Computational Linguistics
    CSC488H Compilers and Interpreters

    Two of (additional fundamental mathematics courses):
    MATB43H3 Introduction to Analysis
    MATB44H3 Differential Equations I
    MATC01H3 Groups and Symmetry
    MATC15H3 Introduction to Number Theory
    MATC34H3 Complex Variables
    MATC35H3 Chaos, Fractals and Dynamics
    MATD01H3 Fields and Groups
    CSC446H Computational Methods for Partial Differential Equations
    CSC456H High Performance Scientific Computing

    One of (additional courses related to the theory of computing):
    MATB61H3 Linear Programming and Optimization
    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

  2. Information Systems Stream
    Supervisor of Studies: R. Pancer (416-287-7679) Email: pancer@utsc.utoronto.ca

    Note: Due to enrolment restrictions in required Management courses, registration in this stream is limited. A maximum of 20 students will be admitted annually to the second year of the Program. Selection will be based on grades in A-level courses specified for the Program with a minimum GPA of 2.5.

    This stream requires 16.0 full credits.
    Writing requirement
    (Should be completed by the end of second year.)
    See Comprehensive Stream.

    A level courses
    CSCA08H3 Introduction to Computer Programming
    CSCA48H3 Introduction to Computer Science
    CSCA65H3 Mathematical Expression and Reasoning for Computer Science
    MATA23H3 Linear Algebra I
    MATA31H3 Calculus I for Mathematical Sciences
    MATA37H3 Calculus II for Mathematical Sciences
    MGTA03H3 Introduction to Management I
    MGTA04H3 Introduction to Management II

    B level courses
    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
    MATB42H3 Techniques of the Calculus of Several Variables II
    STAB52H3 Introduction to Probability
    MGTB23H3 Managing People in Organizations
    MGTB29H3 Managing Groups and Organizations

    C level courses
    CSCC40H3 Analysis and Design of Information Systems
    CSCC43H3 Introduction to Databases
    CSCC63H3 Computability and Computational Complexity
    CSCC69H3 Operating Systems
    CSCC73H3 Algorithm Design and Analysis

    D level courses
    CSCD03H3 Social Impact of Information Technology
    CSCD08H3 Software Engineering
    CSCD43H3 Database System Technology

    Elective courses, all levels
    One of (additional courses in scientific computing):
    CSCC36H3 Numerical Methods
    CSCC50H3 Numerical Algebra and Optimization

    Two of (additional courses related to the practice of computing):
    CSCC09H3 Programming on the Web
    CSCC85H3 Microprocessor Systems
    CSCD11H3 Machine Learning and Data Mining
    CSCD18H3 Computer Graphics
    CSCD27H3 Computer and Network Security
    CSCD58H3 Computer Networks
    CSC321H Introduction to Neural Networks and Machine Learning
    CSC372H Microprocessor Software
    CSC384H Introduction to Artificial Intelligence
    CSC465H Formal Methods in Software Design
    CSC469H Operating Systems Design and Implementation
    CSC485H Computational Linguistics
    CSC488H Compilers and Interpreters

    One of (additional courses related to business and computing):
    CSC454H or (CSCD54H3) The Business of Software
    MATB61H3 Linear Programming and Optimization
    MGTC74H3 Analysis for Decision-Making

  3. Software Engineering Stream
    Supervisor of Studies: R. Pancer (416 287 7679) Email: pancer@utsc.utoronto.ca
    This stream requires 14.5 full credits

    Writing requirement
    (Should be completed by the end of second year.)
    See Comprehensive Stream.

    A level courses
    CSCA08H3 Introduction to Computer Programming
    CSCA48H3 Introduction to Computer Science
    CSCA65H3 Mathematical Expression and Reasoning for Computer Science
    MATA23H3 Linear Algebra I
    MATA31H3 Calculus I for Mathematical Sciences
    MATA37H3 Calculus II for Mathematical Sciences

    B level courses
    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
    MATB42H3 Techniques of the Calculus of Several Variables II
    STAB52H3 Introduction to Probability

    C level courses
    CSCC24H3 Principles of Programming Languages
    CSCC40H3 Analysis and Design of Information Systems
    CSCC43H3 Introduction to Databases
    CSCC63H3 Computability and Computational Complexity
    CSCC69H3 Operating Systems
    CSCC73H3 Algorithm Design and Analysis

    D level courses
    CSCD03H3 Social Impact of Information Technology
    CSCD08H3 Software Engineering

    Elective courses, all levels
    One of (additional courses in scientific computing):
    CSCC36H3 Numerical Methods
    CSCC50H3 Numerical Algebra and Optimization

    Four of (additional courses in the practice of computing):
    CSCC09H3 Programming on the Web
    CSCC85H3 Microprocessor Systems
    CSCD11H3 Machine Learning and Data Mining
    CSCD18H3 Computer Graphics
    CSCD27H3 Computer and Network Security
    CSCD43H3 Database System Technology
    CSCD58H3 Computer Networks
    CSC469H Operating Systems Design and Implementation
    CSC488H Compilers and Interpreters

  4. Joint Mathematics Stream
    This stream has been withdrawn from the curriculum. Every effort will be made to ensure that students currently enrolled in it are able to complete it. Students interested in this program should consider enrolling in the Major Program in Computer Science and the Major Program in Mathematics.

  5. Joint Physics Stream
    This stream has been withdrawn from the curriculum. Every effort will be made to ensure that students currently enrolled in it are able to complete it. Students interested in this program should consider enrolling in the Major Program in Computer Science and the Major Program in Physics and Astrophysics.

  6. Joint Statistics Stream
    This stream has been withdrawn from the curriculum. Every effort will be made to ensure that students currently enrolled in it are able to complete it. Students interested in this program should consider enrolling in the Major Program in Computer Science and the Major Program in Statistics.

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
The Co-operative Program in Computer Science is a work-study Program which combines academic studies in Computer Science with work terms in public and private enterprises. The Program prepares students for direct employment as a computer professional as well as for graduate study in Computer Science. For information on admissions, fees, work terms and standing in the Program, please see the Co-operative Programs section of this Calendar.

Program Admission
Prospective Applicants: For direct admission from secondary school or for students who wish to transfer to U of T Scarborough from another U of T faculty or from another post-secondary institution, see the Co-operative Programs section in this Calendar.
Current U of T Scarborough students: Application procedures can be found at the Registrar's Office website: www.utsc.utoronto.ca/subjectpost. The minimum qualifications for entry are 4.0 full credits including CSCA08H3, CSCA48H3, CSCA65H3, MATA23H3, MATA31H3 & MATA37H3 plus a cumulative GPA of at least 2.75.
*The Information Systems stream also requires MGTA03H3 & MGTA04H3.

Program Requirements
Work Terms
Students who entered the Program in 2001/2002 or later, must complete three work terms along with the academic Program. Students who entered before 2001/2002 must complete two work terms, with an optional third work term with permission of the Co-ordinator. Students must also successfully complete Arts & Science Co-op Work Term Preparation Activities, which include multiple networking sessions, speaker panels and industry tours along with seminars covering resumes, cover letters, job interviews and work term expectations, prior to their first work term. Students are not permitted to complete more than one summer work term.

Course Requirements
The Co-operative Program can be taken in conjunction with any of the streams in the Specialist Program in Computer Science. Please refer to the description of the Specialist Program in Computer Science. The courses may be taken in any order as long as the prerequisites and co-requisites are satisfied. Note: Each student's program requires the annual approval of the Supervisor of Studies. Students are individually responsible to ensure that they have correctly completed program and degree requirements for graduation.

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

See the Specialist Co-operative Program in Computer Science for admission information and work term requirements. Course requirements for the Co-operative Computer Science Major are the same as for the regular Computer Science Major (see below). The Co-operative Computer Science Major must be combined with a secondary Major in order to fulfill the degree requirements for an Honours B.Sc. The secondary Major must be pre-approved by the Supervisor of Studies.

MAJOR PROGRAM IN COMPUTER SCIENCE (SCIENCE)

Supervisor of Studies: R. Pancer (416-287-7679) Email: pancer@utsc.utoronto.ca

Program Admission
Each year up to 30 students are admitted to the second year of the Program, based on their first year GPA and marks in first-year courses in Computer Science and Mathematics. The minimum GPA to guarantee admission is calculated annually. It is never less than 2.00 and this year it will not be greater than 2.80.

Program Requirements
This program requires 8.0 full credits. The courses may be taken in any order as long as the prerequisites and co-requisites are satisfied.

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.

Writing recommendation:
Students in the Major program are strongly advised to take at least one of the following courses by the end of their second year: ANTA01H3, ANTA02H3, (CLAA02H3), CTLA19H3, ENGA10H3, ENGA11H3, ENGB06H3, ENGB07H3, ENGB08H3, ENGB17H3, ENGB19H3, ENGB50H3, ENGB51H3, GGRA02H3, GGRA03H3, GGRB05H3, (GGRB06H3), (HISA01H3), HLTA01H3, (HUMA11H3), (HUMA17H3), (LGGA99H3), LINA01H3, PHLA10H3, PHLA11H3, WSTA01H3.

A level courses
CSCA08H3 Introduction to Computer Programming
CSCA48H3 Introduction to Computer Science
CSCA65H3 Mathematical Expression and Reasoning for Computer Science
MATA23H3 Linear Algebra I
MATA31H3 Calculus I for Mathematical Sciences
MATA37H3 Calculus II for Mathematical Sciences

B level courses
CSCB07H3 Software Design
CSCB36H3 Introduction to the Theory of Computation
CSCB58H3 Computer Organization
CSCB63H3 Design and Analysis of Data Structures
MATB24H3 Linear Algebra II
STAB52H3 Introduction to Probability

Elective courses, all levels
The courses chosen must include four courses at the C- or D-level (300 or 400) level satisfying:
One of (additional courses in the practice of computing):
CSCC09H3 Programming on the Web
CSCC24H3 Principles of Programming Languages
CSCC40H3 Analysis and Design of Information Systems
CSCC43H3 Introduction to Databases
CSCC69H3 Operating Systems
CSCC85H3 Microprocessor Systems
CSCD11H3 Machine Learning and Data Mining
CSCD18H3 Computer Graphics
CSCD27H3 Computer and Network Security
(CSCD54H3) The Business of Software

One of (additional courses in scientific computing):
CSCC36H3 Numerical Methods
CSCC50H3 Numerical Algebra and Optimization

One of (additional courses in the theory of computing):
CSCC63H3 Computability and Computational Complexity
CSCC73H3 Algorithm Design and Analysis
CSC465H Formal Methods in Software Design
CSC448H Formal Languages and Automata

One of (additional courses in mathematics):
MATB41H3 Techniques of the Calculus of Several Variables I
MATB61H3 Linear Programming and Optimization
MATC09H3 Introduction to Mathematical Logic
MATC16H3 Coding Theory and Cryptography
MATC32H3 Graph Theory and Algorithms for its Applications
MATC44H3 Introduction to Combinatorics

MINOR PROGRAM IN COMPUTER SCIENCE (SCIENCE)

Supervisor of Studies: R. Pancer (416-287-7679) Email: pancer@utsc.utoronto.ca

Program Requirements
This program may not be combined with any Major or Specialist Program in Computer Science, Mathematics or Statistics. It requires 4.0 full credits as follows:

  1. All of: (introductory programming courses)
    CSCA20H3 Computer Science for the Sciences
    CSCA48H3 Introduction to Computer Science
  2. One of: (basic mathematics courses)
    CSCA65H3 Mathematical Expression and Reasoning for Computer Science
    MATA23H3 Linear Algebra I
    MATA31H3 Calculus I for Mathematical Sciences
    MATA32H3 Calculus for Management I
    PHLB50H3 Symbolic Logic I
  3. One of: (intermediate programming courses)
    CSCB07H3 Software Design
    CSCB09H3 Software Tools and System Programming
  4. One of: (prerequisites for other courses in the program)
    CSCB36H3 Introduction to the Theory of Computation
    CSCB58H3 Computer Organization
  5. One of: (courses in theoretical computer science or scientific computing)
    CSCB63H3 Design and Analysis of Data Structures
    CSCC36H3 Numerical Methods
    CSCC63H3 Computability and Computational Complexity
    CSCC73H3 Algorithm Design and Analysis
  6. One of: (courses in the practice of computing)
    CSCC09H3 Programming on the Web
    CSCC24H3 Principles of Programming Languages
    CSCC40H3 Analysis and Design of Information Systems
    CSCC43H3 Introduction to Databases
    CSCC69H3 Operating Systems
    CSCC85H3 Microprocessor Systems
    CSCD03H3 Social Impact of Information Technology
  7. One additional course from those listed in Requirements 5 and 6

Requirement 1 note: CSCA08H3 may be substituted, with permission of the program supervisor, for CSCA20H3.
Requirements 5 & 6 note: CSCB63H3, CSCC09H3, CSCC36H3, CSCC40H3, CSCC43H3, CSCC69H3 & CSCC73H3 may require that you take more than 4.0 full credits to complete the program. If you are interested in taking one of these courses, check the prerequisites carefully before deciding which courses to select from Requirements 2-4. See the program supervisor if you need a program exception for the statistics prerequisite for CSCB63H3 or for the calculus prerequisite for CSCC36H3.



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

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

CSCA65H3 Mathematical Expression and Reasoning for Computer Science
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.
Prerequisite: CSCA08H3 & Grade 12 Calculus & Vectors & one other Grade 12 mathematics course.
Corequisite: CSCA48H3
Exclusion: CSC165H, CSC240H
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, mark up 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: CSCB07H3 & [CGPA 2.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC209H
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 full credits & a cumulative 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 Computer Science 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
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: [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 & STAB52H3 & [CGPA 2.5 or enrolment in a CSC subject POSt]
Exclusion: CSC263H, CSC265H
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 development of modern programming languages. Syntax specification, type systems, type interface, exception handling, information hiding, structural recursion, run-time storage management, and programming paradigms. Two non-procedural programming paradigms: functional programming (e.g., Lisp, Scheme, ML or Haskell) and logic programming (e.g., Prolog, XSB or Coral).
Prerequisite: CSCB07H3 & CSCB36H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC324H
Breadth Requirement: Quantitative Reasoning

CSCC36H3 Numerical Methods
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 both a basic understanding of 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.
Prerequisite: [PSCB57H3 or CSCB07H3] & [MATA36H3 or MATA37H3] & MATA23H3 & [CGPA 3.0 or enrolment in a CSC subject POSt]
Exclusion: CSCC50H3, CSCC51H3, CSC336H, CSC350H, CSC351H
Breadth Requirement: Quantitative Reasoning

CSCC40H3 Analysis and Design of Information Systems
Theory, tools and techniques of information systems analysis and design. Topics include: theory of systems and organizations, structured analysis and design, user interface design.
Prerequisite: CSCB63H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC340H
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: CSCB63H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC343H
Breadth Requirement: Quantitative Reasoning

CSCC50H3 Numerical Algebra and Optimization
The efficiency and stability of solution techniques for systems of linear equations and least squares problems, including LU- and QR-based methods. Algorithms for optimization problems, including linear programming, and for systems of nonlinear equations.
Prerequisite: [PSCB57H3 or CSCB07H3] & MATB24H3 & MATB42H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSCC36H3, CSC336H, CSC350H
Breadth Requirement: Quantitative Reasoning

CSCC51H3 Numerical Approximation, Integration and Ordinary Differential Equations
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.
Prerequisite: CSCC50H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSCC36H3, CSC336H, CSC351H
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 problems: 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 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC373H, CSC375H, CSC364H
Breadth Requirement: Quantitative Reasoning

CSCC85H3 Microprocessor Systems
A study of hardware and software aspects of microcomputers and microprocessors. This course will examine instruction sets, addressing modes, memory devices, bus structures. Input/output and interrupt mechanisms. Assembly language and high-level language programming. System and applications software. Laboratory ex
periments will provide hands-on experience.
Prerequisite: CSCB58H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: ECE385H
Enrolment Limits: 100
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 full credits including CSCA08H3 or PSCB57H3 or CSCA48H3 [or, in special cases, (CSCA02H3) & permission of the instructor]
Exclusion: CSC300H
Enrolment Limits: 25
Breadth Requirement: Social & Behavioural Sciences

CSCD08H3 Software Engineering
The structure and unique characteristics of large software systems. Concepts and techniques in the design and implementation of large software systems. Requirements definition and specification. Software modularity and programming languages for system implementation. Debugging, testing and software quality assurance. Software project management. Formal methods in software engineering. A course project is used to illustrate software engineering techniques.
Prerequisite: CSCC40H3 & [CSCB09H3 or proficiency in C] & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion: CSC408H
Breadth Requirement: Quantitative Reasoning

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, and neural networks. Clustering algorithms. Problems of overfitting and of assessing accuracy. Problems with handling large databases.
Prerequisite: MATB24H3 & MATB41H3 & STAB52H3 & CSCB63H3 & [CSCC36H3 or CSCC50H3] & [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] & CSCB63H3 & [CSCC36H3 or CSCC50H3] & [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

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 full 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 full credits.

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 computer science half- 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
Note: Students must obtain consent from the Supervisor of Studies before registering for this course.
Exclusion: CSC495H

« Back to Cognitive Science Go to Table of Contents Continue to Concurrent Teacher Education»

Tomorrow is created here.

© University of Toronto Scarborough
1265 Military Trail, Toronto, ON, Canada, M1C 1A4