UTSC LOGO Calendar 2009-2010
Back to Cognitive Science
Continue to Concurrent Teacher Education
Up to Table of Contents and Search or Alphabetic Index

Computer Science  (B.Sc.)

Contents
Courses
CSCA08H3 CSCA20H3 CSCA48H3 CSCA65H3 CSCB07H3 CSCB09H3 CSCB29H3 CSCB36H3
CSCB58H3 CSCB63H3 CSCC09H3 CSCC24H3 CSCC36H3 CSCC40H3 CSCC43H3 CSCC50H3
CSCC51H3 CSCC63H3 CSCC69H3 CSCC73H3 CSCC85H3 CSCD03H3 CSCD08H3 CSCD11H3
CSCD18H3 CSCD27H3 CSCD43H3 CSCD54H3 CSCD58H3 CSCD71H3 CSCD72H3 CSCD94H3
CSCD95H3

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
B. Schroeder, M.Sc. (Saarbrucken), Ph.D. (Carnegie Mellon), Assistant Professor
N. Cheng, B.Sc. (Toronto), Senior Lecturer
R. Pancer, B.Sc., M.Sc., Ph.D. (Toronto), Senior Lecturer
A. Rosselet, B.Sc. (N.C.S.U.), M.Sc., Ph.D. (Toronto), Senior Lecturer
A. Bretscher, B.Sc., M.Sc. (Queen's), Ph.D. (Toronto), Lecturer
A. Hunter, M.Sc. (Toronto), Lecturer
C. Jansen, B.Sc., M.Sc. (Toronto), Lecturer
M. Szamosi, B.A. (Brandeis), M.A. (Harvard), Lecturer
K. Wain-Bantin, B.A. (Toronto), Lecturer

Associate Chair: W.H. Enright (416-287-7208)
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.
The Specialist Program in Computer Science prepares a student for graduate study and for a professional position in the computer field.
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
All CSC courses beyond the A-level, except for CSCB07H, are limited enrolment with preference being given to students admitted to and enrolled in CSC programs. If, towards the end of the registration period, spaces become available in CSC courses, registration may be opened up and some non-program students may be admitted on a first-come first-served basis. The following rules will apply:

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

SPECIALIST PROGRAM IN COMPUTER SCIENCE

This program has six streams:
  1. Comprehensive Stream
  2. Information Systems Stream
  3. Software Engineering Stream
  4. Joint Mathematics Stream
  5. Joint Physics Stream
  6. Joint Statistics Stream

Program Admission: Each year, up to 80 students are admitted to the six 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: ANTA01H, ANTA02H, (CLAA02H), ENGA10H, ENGA11H, ENGB06H, ENGB07H, ENGB08H, ENGB09H, ENGB17H, ENGB19H, ENGB50H, ENGB51H, GGRA02H, GGRA03H, GGRB05H, (GGRB06H), HISA01H, HLTA01H, HUMA11H, HUMA17H, HUMA19H, (LGGA99H), LINA01H, PHLA10H, PHLA11H, WSTA01H.
A-level courses
CSCA08H Introduction to Computer Programming
CSCA48H Introduction to Computer Science
CSCA65H Mathematical Expression and Reasoning for Computer Science
MATA23H Linear Algebra I
MATA30H Calculus I
MATA37H Calculus II for Mathematical Sciences
B-level courses
CSCB07H Software Design
CSCB09H Software Tools and Systems Programming
CSCB36H Introduction to the Theory of Computation
CSCB58H Computer Organization
CSCB63H Design and Analysis of Data Structures
MATB24H Linear Algebra II
MATB41H Techniques of the Calculus of Several Variables I
MATB42H Techniques of the Calculus of Several Variables II
STAB52H Introduction to Probability
C-level courses
CSCC24H Principles of Programming Languages
CSCC43H Introduction to Databases
CSCC50H Numerical Algebra and Optimization
CSCC51H Numerical Approximation, Integration and Ordinary Differential Equations
CSCC63H Computability and Computational Complexity
CSCC69H Operating Systems
CSCC73H Algorithm Design and Analysis
D-level courses
CSCD03H Social Impact of Information Technology
Elective courses, all levels
Two of (additional courses related to the practice of computing):
CSCC09H Programming on the Web
CSCC40H Analysis and Design of Information Systems
CSCC85H Microprocessor Systems
CSCD08H Software Engineering
CSCD11H Machine Learning and Data Mining
CSCD18H Computer Graphics
CSCD27H Computer and Network Security
CSCD43H Database System Technology
CSCD54H The Business of Software
CSCD58H Computer Networks
CSCD71H Topics in Computer Science
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):
MATB43H Introduction to Analysis
MATB44H Differential Equations I
MATC01H Groups and Symmetry
MATC02H Fields and Groups
MATC15H Introduction to Number Theory
MATC34H Complex Variables
MATC35H Chaos, Fractals and Dynamics
CSC446H Computational Methods for Partial Differential Equations
CSC456H High Performance Scientific Computing
One of (additional courses related to the theory of computing):
MATB61H Linear Programming and Optimization
MATC09H Introduction to Mathematical Logic
MATC16H Coding Theory and Cryptography
MATC32H Graph Theory and Algorithms for its Applications
MATC44H Introduction to Combinatorics
CSCD72H Topics in the Theory of Computing
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.5 full credits.
Writing requirement
(Should be completed by the end of second year.)
See Comprehensive Stream.
A-level courses
CSCA08H Introduction to Computer Programming
CSCA48H Introduction to Computer Science
CSCA65H Mathematical Expression and Reasoning for Computer Science
MATA23H Linear Algebra I
MATA30H Calculus I
MATA37H Calculus II for Mathematical Sciences
MGTA03H Introduction to Management I
MGTA04H Introduction to Management II
B-level courses
CSCB07H Software Design
CSCB09H Software Tools and Systems Programming
CSCB36H Introduction to the Theory of Computation
CSCB58H Computer Organization
CSCB63H Design and Analysis of Data Structures
MATB24H Linear Algebra II
MATB41H Techniques of the Calculus of Several Variables I
MATB42H Techniques of the Calculus of Several Variables II
STAB52H Introduction to Probability
MGTB23H Managing People in Organizations
MGTB29H Managing Groups and Organizations
C-level courses
CSCC24H Principles of Programming Languages
CSCC40H Analysis and Design of Information Systems
CSCC43H Introduction to Databases
CSCC63H Computability and Computational Complexity
CSCC69H Operating Systems
CSCC73H Algorithm Design and Analysis
D-level courses
CSCD03H Social Impact of Information Technology
CSCD08H Software Engineering
CSCD43H Database System Technology
Elective courses, all levels
One of (additional courses in scientific computing):
CSCC36H Numerical Methods
CSCC50H Numerical Algebra and Optimization
Two of (additional courses related to the practice of computing):
CSCC09H Programming on the Web
CSCC85H Microprocessor Systems
CSCD11H Machine Learning and Data Mining
CSCD18H Computer Graphics
CSCD27H Computer and Network Security
CSCD58H Computer Networks
CSCD71H Topics in Computer Science
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):
CSCD54H The Business of Software
MATB61H Linear Programming and Optimization
(MATC61H) Introduction to Mathematical Finance
MGTC74H 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
CSCA08H Introduction to Computer Programming
CSCA48H Introduction to Computer Science
CSCA65H Mathematical Expression and Reasoning for Computer Science
MATA23H Linear Algebra I
MATA30H Calculus I
MATA37H Calculus II for Mathematical Sciences
B-level courses
CSCB07H Software Design
CSCB09H Software Tools and Systems Programming
CSCB36H Introduction to the Theory of Computation
CSCB58H Computer Organization
CSCB63H Design and Analysis of Data Structures
MATB24H Linear Algebra II
MATB41H Techniques of the Calculus of Several Variables I
MATB42H Techniques of the Calculus of Several Variables II
STAB52H Introduction to Probability
C-level courses
CSCC24H Principles of Programming Languages
CSCC40H Analysis and Design of Information Systems
CSCC43H Introduction to Databases
CSCC63H Computability and Computational Complexity
CSCC69H Operating Systems
CSCC73H Algorithm Design and Analysis
D-level courses
CSCD03H Social Impact of Information Technology
CSCD08H Software Engineering
Elective courses, all levels
One of (additional courses in scientific computing):
CSCC36H Numerical Methods
CSCC50H Numerical Algebra and Optimization
Four of (additional courses in the practice of computing):
CSCC09H Programming on the Web
CSCC85H Microprocessor Systems
CSCD11H Machine Learning and Data Mining
CSCD18H Computer Graphics
CSCD27H Computer and Network Security
CSCD43H Database System Technology
CSCD58H Computer Networks
CSCD71H Topics in Computer Science
CSC469H Operating Systems Design and Implementation
CSC488H Compilers and Interpreters
4. Joint Mathematics Stream
Supervisor of Studies: R. Pancer (416-287-7679) Email: pancer@utsc.utoronto.ca
This stream requires 15.5 full credits
Writing requirement
(Should be completed by the end of second year.)
See Comprehensive Stream.
A-level courses
CSCA08H Introduction to Computer Programming
CSCA48H Introduction to Computer Science
CSCA65H Mathematical Expression and Reasoning for Computer Science
MATA23H Linear Algebra I
MATA30H Calculus I
MATA37H Calculus II for Mathematical Sciences
B-level courses
CSCB07H Software Design
CSCB36H Introduction to the Theory of Computation
CSCB58H Computer Organization
CSCB63H Design and Analysis of Data Structures
MATB24H Linear Algebra II
MATB41H Techniques of the Calculus of Several Variables I
MATB42H Techniques of the Calculus of Several Variables II
MATB43H Introduction to Analysis
MATB44H Differential Equations I
STAB52H Introduction to Probability
C-level courses
CSCC50H Numerical Algebra and Optimization
CSCC63H Computability and Computational Complexity
CSCC73H Algorithm Design and Analysis
MATC01H Groups and Symmetry
MATC34H Complex Variables
Elective courses, all levels
One of (additional courses in computing systems):
CSCC24H Principles of Programming Languages
CSCC43H Introduction to Databases
CSCC69H Operating Systems
Four of (mathematics courses with applications in theory of computing):
MATC02H Fields and Groups
MATC09H Introduction to Mathematical Logic
MATC15H Introduction to Number Theory
MATC16H Coding Theory and Cryptography
MATC32H Graph Theory and Algorithms for its Applications
MATC44H Introduction to Combinatorics
Three of (additional courses in analysis - numerical, real and complex):
CSCC51H Numerical Approximation, Integration and Ordinary Differential Equations
MATC35H Chaos, Fractals and Dynamics
MATC37H Introduction to Real Analysis
MATC46H Differential Equations II
MATC65H Complex Analysis II
One of (courses in the relationship of science and society):
PSCD02H Current Questions in Mathematics and Science
CSCD03H Social Impact of Information Technology
5. Joint Physics Stream
Supervisor of Studies: C.C. Dyer (416-287-7206) Email: dyer@utsc.utoronto.ca
This stream requires 16.5 full credits
Writing requirement
(Should be completed by the end of second year.)
See Comprehensive Stream.
A-level courses
CSCA08H Introduction to Computer Programming
CSCA48H Introduction to Computer Science
CSCA65H Mathematical Expression and Reasoning for Computer Science
MATA23H Linear Algebra I
MATA30H Calculus I
MATA37H Calculus II for Mathematical Sciences
PHYA10H Introduction to Physics IA
PHYA21H Introduction to Physics IIA
B-level courses
CSCB07H Software Design
CSCB09H Software Tools and Systems Programming
CSCB36H Introduction to the Theory of Computation
CSCB58H Computer Organization
CSCB63H Design and Analysis of Data Structures
MATB24H Linear Algebra II
MATB41H Techniques of the Calculus of Several Variables I
MATB42H Techniques of the Calculus of Several Variables II
MATB44H Differential Equations I
STAB52H Introduction to Probability Theory
PHYB10H Intermediate Physics Laboratory I
PHYB20H Vibrations and Waves
PHYB21H Electricity and Magnetism
PHYB25H Foundation of Modern Physics
PHLB70H Philosophy of Science
[PHYB11H Intermediate Physics Laboratory I
or
PSCB01H The Instrumentation of Science]
C-level courses
CSCC50H Numerical Algebra and Optimization
CSCC51H Numerical Approximation, Integration and Ordinary Differential Equations
CSCC63H Computability and Computational Complexity
CSCC73H Algorithm Design and Analysis
CSCC85H Microprocessor Systems
PHYC24H Quantum Physics I
Elective courses, all levels
One of (additional courses in computer systems):
CSCC24H Principles of Programming Languages
CSCC43H Introduction to Databases
CSCC69H Operating Systems
One of (additional courses in the relationship between science and society):
PSCD02H Current Questions in Mathematics and Science
CSCD03H Social Impact of Information Technology
6. Joint Statistics Stream
Supervisor of Studies: A. Hashim (416-287-7252) Email: hashim@utsc.utoronto.ca
This stream requires 13.5 full credits.
Writing requirement
(Should be completed by the end of second year.)
See Comprehensive Stream.
A-level courses
CSCA08H Introduction to Computer Programming
CSCA48H Introduction to Computer Science
CSCA65H Mathematical Expression and Reasoning for Computer Science
MATA23H Linear Algebra I
MATA30H Calculus I
MATA37H Calculus II for Mathematical Sciences
B-level courses
CSCB07H Software Design
CSCB36H Introduction to the Theory of Computation
CSCB58H Computer Organization
CSCB63H Design and Analysis of Data Structures
MATB24H Linear Algebra II
MATB41H Techniques of the Calculus of Several Variables I
MATB42H Techniques of the Calculus of Several Variables II
STAB52H Introduction to Probability
STAB57H Introduction to Statistics
C-level courses
CSCC50H Numerical Algebra and Optimization
CSCC51H Numerical Approximation, Integration and Ordinary Differential Equations
CSCC63H Computability and Computational Complexity
CSCC73H Algorithm Design and Analysis
Elective courses, all levels
One of (additional mathematics courses):
MATB43H Introduction to Analysis
MATB44H Differential Equations I
MATB61H Linear Programming and Optimization
MATC01H Groups and Symmetry
MATC15H Introduction to Number Theory
MATC34H Complex Variables
MATC35H Chaos, Fractals and Dynamics
One of (additional courses in computer systems):
CSCC24H Principles of Programming Languages
CSCC43H Introduction to Databases
CSCC69H Operating Systems
Four of (additional courses in statistics and related topics):
ACTB47H Introductory Life Contingencies
Any C-level STA course
Any 300- or 400- STA course on the St. George campus
(MATC61H) Introduction to Mathematical Finance
One of (additional courses in the relationship between science and society):
PSCD02H Current Questions in Mathematics and Science
CSCD03H Social Impact of Information Technology

SPECIALIST (CO-OPERATIVE) PROGRAM IN COMPUTER 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 CSCA08H, CSCA48H, CSCA65H, MATA23H, MATA30H & MATA37H plus a cumulative GPA of at least 2.75.
*.The Information Systems stream also requires MGTA03H & MGTA04H.
*.The Joint Physics stream also requires PHYA10H & PHYA21H.

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 complete the Arts & Science Work Term Preparation course before going on 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

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

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:
ANTA01H, ANTA02H, (CLAA02H), ENGA10H, ENGA11H, ENGB06H, ENGB07H, ENGB08H, ENGB17H, ENGB19H, ENGB50H, ENGB51H, GGRA02H, GGRA03H, GGRB05H, (GGRB06H), HISA01H, HLTA01H, HUMA11H, HUMA17H, HUMA19H, (LGGA99H), LINA01H, PHLA10H, PHLA11H, WSTA01H.
A-level courses
CSCA08H Introduction to Computer Programming
CSCA48H Introduction to Computer Science
CSCA65H Mathematical Expression and Reasoning for Computer Science
MATA23H Linear Algebra I
MATA30H Calculus I
MATA37H Calculus II for Mathematical Sciences
B-level courses
CSCB07H Software Design
CSCB36H Introduction to the Theory of Computation
CSCB58H Computer Organization
CSCB63H Design and Analysis of Data Structures
MATB24H Linear Algebra II
STAB52H Introduction to Probability
Elective courses, all levels
One of (additional courses in the practice of computing):
CSCC09H Programming on the Web
CSCC24H Principles of Programming Languages
CSCC40H Analysis and Design of Information Systems
CSCC43H Introduction to Databases
CSCC69H Operating Systems
CSCC85H Microprocessor Systems
CSCD11H Machine Learning and Data Mining
CSCD18H Computer Graphics
CSCD27H Computer and Network Security
CSCD54H The Business of Software
CSCD71H Topics in Computer Science
One of (additional courses in scientific computing):
CSCC36H Numerical Methods
CSCC50H Numerical Algebra and Optimization
One of (additional courses in the theory of computing):
CSCC63H Computability and Computational Complexity
CSCC73H Algorithm Design and Analysis
CSC465H Formal Methods in Software Design
CSC448H Formal Languages and Automata
One of (additional courses in mathematics):
MATB41H Techniques of the Calculus of Several Variables I
MATB61H Linear Programming and Optimization
MATC09H Introduction to Mathematical Logic
MATC16H Coding Theory and Cryptography
MATC32H Graph Theory and Algorithms for its Applications
MATC44H Introduction to Combinatorics

MINOR PROGRAM IN COMPUTER 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)
    CSCA20H Computer Science for the Sciences
    CSCA48H Introduction to Computer Science
  2. One of: (basic mathematics courses)
    CSCA65H Mathematical Expression and Reasoning for Computer Science
    MATA23H Linear Algebra I
    MATA30H Calculus I
    MATA32H Calculus for Management I
    PHLB50H Symbolic Logic I
  3. One of: (intermediate programming courses)
    CSCB07H Software Design
    CSCB09H Software Tools and System Programming
  4. One of: (prerequisites for other courses in the program)
    CSCB36H Introduction to the Theory of Computation
    CSCB58H Computer Organization
  5. One of: (courses in theoretical computer science or scientific computing)
    CSCB63H Design and Analysis of Data Structures
    CSCC36H Numerical Methods
    CSCC63H Computability and Computational Complexity
    CSCC73H Algorithm Design and Analysis
  6. One of: (courses in the practice of computing)
    CSCC09H Programming on the Web
    CSCC24H Principles of Programming Languages
    CSCC40H Analysis and Design of Information Systems
    CSCC43H Introduction to Databases
    CSCC69H Operating Systems
    CSCC85H Microprocessor Systems
    CSCD03H Social Impact of Information Technology
  7. One additional course from those listed in Requirements 5 and 6

Requirement 1 note: CSCA08H may be substituted, with permission of the program supervisor, for CSCA20H.
Requirements 5 & 6 note: CSCB63H, CSCC09H, CSCC36H, CSCC40H, CSCC43H, CSCC69H & CSCC73H 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 CSCB63H or for the calculus prerequisite for CSCC36H.

SPECIALIST PROGRAM IN MANAGEMENT AND INFORMATION TECHNOLOGY

See the Management section of this Calendar for program requirements.

SPECIALIST PROGRAM IN QUANTITATIVE ANALYSIS

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.
Exclusion: CSCA20H, CSC108H, CSC120H. CSCA08H may not be taken after or concurrently with CSCA48H.
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 CSCA48H; consult the instructor or the Supervisor of Studies for guidance.

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: CSCA08H, CSC108H, CSC120H

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.
Exclusion: CSC148H
Prerequisite: CSCA08H & 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 CSCA08H. Students who already have this background may consult the instructor or Supervisor of Studies for advice about skipping CSCA08H. Students who enrol in CSCA48H and find the course too difficult may "drop down" to CSCA08H in sessions when CSCA08H is offered. The deadline for "dropping down" is the end of the fifth week of classes.

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.
Exclusion: CSC165H, CSC240H
Prerequisite: CSCA08H & Grade 12 Calculus & Vectors & one other Grade 12 mathematics course.
Corequisite: CSCA48H

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.
Exclusion: CSC207H
Prerequisite: CSCA48H
Corequisite: CSCA65H

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.
Exclusion: CSC209H
Prerequisite: CSCB07H & [CGPA 2.5 or enrolment in a CSC subject POSt]

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).
Exclusion: This course may not be taken after or concurrently with any C- or D-level Computer Science course.
Prerequisite: [CSCA08H or CSCA20H or PSCB57H] & 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 CSCA08H. Students who already have this background may consult the instructor or Supervisor of Studies for advice about skipping CSCA08H/CSCA20H/PSCB57H.

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.
Exclusion: CSC236H, CSC240H
Prerequisite: CSCA48H & CSCA65H & [CGPA 2.5 or enrolment in a CSC subject POSt]

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.
Exclusion: CSC258H
Prerequisite: [CSCA48H or PSCB57H] & [CGPA 2.5 or enrolment in a CSC subject POSt]

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.
Exclusion: CSC263H, CSC265H
Prerequisite: CSCB07H & CSCB36H & STAB52H & [CGPA 2.5 or enrolment in a CSC subject POSt]

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.
Exclusion: CSC309H
Prerequisite: CSCB09H & CSCC43H & [CGPA 3.0 or enrolment in a CSC subject POSt]

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).
Exclusion: CSC324H
Prerequisite: CSCB07H & CSCB36H & [CGPA 3.0 or enrolment in a CSC subject POSt]

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.
Exclusion: CSCC50H, CSCC51H, CSC336H, CSC350H, CSC351H
Prerequisite: [PSCB57H or CSCB07H] & [MATA36H or MATA37H] & MATA23H & [CGPA 3.0 or enrolment in a CSC subject POSt]

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.
Exclusion: CSC340H
Prerequisite: CSCB63H & [CGPA 3.0 or enrolment in a CSC subject POSt]

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.
Exclusion: CSC343H
Prerequisite: CSCB63H & [CGPA 3.0 or enrolment in a CSC subject POSt]

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.
Exclusion: CSCC36H, CSC336H, CSC350H
Prerequisite: [PSCB57H or CSCB07H] & MATB24H & MATB42H & [CGPA 3.0 or enrolment in a CSC subject POSt]

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.
Exclusion: CSCC36H, CSC336H, CSC351H
Prerequisite: CSCC50H & [CGPA 3.0 or enrolment in a CSC subject POSt]

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 CSCC63H & CSCC73H may be taken in any order, it is recommended that CSCC73H be taken first.
Exclusion: CSC363H, CSC365H, CSC364H
Prerequisite: CSCB36H & [CGPA 3.0 or enrolment in a CSC subject POSt]

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.
Exclusion: CSC369H
Prerequisite: CSCB07H & CSCB09H & CSCB58H & [CGPA 3.0 or enrolment in a CSC subject POSt]

CSCC73H3 Algorithm Design and Analysis
Standard algorithm design techniques: divide-and-conquer, greedy strategies, dynamic programming, linear programming, randomization, and possibly others.
Exclusion: CSC373H, CSC375H, CSC364H
Prerequisite: CSCB63H & [CGPA 3.0 or enrolment in a CSC subject POSt]

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 experiments will provide hands-on experience.
Limited enrolment: 100
Exclusion: ECE385H
Prerequisite: CSCB58H & [CGPA 3.0 or enrolment in a CSC subject POSt]

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.
Limited enrolment: 25
Exclusion: CSC300H
Prerequisite: 14.0 full credits including CSCA08H or PSCB57H or CSCA48H [or, in special cases, (CSCA02H) & permission of the instructor]

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.
Exclusion: CSC408H
Prerequisite: CSCC40H & [CSCB09H or proficiency in C] & [CGPA 3.0 or enrolment in a CSC subject POSt]

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.
Exclusion: CSC411H
Prerequisite: MATB24H & MATB41H & STAB52H & CSCB63H & [CSCC36H or CSCC50H] or permission of the instructor & [CGPA 3.0 or enrolment in a CSC subject POSt]

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.
Exclusion: CSC418H
Prerequisite: MATB24H & MATB42H & [CSCB09H or proficiency in C] & CSCB63H & [CSCC36H or CSCC50H] & [CGPA 3.0 or enrolment in a CSC subject POSt]

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.
Exclusion: CSC427H
Prerequisite: CSCB09H & CSCB36H & [CGPA 3.0 or enrolment in a CSC subject POSt]
Recommended Preparation: CSCC69H

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.
Exclusion: CSC443H
Prerequisite: CSCC43H & CSCC69H & CSCC73H & [CGPA 3.0 or enrolment in a CSC subject POSt]

CSCD54H3 The Business of Software
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.
Exclusion: CSC454H
Prerequisite: 2.5 full credits in Computer Science at the B-level or higher & [CGPA 3.0 or enrolment in a CSC subject POSt]

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.
Exclusion: CSC458H
Prerequisite: CSCB58H & CSCB63H & [STAB52H or STAB57H] & [CGPA 3.0 or enrolment in a CSC Subject POSt]

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.
Exclusion: CSC494H
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.

CSCD95H3 Computer Science Project
Same description as CSCD94H. 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.
Exclusion: CSC495H
Prerequisite: CSCD94H
Note: Students must obtain consent from the Supervisor of Studies before registering for this course.


Published Monday June 15th, 2009   Section last updated Mon Apr 13, 2009

UTSC LOGO Calendar 2009-2010
Back to Cognitive Science
Continue to Concurrent Teacher Education
Up to Table of Contents and Search or Alphabetic Index