*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

**Choose from:**

*7. Electives from courses in computer science, mathematics, and statistics (1.5 credits)*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