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

The following enrolment requirements are effective as of the Summer 2019 session; Students applying to begin the program in Summer 2019, or in any subsequent session, must meet these requirements. These requirements are not retroactive to previous academic sessions.

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 have passed all of the A-level CSC and MAT courses required in the program (CSCA08H3, CSCA48H3, CSCA67H3, MATA22H3, MATA31H3, and MATA37H3). Students are admitted on the basis of academic performance in program courses; students should consult the Department of Computer and Mathematical Sciences website for more information.

Admission to the Entrepreneurship stream also requires the submission of a Supplementary Application Form (SAF) available on the Department of Computer and Mathematical Sciences website.

Students who are not admitted as above, and who are enrolled in the Minor in Computer Science, may apply after completing at least 7.5 credits, including the core A-level courses listed above as well as CSCB07H3, CSCB09H3, CSCB36H3 and one of MATB24H3 or STAB52H3. Students are admitted on the basis of academic performance in program courses; students should consult the Department of Computer and Mathematical Sciences website for more information.

* These courses have a CS subject POSt or minimum CGPA prerequisite.
To remain in the program, a student must maintain a CGPA of 2.0 or higher throughout the program.

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, (CLAA02H3), (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 satisfying 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 Introduction to Embedded Systems
CSCD01H3 Engineering Large Software Systems
CSCD18H3 Computer Graphics
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, 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 satisfying 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 Introduction to Embedded Systems
CSCD18H3 Computer Graphics
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 Introduction to Embedded Systems
CSCD18H3 Computer Graphics
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 satisfying 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 Introduction to Embedded Systems
CSCD18H3 Computer Graphics
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