Computer Science

Faculty List

  • R. Abou Assi, M.Sc., Ph.D. (Beirut), CLTA Assistant Professor, Teaching Stream
  • A. Anderson, B.Eng. (McGill), M.Sc., Ph.D. (Stanford), Assistant Professor
  • A. Bretscher, B.Sc., M.Sc. (Queen's), Ph.D. (Toronto), Associate Professor, Teaching Stream
  • N. Cheng, B.Sc. (Toronto), Associate Professor, Teaching Stream
  • W.H. Enright, B.Sc. (U.B.C.), M.Sc., Ph.D. (Toronto), Professor Emeritus
  • F. Estrada, B.Eng. (ITESM, Mex.), M.Sc., Ph.D. (Toronto), Professor, Teaching Stream
  • D.J. Fleet, B.Sc. (Queen's), M.Sc., Ph.D. (Toronto), Professor
  • P. Gawde, B.Sc. (Mumbai), M.Sc., Ph.D. (Kent), CLTA Assistant Professor, Teaching Stream 
  • V. Hadzilacos, B.S.E. (Princeton), Ph.D. (Harvard), Professor
  • B. Harrington, Hon. B.Sc. (Toronto), M.Sc., D.Phil. (Oxford), Professor, Teaching Stream
  • I. Huang, B.Eng. (Beijing), M.ASc., M.Sc. (Regina), Ph.D. (Waterloo), Assistant Professor, Teaching Stream
  • G. Hirst, B.A., B.Sc. (Monash), M.Sc. (A.N.U., U.B.C.), Ph.D. (Brown), Professor Emeritus
  • N. Koudas, B.Sc. (Patras), M.Sc. (Maryland), Ph.D. (Toronto), Professor
  • M. Molloy, B.Math, M.Math (Waterloo), Ph.D. (Carnegie Mellon), Professor
  • R. Pancer, B.Sc., M.Sc., Ph.D. (Toronto), Associate Professor, Teaching Stream
  • G. Pekhimenko, B.Sc. (Taurida), M.Sc., (Toronto), Ph.D. (Carnegie Mellon), Assistant Professor
  • M. Ponce, B.Sc., M.Sc. (UdelaR, Uruguay), Ph.D. (RIT), Assistant Professor, Teaching Stream 
  • A. Rosselet, B.Sc. (NCSU), M.Sc., Ph.D. (Toronto), Associate Professor, Teaching Stream Emeritus
  • T. Sans, B.Sc. (Paul Sabatier), M.Sc. (Supaero), Ph.D. (Telecom-Bretagne), Associate Professor, Teaching Stream
  • B. Schroeder, M.Sc. (Saarbrucken), Ph.D. (Carnegie Mellon), Professor
  • A. Tafliovich, Hon. B.Sc., M.Sc., Ph.D. (Toronto), Professor, Teaching Stream
  • R. Tell, B.A. (Tel Aviv), B.Sc. (OpenU), M.Sc., Ph.D. (Weizmann), Assistant Professor
  • N. Vijaykumar, B.E. (PES), M.Sc., Ph.D. (Carnegie Mellon), Assistant Professor
  • Q. Zhang, B.E. (Harbin), Ph.D. (Pennsylvania), Assistant Professor

Associate Chair: A. Tafliovich (416-287-7410) anya@cs.utoronto.ca

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 Specialist, Major, and Minor programs. Information on how to apply for admission to a program is given below.

Note: Admission to CSC Courses
CSC courses are open to all students who meet the pre-requisites. Non-CSC program students will be permitted to take CSC courses as required for their programs. Otherwise non-CSC program students who wish to take B-, C-, or D-level courses must meet additional cumulative grade point average (CGPA) requirements:

  • A student who is not in a CSC program and does not have a CGPA of at least 3.5 may not take any B-level CSC course, with the exception of CSCB20H3.
  • A student who is not in a CSC program and does not have a CGPA of at least 3.5 may not take any C- or D-level CSC course.
  • When a B-, C-, or D-level CSC course 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 programs in Computer Science at any point after the first year will be subject to retroactive program tuition fees.

Program Combination Restrictions in Computer Science

The Specialist/Specialist Co-op, Major/Major Co-op, and Minor programs in Computer Science cannot be combined.

Experiential Learning and Outreach

For a community-based experiential learning opportunity in your academic field of interest, consider the course CTLB03H3, which can be found in the Teaching and Learning section of the 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 four 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.

The Entrepreneurship Stream includes a solid core of computer science and software engineering, while exposing students to the framework and methodologies that underlie the development of innovative technology ideas into viable commercial opportunities. Enrolment into the Entrepreneurship stream will be limited to highly qualified and motivated students, and preference will be given to students enrolled in the Specialist (Co-operative) program.

Note: the Health Informatics Stream has been suspended to new enrolments and will be fully closed effective with the 2020-21 academic year.

The structure of the program requirements allows one to easily switch streams until relatively late in the program. Consequently, these streams should not be viewed as rigidly separated channels feeding students to different career paths, but as a flexible structure that provides computer science students guidance in their course selection based on their broad (but possibly fluid) interests.

Enrolment Requirements

Enrolment in the Specialist in Computer Science (all streams) is limited. Students may apply to enter the program after completing 4.0 credits, and must meet the requirements described below:

1. Students already admitted to the UTSC Year 1 Computer Science admissions category:

Required Courses:

Students must have passed the following CSC and MAT courses: CSCA08H3, CSCA48H3, [CSCA67H3 or MATA67H3], MATA22H3, MATA31H3, and MATA37H3.

Required Grades:

Students that meet all of the following requirements will be admitted to a CS Specialist POSt*:
a. A cumulative grade point average (CGPA) of at least 2.5 over the following courses: CSCA48H3, CSC/MATA67H3, MATA22H3, MATA31H3, and MATA37H3;
b. A final grade of at least B in CSCA48H3; and
c. A final grade of at least C- in two of the following: CSC/MATA67H3, MATA22H3, and MATA37H3.

*Students must select one stream of the CS Specialist as follows:
a. Students can select either the Comprehensive stream or the Software Engineering stream.
b. A limited number of students will be admitted to the Information Systems stream, depending on available space.
c. Admission to the Entrepreneurship stream will be based in part on submission of a Supplementary Application Form (SAF) available on the Department of Computer and Mathematical Sciences website. Applications for admission will be accepted once per academic year, during the April-May POSt admissions round.

2. Students admitted to other UTSC Year 1 admissions categories:

Students that have been admitted to either the UTSC Year 1 Math or UTSC Year 1 Statistics admissions categories are eligible to apply for the Computer Science Specialist POSt. Admission will be based on academic performance in the required A-level courses, identified above. The admission requirements change each year depending on available spaces and the pool of eligible applicants, and students are cautioned that there is no guarantee of admission; as such, students are strongly advised to plan to enroll in backup programs.

Students that have not been admitted to a UTSC Year 1 CMS admissions category (Computer Science, Mathematics, or Statistics) must achieve a final grade of at least A- in both MATA31H3 and CSC/MATA67H3 the first time they complete these courses in order to be eligible to apply for a CS Specialist POSt. This is a strict requirement. Admission will be based on academic performance in the required A-level courses, identified above. The admission requirements change each year depending on available spaces and the pool of eligible applicants, and students are cautioned that there is no guarantee of admission; as such, students are strongly advised to plan to enroll in backup programs.

For more information about the admission requirements, please visit the following CMS webpage.

To remain in the program, a student must maintain a CGPA of 2.0 or higher throughout the program.

Note: Students admitted to the program after second or third year will be required to pay retroactive deregulated program fees.

Program Requirements
The program requirements comprise a core of 18 courses (9.0 credits), common to all streams and additional requirements which depend on the stream, for a total of 27 courses (13.5 credits) for the Comprehensive, Software Engineering, and Entrepreneurship streams, and 29 courses (14.5 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 (9.0 credits)

1. Writing Requirement (0.5 credit)*
0.5 credit from the following: ANTA01H3, ANTA02H3, CLAA06H3, (CTLA19H3), CTLA01H3, ENGA10H3, ENGA11H3, ENGB06H3, ENGB07H3, ENGB08H3, ENGB09H3, ENGB17H3, ENGB19H3, ENGB50H3, (ENGB51H3), GGRA02H3, GGRA03H3, GGRB05H3, (GGRB06H3), (HISA01H3), (HLTA01H3), ACMA01H3, (HUMA01H3), (HUMA11H3), (HUMA17H3), (LGGA99H3), LINA01H3, PHLA10H3, PHLA11H3, WSTA01H3.
*Note: It is recommended that this requirement be satisfied by the end of the second year.

2. A-level courses (3.0 credits)
CSCA08H3 Introduction to Computer Science I
CSCA48H3 Introduction to Computer Science II
CSCA67H3 Discrete Mathematics
MATA22H3 Linear Algebra I for Mathematical Sciences
MATA31H3 Calculus I for Mathematical Sciences
MATA37H3 Calculus II for Mathematical Sciences

3. B-level courses (3.5 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
STAB52H3 Introduction to Probability

4. C-level courses (1.5 credits)
CSCC43H3 Introduction to Databases
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, 9 other distinct courses (4.5 credits) must be chosen to satisfy all of the following requirements:

6. Additional required courses (2.5 credits)
CSCC24H3 Principles of Programming Languages
CSCC37H3 Introduction to Numerical Algorithms for Computational Mathematics
CSCC63H3 Computability and Computational Complexity
CSCD37H3 Analysis of Numerical Algorithms for Computational Mathematics
MATB41H3 Techniques of the Calculus of Several Variables I

7. Electives from courses on computer systems and applications (1.0 credit)
Choose from:
CSCC01H3 Introduction to Software Engineering
CSCC09H3 Programming on the Web
CSCC10H3 Human-Computer Interaction
CSCC11H3 Introduction to Machine Learning and Data Mining
CSCC46H3 Social and Information Networks
CSCC85H3 Fundamentals of Robotics and Automated Systems
CSCD01H3 Engineering Large Software Systems
CSCD18H3 Computer Graphics
CSCD25H3 Advanced Data Analysis
CSCD27H3 Computer and Network Security
CSCD43H3 Database System Technology
CSCD58H3 Computer Networks
CSCD70H3 Compiler Optimization
CSCD84H3 Artificial Intelligence
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)
Choose from:
MATC09H3 Introduction to Mathematical Logic
MATC32H3 Graph Theory and Algorithms for its Applications
MATC44H3 Introduction to Combinatorics
MATD16H3 Coding Theory and Cryptography
CSC438H Computability and Logic
CSC448H Formal Languages and Automata
CSC465H Formal Methods in Software Design

9. CSC, MAT, or STA elective (0.5 credit)
Any C- or D-level CSC, MAT, or STA course, excluding MATC82H3, MATC90H3, STAC32H3, STAC53H3 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, 9 other distinct courses (4.5 credits) must be chosen to satisfy all of the following requirements:

6. Additional required courses (3.0 credits)
CSCC01H3 Introduction to Software Engineering
CSCC24H3 Principles of Programming Languages
CSCC37H3 Introduction to Numerical Algorithms for Computational Mathematics
CSCC63H3 Computability and Computational Complexity
CSCD01H3 Engineering Large Software Systems
MATB41H3 Techniques of the Calculus of Several Variables I

7. Electives from courses on computer systems and applications (1.5 credits)
Choose from:
CSCC09H3 Programming on the Web
CSCC10H3 Human-Computer Interaction
CSCC11H3 Introduction to Machine Learning and Data Mining
CSCC46H3 Social and Information Networks
CSCC85H3 Fundamentals of Robotics and Automated Systems
CSCD18H3 Computer Graphics
CSCD25H3 Advanced Data Analysis
CSCD27H3 Computer and Network Security
CSCD43H3 Database System Technology
CSCD58H3 Computer Networks
CSCD70H3 Compiler Optimization
CSCD84H3 Artificial Intelligence
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 29 courses (14.5 credits). In addition to the core requirements 1-5 common to all streams, 11 other distinct courses (5.5 credits) must be chosen to satisfy all of the following requirements:

6. Required management courses (1.5 credits)
MGTA01H3 Introduction to Business
MGTA02H3 Managing the Business Organization
MGHB02H3 Managing People and Groups in Organizations

7. Additional required mathematics and computer science courses (3.0 credits)
CSCC01H3 Introduction to Software Engineering
CSCC37H3 Introduction to Numerical Algorithms for Computational Mathematics
CSCC63H3 Computability and Computational Complexity
CSCD01H3 Engineering Large Software Systems
CSCD43H3 Database System Technology
MATB41H3 Techniques of the Calculus of Several Variables I

8. Electives from courses on computer systems and applications (1.0 credit)
Choose from:
CSCC09H3 Programming on the Web
CSCC10H3 Human-Computer Interaction
CSCC11H3 Introduction to Machine Learning and Data Mining
CSCC46H3 Social and Information Networks
CSCC85H3 Fundamentals of Robotics and Automated Systems
CSCD18H3 Computer Graphics
CSCD25H3 Advanced Data Analysis
CSCD27H3 Computer and Network Security
CSCD58H3 Computer Networks
CSCD70H3 Compiler Optimization
CSCD84H3 Artificial Intelligence
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


D. Entrepreneurship Stream
This stream requires a total of 27 courses (13.5 credits). In addition to the core requirements 1-5 common to all streams, 9 other distinct courses (4.5 credits) must be chosen to satisfy all of the following requirements:

6. Additional required courses (3.0 credits)
CSCC01H3 Introduction to Software Engineering
CSCC37H3 Introduction to Numerical Algorithms for Computational Mathematics
CSCC63H3 Computability and Computational Complexity
CSCD01H3 Engineering Large Software Systems
CSCD54H3 Technology Innovation and Entrepreneurship
CSCD90H3 The Startup Sandbox

7. Electives from courses in computer science, mathematics, and statistics (1.5 credits)
Choose from:
CSCC09H3 Programming on the Web
CSCC10H3 Human-Computer Interaction
CSCC11H3 Introduction to Machine Learning and Data Mining
CSCC24H3 Principles of Programming Languages
CSCC46H3 Social and Information Networks
CSCC85H3 Fundamentals of Robotics and Automated Systems
CSCD18H3 Computer Graphics
CSCD25H3 Advanced Data Analysis
CSCD27H3 Computer and Network Security
CSCD43H3 Database System Technology
CSCD58H3 Computer Networks
CSCD70H3 Compiler Optimization
CSCD84H3 Artificial Intelligence
MATB41H3 Techniques of the Calculus of Several Variables I
STAB57H3 Introduction to Statistics
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)

Academic Program Advisor: S. Calanza susan.calanza@utoronto.ca
Co-op Program Coordinator: C. Dixon coopsuccess.utsc@utoronto.ca

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 four 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.

The Entrepreneurship Stream includes a solid core of computer science and software engineering, while exposing students to the framework and the methodologies that underlie the development of innovative technology ideas into viable commercial opportunities. Enrolment into the Entrepreneurship stream will be limited to highly qualified and motivated students, and preference will be given to students enrolled in the Specialist (Co-op) Program.

Note: the Health Informatics Stream has been suspended to new enrolments and will be fully closed effective with the 2020-21 academic year.

The structure of the program requirements allows one to easily switch streams until relatively late in the program. Consequently, these streams should not be viewed as rigidly separated channels feeding students to different career paths, but as a flexible structure that provides computer science students guidance in their course selection based on their broad (but possibly fluid) interests.

Enrolment Requirements

Enrolment in the Specialist (Co-operative) program in Computer Science (all streams) is limited.

Current Co-op Students:
Students admitted to a Co-op Degree POSt in their first year of study must request a Co-op Subject POSt on ACORN upon completion of 4.0 credits. Students must have completed the required A-level CSC and MAT courses, and achieved the required grades, described in the Enrolment Requirements for the Specialist in Computer Science. In addition, they must also have achieved a CGPA of at least 2.5 across all attempted courses.

*Students must select one stream of the CS Specialist Co-op. Admission to the Entrepreneurship stream also requires the submission of a Supplementary Application Form available on the Department of Computer and Mathematical Sciences webpage.

Prospective Co-op Students:
Prospective students (i.e., those not yet admitted to a Co-op Degree POSt) must meet the enrolment requirements noted above and have a CGPA of at least 2.75 across all attempted courses.

Students must submit a program request on ACORN. Deadlines follow the Limited Enrolment Program Application Deadlines set by the Office of the Registrar each year. Failure to submit the program request on ACORN will result in the student's application not being considered.

Program Requirements
Students must complete the program requirements as described in the Specialist Program in Computer Science.
To remain in the program, students must maintain a CGPA of 2.5 or higher throughout the program. To complete the program, students must meet the work term and course requirements described below.

Co-op Work Term Requirements
Students must satisfactorily complete three Co-op work terms, each of four-months duration, one of which can be during the summer. To be eligible for their first work term, students must be enrolled in the Specialist (Co-operative) Program in Computer Science and have completed at least 7.0 credits, including all first year required courses (CSCA08H3, CSCA48H3, CSCA67H3, MATA22H3, MATA31H3, MATA37H3).
In addition to their academic program requirements, Co-op students complete up to five Co-op specific courses. These courses are designed to prepare students for their job search and work term experience, and to maximize the benefits of their Co-op work terms. They cover a variety of topics intended to assist students in developing the skills and tools required to secure work terms that are appropriate to their program of study, and to perform professionally in the workplace. These courses must be completed in sequence, and are taken in addition to a full course load. They are recorded on transcripts as credit/no credit (CR/NCR) and are considered to be additive credit to the 20.0 required degree credits. No additional course fee is assessed as registration is included in the Co-op Program fee.

Co-op Preparation Course Requirements:

1. COPB50H3/​(COPD01H3) – Foundations for Success in Arts & Science Co-op
- Students entering Co-op from outside of UTSC (high school or other postsecondary) will complete this course in Fall or Winter of their first year at UTSC. Enrolment in each section is based on admission category: Typically, students in Computer Science, Mathematics and Statistics enroll in the Fall semester while all other Arts & Science Co-op admission categories enroll in the Winter semester however this may vary year to year.
- Current UTSC students entering Co-op in April/May will complete this course in the Summer semester.
- Current UTSC students entering Co-op in July/August will complete this course in the Fall semester.

2. COPB51H3/​(COPD03H3) – Preparing to Compete for your Co-op Work Term
- This course will be completed eight months in advance of the first scheduled work term.

3. COPB52H3/​(COPD11H3) – Managing your Work Term Search & Transition to Work
- This course will be completed four months in advance of the first work scheduled work term.

4. COPC98H3/​(COPD12H3) – Integrating Your Work Term Experience Part I
- This course will be completed four months in advance of the second scheduled work term.

5. COPC99H3/​(COPD13H3) – Integrating Your Work Term Experience Part II
- This course will be completed four months in advance of the third scheduled work term (for programs that require the completion of 3 work terms and/or four months in advance of any additional work terms that have been approved by the Arts and Science Co-op Office.

Students must be available for work terms in each of the Fall, Winter and Summer semesters and must complete at least one of their required work terms in either a Fall or Winter semester. This, in turn, requires that students take courses during at least one Summer semester.

For information on fees, status in Co-op programs, and certification of completion of Co-op programs, see the 6B.5 Co-operative Programs section or the Arts and Science Co-op section in the UTSC Calendar.

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.

Enrolment Requirements

Enrolment in the Major in Computer Science is limited. Students may apply to enter the program after completing 4.0 credits, and must meet the requirements described below:

1. Students already admitted to the UTSC Year 1 Computer Science admissions category:

Required Courses:

Students must have passed the following CSC and MAT courses: CSCA08H3, CSCA48H3, [CSCA67H3 or MATA67H3], MATA22H3, MATA31H3, and MATA37H3.

Required Grades:

Students that meet all of the following requirements will be admitted to a CS Major POSt:
a. A cumulative grade point average (CGPA) of at least 2.5 over the following courses: CSCA48H3, CSC/MATA67H3, MATA22H3, MATA31H3, and MATA37H3;
b. A final grade of at least B in CSCA48H3; and
c. A final grade of at least C- in two of the following: CSC/MATA67H3, MATA22H3, and MATA37H3.

2. Students admitted to other UTSC Year 1 admissions categories:

Students that have been admitted to either the UTSC Year 1 Math or UTSC Year 1 Statistics admissions categories are eligible to apply for the Computer Science Major POSt. Admission will be based on academic performance in the required A-level courses, identified above. The admission requirements change each year depending on available spaces and the pool of eligible applicants, and students are cautioned that there is no guarantee of admission; as such, students are strongly advised to plan to enroll in backup programs.

Students that have not been admitted to a UTSC Year 1 CMS admissions category (Computer Science, Mathematics, or Statistics) must achieve a final grade of at least A- in both MATA31H3 and CSC/MATA67H3 the first time they complete these courses in order to be eligible to apply for a CS Major POSt. This is a strict requirement. Admission will be based on academic performance in the required A-level courses, identified above. The admission requirements change each year depending on available spaces and the pool of eligible applicants, and students are cautioned that there is no guarantee of admission; as such, students are strongly advised to plan to enroll in backup programs.

For more information about the admission requirements, please visit the following CMS webpage.

Note: Students admitted to the program after second or third year will be required to pay retroactive deregulated program fees.

Program Requirements
This program requires a total of 16 distinct courses (8.0 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.0 credits)
CSCA08H3 Introduction to Computer Science I
CSCA48H3 Introduction to Computer Science II
CSCA67H3 Discrete Mathematics
MATA22H3 Linear Algebra I for Mathematical Sciences
MATA31H3 Calculus I for Mathematical Sciences
MATA37H3 Calculus II for Mathematical Sciences

2. B-level courses (3.0 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
and
0.5 credit from the following*:

MATB24H3 Linear Algebra II
STAB52H3 Introduction to Probability
*Note: 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.0 credit)
CSCC37H3 Introduction to Numerical Algorithms for Computational Mathematics
and
0.5 credit from the following:

CSCC63H3 Computability and Computational Complexity
CSCC73H3 Algorithm Design and Analysis

4. CSC electives (1.0 credit)
1.0 credits in 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, CLAA06H3, (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)

Academic Program Advisor: S. Calanza susan.calanza@utoronto.ca
Co-op Program Coordinator: C. Dixon Email: coopsuccess.utsc@utoronto.ca

The Major (Co-op) Program in Computer Science is a Work Integrated Learning (WIL) program that combines academic studies with paid work terms in the public, private, and/or non-profit sectors. The program provides students with the opportunity to develop the academic and professional skills required to pursue employment in these areas, or to continue on to graduate training in an academic field related to Computer Science upon graduation.

In addition to their academic course requirements, students must successfully complete the additive Arts & Science Co-op Work Term and Course requirements.

Enrolment Requirements

Enrolment in the Major (Co-operative) Program in Computer Science is limited.

Current Co-op Students:
Students admitted to a Co-op Degree POSt in their first year of study must request a Co-op Subject POSt on ACORN upon completion of 4.0 credits. Students must have completed the required A-level CSC and MAT courses, and achieved the required grades, described in the Enrolment Requirements for the Major in Computer Science. In addition, they must also have achieved a CGPA of at least 2.5 across all attempted courses.

Prospective Co-op Students:
Prospective students (i.e., those not yet admitted to a Co-op Degree POSt) must meet the enrolment requirements noted above and have a CGPA of at least 2.75 across all attempted courses.

Students must submit a program request on ACORN. Deadlines follow the Limited Enrolment Program Application Deadlines set by the Office of the Registrar each year. Failure to submit the program request on ACORN will result in the student's application not being considered.

Program Requirements
The course requirements of the Co-operative Major Program in Computer Science are identical to those of the Major Program in Computer Science.

To remain in the program, students must maintain a CGPA of 2.5 or higher throughout the program. To complete the program, students must meet the work term and course requirements described below.

Co-op Work Term Requirements
Students must satisfactorily complete three Co-op work terms, each of four-months duration, one of which can be during the summer. To be eligible for their first work term, students must be enrolled in the Major (Co-op) Program in Computer Science and have completed at least 7.0 credits, including all first year required courses (CSCA08H3, CSCA48H3, CSCA67H3, MATA22H3, MATA31H3, MATA37H3).

In addition to their academic program requirements, Co-op students complete the following Co-op specific courses as part of their degree:

  • Co-op Preparation courses: COPB50H3 and COPB51H3 (completed in first year)
  • Work Term Search courses: COPB52H3 (semester prior to first work term), COPC98H3 (semester prior to second work term), and COPC99H3 (semester prior to third work term)
  • Co-op Work Term courses: COPC03H3 (each semester a student is on work term)

These courses are designed to prepare students for their job search and work term experience, and to maximize the benefits of their Co-op work terms. They must be completed in sequence, and fall into three categories: Co-op Preparation courses (COPB50H3 & COPB51H3) are completed in first year, and cover a variety of topics intended to assist students in developing the skills and tools required to secure a work term; Work Term Search Courses (COPB52H3, COPC98H3, & COPC99H3) are completed in the semester prior to each work term, and support students while competing for work terms that are appropriate to their program of study, as well as preparing students for the transition into and how to succeed the workplace; Co-op Work Term courses (COPC03H3) are completed during each semester that a student is on work term, and support students’ success while on work term, as well as connecting their academics and the workplace experience.

Co-op courses are taken in addition to a full course load. They are recorded on transcripts as credit/no credit (CR/NCR) and are considered to be additive credit to the 20.0 required degree credits. No additional course fee is assessed as registration is included in the Co-op Program fee.

For information on fees, status in Co-op programs, and certification of completion of Co-op programs, see the 6B.5 Co-operative Programs section or the Arts and Science Co-op section in the UTSC Calendar.

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.

Enrolment Requirements


Enrolment in the Minor in Computer Science is limited.

Students may apply to enter the program after completing 4.0 credits, and must have passed the following CSC and MAT courses: CSCA08H3, CSCA48H3, and [one of: CSCA67H3, MATA67H3, MATA22H3, MATA23H3, MATA30H3, MATA31H3, or [(MATA32H3) or MATA34H3]]. Admission will be based on academic performance in these A-level courses. The admission requirements change each year depending on available spaces and the pool of eligible applicants, and students are cautioned that there is no guarantee of admission; as such, students are strongly advised to plan to enroll in backup programs.

For more information about the admission requirements, please visit the following CMS webpage.

Students in the Minor may take a maximum of 3 CSC elective courses (1.5 credits) at the C-level and D-level.

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.0 credit as follows:
CSCA08H3 Introduction to Computer Science I*
CSCA48H3 Introduction to Computer Science II
*Note: CSCA20H3 may be substituted for CSCA08H3 with permission of the Supervisor of Studies.

2. Basic mathematics courses, 0.5 credit from the following:
CSCA67H3/​MATA67H3 Discrete Mathematics
MATA22H3 Linear Algebra I for Mathematical Sciences
MATA23H3 Linear Algebra I
MATA30H3 Calculus I for Physical Sciences
MATA31H3 Calculus I for Mathematical Sciences
MATA34H3 Calculus for Management

3. Intermediate programming, systems, and theory courses, 1.5 credits from the following:
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***
**Note: CSCB36H3 requires CSCA67H3
***Note: CSCB63H3 requires CSCB36H3

4. CSC electives, 1.0 credit as follows:
Any C- or D-level CSC courses*
*Note: 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.

Computer Science Courses

CSCA08H3 - Introduction to Computer Science I

Programming in an object-oriented language such as Python. Program structure: elementary data types, statements, control flow, functions, classes, objects, methods. Lists; searching, sorting and complexity.  This course is intended for students having a serious interest in higher level computer science courses, or planning to complete a computer science program.

Prerequisite: Grade 12 Calculus and Vectors and one other Grade 12 mathematics course.
Exclusion: CSCA20H3, CSC108H, CSC120H. CSCA08H3 may not be taken after or concurrently with CSCA48H3.
Breadth Requirements: Quantitative Reasoning
Note: This course does not require any prior exposure to computer programming.

CSCA20H3 - Introduction to Programming

An introduction to computer programming, with an emphasis on gaining practical skills. Introduction to programming, software tools, database manipulation. This course is appropriate for students with an interest in programming and computers who do not plan to pursue a Computer Science program.

Exclusion: CSCA08H3, CSC108H, CSC120H
Breadth Requirements: Quantitative Reasoning
Note: This course does not require any prior exposure to computer programming.

CSCA48H3 - Introduction to Computer Science II

Abstract data types and data structures for implementing them. Linked data structures. Object Oriented Programming. Encapsulation and information-hiding. Testing. Specifications. Analyzing the efficiency of programs. Recursion.

Prerequisite: CSCA08H3
Exclusion: CSC148H
Breadth Requirements: Quantitative Reasoning

CSCA67H3 - Discrete Mathematics

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.
Same as MATA67H3

Prerequisite: Grade 12 Calculus and Vectors and one other Grade 12 mathematics course
Exclusion: MATA67H3, (CSCA65H3), CSC165H, CSC240H, MAT102H
Recommended Preparation: CSCA08H3 or CSCA20H3
Breadth Requirements: 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, object-oriented design and development, design patterns and advanced IDE usage.

Prerequisite: CSCA48H3 and [CGPA of at least 3.5, or enrolment in a CSC Subject POSt, or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Exclusion: CSC207H
Breadth Requirements: 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 and [CGPA of at least 3.5, or enrolment in a CSC Subject POSt, or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Exclusion: CSC209H
Breadth Requirements: 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 Requirements: 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 and [(CSCA65H3) or CSCA67H3] and [CGPA of at least 3.5, or enrolment in a CSC Subject POSt, or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Exclusion: CSC236H, CSC240H
Breadth Requirements: 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 PHYB57H3/(PSCB57H3)] and [CGPA of at least 3.5, or enrolment in a CSC Subject POSt, or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Exclusion: CSC258H
Breadth Requirements: 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: CSCB36H3 and [CGPA of at least 3.5, or enrolment in a CSC Subject POSt, or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Exclusion: CSC263H, CSC265H
Breadth Requirements: 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, and [CGPA of at least 3.5, or enrolment in a CSC Subject POSt, or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Exclusion: CSC301H, (CSCC40H3), (CSCD08H3)
Breadth Requirements: Quantitative Reasoning
Course Experience: University-Based Experience

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 and CSCC43H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC309H
Breadth Requirements: Quantitative Reasoning
Course Experience: University-Based Experience

CSCC10H3 - Human-Computer Interaction

The course will provide an introduction to the field of Human-Computer Interaction (HCI) with emphasis on guidelines, principles, methodologies, and tools and techniques for analyzing, designing and evaluating user interfaces. Subsequent topics include usability assessment of interactive systems, prototyping tools, information search and visualization, mobile devices, social media and social networking, and accessibility factors.

Prerequisite: CSCB07H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CCT380H, CSC318H
Breadth Requirements: Quantitative Reasoning

CSCC11H3 - Introduction to 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 and non-linear models, class-conditional models, neural networks, and Bayesian methods. Clustering algorithms and dimensionality reduction. Model selection. Problems of over-fitting and assessing accuracy. Problems with handling large databases.

Prerequisite: MATB24H3 and MATB41H3 and STAB52H3 and [CGPA of at least 3.5 or enrolment in a CSC Subject POSt or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement].
Exclusion: CSC411H, (CSCD11H3)
Recommended Preparation: CSCC37H3
Breadth Requirements: 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 and CSCB09H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC324H
Breadth Requirements: 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: MATA22H3 and [MATA36H3 or MATA37H3] and [CGPA of at least 3.5 or enrolment in a CSC Subject POSt or enrolment in a non-CSC Subject POst for which this specific course is a program requirement]
Exclusion: (CSCC36H3), (CSCC50H3), (CSCC51H3), CSC336H, CSC350H, CSC351H, CSC338H
Breadth Requirements: 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 and CSCB63H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC343H
Breadth Requirements: Quantitative Reasoning

CSCC46H3 - Social and Information Networks

How networks underlie the social, technological, and natural worlds, with an emphasis on developing intuitions for broadly applicable concepts in network analysis. Topics include: introductions to graph theory, network concepts, and game theory; social networks; information networks; the aggregate behaviour of markets and crowds; network dynamics; information diffusion; popular concepts such as "six degrees of separation", the "friendship paradox", and the "wisdom of crowds".

Prerequisite: CSCB63H3 and STAB52H3 and [MATA22H3 or MATA23H3] and [a CGPA of 3.5 or enrolment in a CSC Subject POSt]
Breadth Requirements: 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 and CSCC73H3 may be taken in any order, it is recommended that CSCC73H3 be taken first.

Prerequisite: CSCB36H3 and CSCB63H3 and [CGPA of at least 3.5, or enrolment in a CSC Subject POSt, or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]]
Exclusion: CSC363H, CSC365H, CSC364H
Breadth Requirements: 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 and CSCB09H3 and CSCB58H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC369H
Breadth Requirements: 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 and STAB52H3 and [CGPA of at least 3.5 or enrolment in a CSC Subject POSt or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Exclusion: CSC373H, CSC375H, CSC364H
Breadth Requirements: Quantitative Reasoning

CSCC85H3 - Fundamentals of Robotics and Automated Systems

The course introduces the fundamental principles, problems, and techniques involved in the operation of mobile robots and other automated systems. Course topics include: components of automated systems, sensors and sensor management, signal acquisition and noise reduction, principles of robot localization, FSM-based A.I. for planning, fault-tolerance and building fault-tolerant systems, real-time operation and real-time operating systems; and computational considerations such as hardware limitations and code optimization. Ethical considerations in the implementation and deployment of automated systems are discussed. The concepts covered in the course are put in practice via projects developed on a Lego robotic platform.

Prerequisite: CSCB58H3 and CSCB09H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: ECE385H
Recommended Preparation: CSCB07H3
Breadth Requirements: 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 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC302H, (CSCD08H3)
Breadth Requirements: Quantitative Reasoning
Course Experience: University-Based Experience

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; invasion of privacy; computer-based crime; the social effects of an always-online life; and professional ethics in the software industry. There will be an emphasis on current events relating to these topics.

Prerequisite: 14.0 credits and enrolment in a Computer Science Subject POSt. Restricted to students in the Specialist/Specialist Co-op programs in Computer Science or in the Specialist/Specialist Co-op programs in Management and Information Technology
Exclusion: CSC300H
Breadth Requirements: Social and Behavioural Sciences
Course Experience: University-Based Experience

CSCD18H3 - Computer Graphics

The course will cover in detail the principles and algorithms used to generate high-quality, computer generated images for fields as diverse as scientific data visualization, modeling, computer aided design, human computer interaction, special effects, and video games. Topics covered include image formation, cameras and lenses, object models, object manipulation, transformations, illumination, appearance modeling, and advanced rendering via ray-tracing and path-tracing. Throughout the course, students will implement a working rendering engine in a suitable programming language.

Prerequisite: MATB24H3 and MATB41H3 and [CSCB09H3 or proficiency in C] and CSCC37H3 and [a CGPA of at least 3.5 or enrolment in a Computer Science Subject POSt]
Exclusion: (CSC418H1)/CSC317H1
Breadth Requirements: Quantitative Reasoning

CSCD25H3 - Advanced Data Analysis

This course teaches the basic techniques, methodologies, and ways of thinking underlying the application of data science and machine learning to real-world problems. Students will go through the entire process going from raw data to meaningful conclusions, including data wrangling and cleaning, data analysis and interpretation, data visualization, and the proper reporting of results. Special emphasis will be placed on ethical questions and implications in the use of AI and data. Topics include data pre-processing, web scraping, applying supervised and unsupervised machine learning methods, treating text as data, A/B testing and experimentation, and data visualization.

Prerequisite: CSCB63H3 and CSCC11H3 and [a CGPA of 3.5 or enrolment in a CSC Subject POSt]
Enrolment Limits: 40
Breadth Requirements: 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 and CSCB36H3 and CSCB58H3 and [CGPA of at least 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC427H
Recommended Preparation: CSCC69H3
Breadth Requirements: Quantitative Reasoning
Course Experience: University-Based Experience

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 and MATB24H3 and MATB41H3 and [CGPA of at least 3.5 or enrolment in a CSC Subject POSt or enrolment in a non-CSC Subject POSt for which this specific course is a program requirement]
Exclusion: (CSCC50H3), (CSCC51H3), CSC350H, CSC351H
Breadth Requirements: 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 and CSCC69H3 and CSCC73H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC443H
Breadth Requirements: Quantitative Reasoning

CSCD54H3 - Technology Innovation and Entrepreneurship

This course examines high-Tech innovation and entrepreneurship, principles of operation of successful high-tech enterprises, customer identification and validation, product development, business models, lean startup techniques, and financing of high-technology ventures. Students will work in teams to develop their own innovative product idea, and will produce a sound business plan to support their product.

Prerequisite: A minimum of 2.5 credits at the B-level or higher in CSC courses
Corequisite: CSCD90H3
Exclusion: CSC454H
Enrolment Limits: Restricted to students in the Entrepreneurship stream of the Specialist/Specialist Co-op programs in Computer Science
Breadth Requirements: Social and Behavioural Sciences
Note: If space permits, students in other streams of the Specialist/Specialist Co-op programs in Computer Science may be admitted to the course, with the permission of the instructor.

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 and CSCB63H3 and STAB52H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Exclusion: CSC458H
Breadth Requirements: Quantitative Reasoning

CSCD70H3 - Compiler Optimization

The goal of this course is to examine the design and implementation of a compiler optimized for modern parallel architectures. Students will learn about common optimizations, intermediate representations (IRs), control-flow and dataflow analysis, dependence graphs, instruction scheduling, and register allocation. Advanced topics include static single assignment, memory hierarchy optimizations and parallelization, compiling for multicore machines, memory dependence analysis, automatic vectorization/thread extraction, and predicated/speculative execution.

Prerequisite: CSCB63H3 and CSCC69H3 and [CGPA 3.5 or enrolment in a CSC Subject POSt]
Breadth Requirements: 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 and [CGPA 3.5 or enrolment in a CSC Subject POSt]. Normally intended for students who have completed at least 8 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 and [CGPA 3.5 or enrolment in a CSC Subject POSt]. Normally intended for students who have completed at least 8 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: STAB52H3 and CSCB63H3 and [a CGPA of 3.5 or enrolment in a CSC subject POSt]
Exclusion: CSC484H, CSC384H
Breadth Requirements: Quantitative Reasoning

CSCD90H3 - The Startup Sandbox

In this capstone course, students will work in teams to develop a viable product prototype following the methodologies and techniques covered in CSCD54H3. Students will produce written reports, short videos pitching their idea, and a final presentation showcasing their proposed innovation, as it would be pitched to potential investors. The course instructor and TAs will provide close supervision and mentorship throughout the project.

Prerequisite: A minimum of 2.5 credits at the B-level or higher in CSC courses
Corequisite: CSCD54H3
Enrolment Limits: Restricted to students in the Entrepreneurship stream of the Specialist/Specialist Co-op programs in Computer Science
Breadth Requirements: Quantitative Reasoning
Course Experience: University-Based Experience
Note: If space permits, students in other streams of the Specialist/Specialist Co-op programs in Computer Science may be admitted to the course, with the permission of the instructor.

CSCD92H3 - Readings in Computer Science

Students will examine an area of interest through reading papers and texts. This course is offered by arrangement with a computer science faculty member. It may be taken in any session, and must be completed by the last day of classes in the session in which it is taken.

Prerequisite: Students must obtain consent from the Supervisor of Studies before registering for this course.
Breadth Requirements: 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] and [permission of the Supervisor of Studies] and [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

Printer-friendly Version