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