Faculty List
Associate Chair: M. Molloy (416-287-7255)
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 Major and Specialist Programs. Information on how to apply for admission to a Program is given below.
Note on Admission to CSC Courses
CSC courses are open to all students who meet the pre-requisites. Non-CSC program students who wish to take B-, C-, or D- level courses must meet additional Cumulative GPA (CGPA) requirements:
- A student who is not in a CSC program and does not have a CGPA of at least 2.5 may not take any B- level CSC course other than CSCB07H3.
- A student who is not in a CSC program and does not have a CGPA of at least 3.0 may not take any C- or D-level CSC course.
- When a B-, C-, or D-level CSC course other than CSCB07H3 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 Program in Computer Science at any point after first year will be subject to retroactive program tuition fees.
Service Learning and Outreach (Previously known as Science Engagement)
For experiential learning through community outreach and classroom in-reach, please see the Teaching and Learning section of this 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 Health Informatics Stream provides a broad perspective of the discipline and exposure to additional subjects, including statistics and social sciences, that are useful for a career as a computer scientist in the health sector.
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.
Program Admission
Each year up to 150 students are admitted directly from high school to the Comprehensive Streams of this program and the Co-operative Specialist Program in Computer Science (see below) on the basis of academic performance. Applicants must have completed Grade 12 Calculus & Vectors and Advanced Functions.
After first year, students may transfer from Comprehensive to other streams. Due to enrolment restrictions in required Management courses, entry to the Information Systems Stream is limited. Selection is based on grades in the program's A-level courses, including the two A-level MGT courses in requirement 6 of the Information Systems Stream below.
An additional number of students may transfer to the program after first year. To be eligible for late entry to a stream of the program, a student must have completed all A-level courses required in that stream. Admission is based on CGPA and grades in computer science, mathematics, and statistics courses that the student has taken. The minimum CGPA for admission is calculated annually.
Program Requirements
To remain in the program, a student must maintain a CGPA of 2.0 or higher throughout the program. To complete the program, a student must meet the course requirements described below. (One credit is equivalent to two courses). The program requirements comprise a core of 18 courses (9.0 credits), common to all three streams and additional requirements which depend on the stream, for a total of 27 courses (13.5 credits) for the Comprehensive and Software Engineering Streams, and 30 courses (15.0 credits) for the Information Systems and Health Informatics Streams.
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) (*)
One of: 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.
(*) 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 Programming
CSCA48H3 Introduction to Computer Science
CSCA67H3 Discrete Mathematics for Computer Scientists
MATA23H3 Linear Algebra I
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)
MATB41H3 Techniques of the Calculus of Several Variables I
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
7. Electives from courses on computers systems and applications (1.0 credit)
Two of:
CSCC01H3 Introduction to Software Engineering
CSCC09H3 Programming on the Web
CSCC11H3 Introduction to Machine Learning and Data Mining
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
CSCD84H3 Artificial Intelligence
CSC318H Design of Interactive Computational Media
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)
One of:
MATC09H3 Introduction to Mathematical Logic
MATC16H3 Coding Theory and Cryptography
MATC32H3 Graph Theory and Algorithms for its Applications
MATC44H3 Introduction to Combinatorics
CSC438H Computability and Logic
CSC448H Formal Languages and Automata
CSC465H Formal Methods in Software Design
9. CSC, MAT, or STA elective (0.5 credit)
One of:
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)
MATB41H3 Techniques of the Calculus of Several Variables I
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
7. Electives from courses on computer systems and applications (1.5 credits)
Three of:
CSCC09H3 Programming on the Web
CSCC11H3 Introduction to Machine Learning and Data Mining
CSCC85H3 Introduction to Embedded Systems
CSCD18H3 Computer Graphics
CSCD27H3 Computer and Network Security
CSCD43H3 Database System Technology
CSCD58H3 Computer Networks
CSCD84H3 Artificial Intelligence
CSC318H Design of Interactive Computational Media
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 30 courses (15 credits). In addition to the core requirements 1-5 common to all streams, 12 other distinct courses (6.0 credits) must be chosen satisfying all of the following requirements:
6. Required management courses (2.0 credits)
MGTA01H3/(MGTA03H3) Introduction to Management I
MGTA02H3/(MGTA04H3) Introduction to Management II
MGTB23H3 Managing People in Organizations
MGTB29H3 Managing Groups and Organizations
7. Additional required mathematics and computer science courses (3.0 credits)
MATB41H3 Techniques of the Calculus of Several Variables I
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
8. Electives from courses on computer systems and applications (1.0 credit)
Two of:
CSCC09H3 Programming on the Web
CSCC11H3 Introduction to Machine Learning and Data Mining
CSCC85H3 Introduction to Embedded Systems
CSCD18H3 Computer Graphics
CSCD27H3 Computer and Network Security
CSCD58H3 Computer Networks
CSCD84H3 Artificial Intelligence
CSC318H Design of Interactive Computational Media
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. Health Informatics Stream
This stream requires a total of 30 courses (15.0 credits). In addition to the core requirements 1-5 common to all streams, 12 other distinct courses (6.0 credits) must be chosen satisfying all of the following requirements:
6. Additional courses related to health studies (2 credits)
PHLB09H3 Biomedical Ethics
MGTA06H3 Introduction to Health Management*
One of: (courses on health policy and politics)
HLTB16H3 Introduction to Public Health
HLTB17H3 Conceptual Models of Health
HLTB40H3 Health Policy and Health Systems
HLTC40H3 Introduction to Health Economics
One of: (other courses on health studies)
HLTB22H3 Biological Determinants of Health
HLTC05H3 Social Determinants of Health*
(*) These courses have prerequisites not included in this program’s requirements.
7. Additional required computer science and statistics courses (1.5 credits)
CSCC01H3 Introduction to Software Engineering
STAB57H3 Introduction to Statistics
STAC50H3 Data Collection
8. Additional CSC, MAT and STA courses (2.5 credits)
MATB41H3 Techniques of the Calculus of Several Variables I
Four of:
any other C- or D-level CSC or STA courses, excluding STAD29H3 **†
NOTE: Of the five courses taken to satisfy this requirement, at least one must be a D-level course, and at least three must be CSC courses.
** Some C- and D-level CSC and STA courses have prerequisites that are not included among the required courses for this stream. Review the prerequisites carefully before selecting courses for this requirement. One or more courses taken to satisfy this requirement can be prerequisites for other courses also taken to satisfy this requirement.
† Among the CSC courses that can be used to satisfy this requirement there are two categories of courses that are particularly well aligned with the goals of the Health Informatics stream: software engineering and systems, and computer science applications. Courses in the category of software engineering and systems include: CSCC09H3, CSCC85H3, CSCD01H3, CSCD43H3, and CSCD58H3. Courses in the category of computer science applications include: CSCC11H3, CSCD18H3, and CSCD84H3.
SPECIALIST (CO-OPERATIVE) PROGRAM IN COMPUTER SCIENCE (SCIENCE)
Supervisor of Studies: R. Pancer (416-287-7679) Email: pancer@utsc.utoronto.ca
Co-op Contact: askcoop@utsc.utoronto.ca
Program Objectives
This program combines the coursework of the Specialist Program in Computer Science described above with paid work terms in public and private enterprises. It shares the goals and structure of the Specialist Program in Computer Science, including its four streams (Comprehensive, Software Engineering, Information Systems, and Health Informatics), but complements study of the subject with considerable work experience.
Program Admission
Refer to the Program Admission requirements for the Specialist Program in Computer Science described above and the Co-operative Programs section in this Calendar. Students entering this program after first year must have a CGPA of at least 2.75.
Program Requirements
To remain in the program, a student must maintain a CGPA of 2.5 or higher throughout the program. To complete the program, a student must meet the work term and course requirements described below.
Work Term Requirements
Students must successfully complete three work terms, at most one of which can be during the summer. In addition, prior to their first work term, students must successfully complete the Arts & Science Co-op Work Term Preparation Activities. These include networking sessions, speaker panels and industry tours along with seminars covering resumes, cover letters, job interviews and work term expectations.
Course Requirements
The Co-operative Program can be taken in conjunction with any of the streams in the Specialist Program in Computer Science. For the course requirements of each stream, please refer to the description of the Specialist Program in Computer Science.
SPECIALIST PROGRAM IN MANAGEMENT AND INFORMATION TECHNOLOGY (SCIENCE)
See the Management section of this Calendar for program requirements.
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.
Program Admission
Students are admitted to the second year of the program. All A-level courses required for the program must have been completed (see requirement 1 below). Admission is based on CGPA and grades in computer science and mathematics courses that the student has taken. The minimum CGPA for admission is calculated annually.
Program Requirements
This program requires a total of 16 distinct courses (8 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 credits)
CSCA08H3 Introduction to Computer Programming
CSCA48H3 Introduction to Computer Science
CSCA67H3 Discrete Mathematics for Computer Scientists
MATA23H3 Linear Algebra I
MATA31H3 Calculus I for Mathematical Sciences
MATA37H3 Calculus II for Mathematical Sciences
2. B-level courses (3 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
One of: (*)
MATB24H3 Linear Algebra II
STAB52H3 Introduction to Probability
(*) 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 credit)
CSCC37H3 Introduction to Numerical Algorithms for Computational Mathematics
One of:
CSCC63H3 Computability and Computational Complexity
CSCC73H3 Algorithm Design and Analysis
4. CSC electives (1 credit)
Two of:
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, (CLAA02H3), (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)
Supervisor of Studies: R. Pancer (416-287-7679) E-mail: pancer@utsc.utoronto.ca
Co-op Contact: askcoop@utsc.utoronto.ca
Program Objectives
This program combines the coursework of the Major Program in Computer Science described above with paid work terms in public and private enterprises. It shares the objectives of the Major Program in Computer Science, but complements study of the subject with considerable work experience. This program must be combined with a major program in another discipline.
Program Admission
Refer to the Program Admission requirements for the Major Program in Computer Science described above and the Co-operative Programs section in this Calendar. Students entering this program must have a CGPA of at least 2.75.
Program Requirements
To remain in the program, a student must maintain a CGPA of 2.5 or higher throughout the program. To complete the program, a student must meet the work term and course requirements described below.
Work Term Requirements
Students must successfully complete three work terms, at most one of which can be during the summer. In addition, prior to their first work term, students must successfully complete the Arts & Science Co-op Work Term Preparation Activities. These include networking sessions, speaker panels and industry tours along with seminars covering resumes, cover letters, job interviews and work term expectations.
Course Requirements
The course requirements of the Co-operative Major Program in Computer Science are identical to those of the Major Program in Computer Science described above.
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.
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)
CSCA20H3 Computer Science for the Sciences(*)
CSCA48H3 Introduction to Computer Science
(*) CSCA08H3 may be substituted for CSCA20H3 with permission of the Supervisor of Studies.
2. Basic mathematics courses (0.5 credit)
One of:
CSCA67H3 Discrete Mathematics for Computer Scientists
MATA23H3 Linear Algebra I
MATA30H3 Calculus I for Biological and Physical Sciences
MATA31H3 Calculus I for Mathematical Sciences
MATA32H3 Calculus for Management I
PHLB50H3 Symbolic Logic I
3. Intermediate programming, systems, and theory courses (1.5 credits)
Three of:
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(***)
(**) CSCB36H3 requires CSCA67H3
(***) CSCB63H3 requires CSCB36H3
4. CSC electives (1.0 credit)
Two of:
Any C- or D-level CSC courses (*)
(*) 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 ProgrammingStructure of computers; the computing environment. Programming in an object-oriented language such as Python. Program structure: elementary data types, statements, control flow, functions, classes, objects, methods, fields. Lists; searching, sorting and complexity.
Prerequisite:
Any Grade 12 mathematics course. Note: This course is intended for students with no prior exposure to computer programming. Students who have sufficient programming experience may enrol directly in CSCA48H3; consult the instructor or the Supervisor of Studies for guidance.
Exclusion:
CSCA20H3, CSC108H, CSC120H. CSCA08H3 may not be taken after or concurrently with CSCA48H3.
Breadth Requirement: Quantitative Reasoning
CSCA20H3 Computer Science for the SciencesAn introduction to computer science for students in other sciences, with an emphasis on gaining practical skills. Introduction to programming; web programming; database design; software tools; examples and exercises taken from the sciences. At the end of this course you will be able to develop computer tools for scientific applications, such as the structuring and analysis of experimental data.
Exclusion:
CSCA08H3, CSC108H, CSC120H
Breadth Requirement: Quantitative Reasoning
CSCA48H3 Introduction to Computer ScienceAbstract data types and data structures for implementing them. Linked data structures. Encapsulation and information-hiding. Object-oriented programming. Specifications. Analyzing the efficiency of programs. Recursion.
Prerequisite:
CSCA08H3 & Grade 12 Calculus & Vectors & one other Grade 12 mathematics course. Note: This course assumes programming experience in an object-oriented language such as Python, C++ or Java, as provided by CSCA08H3. Students who already have this background may consult the instructor or Supervisor of Studies for advice about skipping CSCA08H3. Students who enrol in CSCA48H3 and find the course too difficult may "drop down" to CSCA08H3 in sessions when CSCA08H3 is offered. The deadline for "dropping down" is the end of the fifth week of classes.
Exclusion:
CSC148H
Breadth Requirement: Quantitative Reasoning
CSCA67H3 Discrete Mathematics for Computer ScientistsIntroduction 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.
Prerequisite:
Grade 12 Calculus and Vectors & one other Grade 12 mathematics course
Exclusion:
(CSCA65H3), CSC165H, CSC240H, MAT102H
Recommended Preparation:
CSCA08H3 or CSCA20H3
Breadth Requirement: Quantitative Reasoning
CSCB07H3 Software DesignAn introduction to software design and development concepts, methods, and tools, using a statically-typed object-oriented language such as Java. Topics from: version control, build management, unit testing, refactoring, design patterns, advanced IDE usage, regular expressions, markup languages, parsing using finite state machines, and reflection.
Prerequisite:
CSCA48H3
Corequisite:
(CSCA65H3) or CSCA67H3
Exclusion:
CSC207H
Breadth Requirement: Quantitative Reasoning
CSCB09H3 Software Tools and Systems ProgrammingSoftware 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 & [CGPA 2.5 or enrolment in a CSC Subject POSt]
Exclusion:
CSC209H
Breadth Requirement: Quantitative Reasoning
CSCB20H3 Introduction to Databases and Web ApplicationsA 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 Requirement: Quantitative Reasoning
CSCB29H3 Concepts in Elementary Computer ScienceA course specifically for students intending to become elementary or high school teachers. Computer science concepts will be discussed at a fundamental level. Topics covered: problem solving, algorithms, recursion, applications, connections to mathematics, connections to society. Throughout the course, students will apply these concepts to fit the current Ministry's Guidelines for the various grade levels. Students may be required to teach some one-hour classes to various grade levels in an approved school. This is a "teaching friendly" course. The course will be broken up into three distinct topics: elementary level (grades K-5), intermediate (grades 6-9), senior (grades 10-12).
Prerequisite:
[CSCA08H3 or CSCA20H3 or PSCB57H3] & 3 other credits & a CGPA of at least 2.5. Priority will be given to ETP/CTEP students.
Note: This course assumes programming experience in a language such as Python, C++ or Java as provided by CSCA08H3. Students who already have this background may consult the instructor or Supervisor of Studies for advice about skipping CSCA08H3/CSCA20H3/PSCB57H3.
Exclusion:
This course may not be taken after - or concurrently with - any C- or D-level CSC course.
Breadth Requirement: Quantitative Reasoning
CSCB36H3 Introduction to the Theory of ComputationMathematical 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 & [(CSCA65H3) or CSCA67H3] & [CGPA 2.5 or enrolment in a CSC Subject POSt]
Exclusion:
CSC236H, CSC240H
Breadth Requirement: Quantitative Reasoning
CSCB58H3 Computer OrganizationPrinciples 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 PSCB57H3] & [CGPA 2.5 or enrolment in a CSC Subject POSt]
Exclusion:
CSC258H
Breadth Requirement: Quantitative Reasoning
CSCB63H3 Design and Analysis of Data StructuresDesign, 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:
CSCB07H3 & CSCB36H3 & [CGPA 2.5 or enrolment in a CSC Subject POSt]
Exclusion:
CSC263H, CSC265H
Breadth Requirement: Quantitative Reasoning
CSCC01H3 Introduction to Software EngineeringIntroduction 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, & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
CSC301H, (CSCC40H3), (CSCD08H3)
Breadth Requirement: Quantitative Reasoning
CSCC09H3 Programming on the WebAn 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 & CSCC43H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
CSC309H
Breadth Requirement: Quantitative Reasoning
CSCC11H3 Introduction to Machine Learning and Data MiningAn 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 3.0 or enrolment in a CSC, STA or Quantitative Analysis Subject POSt].
Exclusion:
CSC411H, (CSCD11H3)
Recommended Preparation:
CSCC37H3
Breadth Requirement: Quantitative Reasoning
CSCC24H3 Principles of Programming LanguagesMajor 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 & CSCB09H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
CSC324H
Breadth Requirement: Quantitative Reasoning
CSCC37H3 Introduction to Numerical Algorithms for Computational MathematicsAn 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:
[MATA36H3 or MATA37H3] & MATA23H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
(CSCC36H3), (CSCC50H3), (CSCC51H3), CSC336H, CSC350H, CSC351H, CSC338H
Breadth Requirement: Quantitative Reasoning
CSCC43H3 Introduction to DatabasesIntroduction 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 & CSCB63H3 [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
CSC343H
Breadth Requirement: Quantitative Reasoning
CSCC63H3 Computability and Computational ComplexityIntroduction 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 & CSCC73H3 may be taken in any order, it is recommended that CSCC73H3 be taken first.
Prerequisite:
CSCB36H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
CSC363H, CSC365H, CSC364H
Breadth Requirement: Quantitative Reasoning
CSCC69H3 Operating SystemsPrinciples 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 & CSCB09H3 & CSCB58H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
CSC369H
Breadth Requirement: Quantitative Reasoning
CSCC73H3 Algorithm Design and AnalysisStandard algorithm design techniques: divide-and-conquer, greedy strategies, dynamic programming, linear programming, randomization, and possibly others.
Prerequisite:
CSCB63H3 & STAB52H3; [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
CSC373H, CSC375H, CSC364H
Breadth Requirement: Quantitative Reasoning
CSCC85H3 Introduction to Embedded SystemsThe course covers the components and fundamental principles of operation of systems built around micro-processing elements: the architecture, operation, and types of micro-processing components; sensors, actuators, signal acquisition and processing, and basic principles of control theory. Laboratory sessions involving the use of a mobile robotic platform provide hands-on experience.
Prerequisite:
CSCB58H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
ECE385H
Breadth Requirement: Quantitative Reasoning
CSCD01H3 Engineering Large Software SystemsAn 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 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
CSC302H, (CSCD08H3)
Breadth Requirement: Quantitative Reasoning
CSCD03H3 Social Impact of Information TechnologyThe trade-offs between benefits and risks to society of information systems, and related issues in ethics and public policy. Topics will include safety-critical software; computational invasion of privacy; computer-based crime; and professional ethics in the software industry. There will be an emphasis on current events relating to these topics.
Prerequisite:
14 credits including CSCA08H3 or PSCB57H3 or CSCA48H3 [or, in special cases, (CSCA02H3) & permission of the instructor]
Exclusion:
CSC300H
Breadth Requirement: Social & Behavioural Sciences
CSCD18H3 Computer GraphicsIdentification and characterization of objects manipulated in computer graphics, operations on these objects, efficient algorithms to perform these operations, and interfaces to transform one type of object to another. Display devices, display data structures and procedures, graphical input, object modeling, transformations, illumination models, light effects; graphics packages and systems.
Prerequisite:
MATB24H3 & MATB42H3 &[CSCB09H3 or proficiency in C] & CSCC37H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
CSC418H
Breadth Requirement: Quantitative Reasoning
CSCD27H3 Computer and Network SecurityPublic 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 & CSCB36H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
CSC427H
Recommended Preparation:
CSCC69H3
Breadth Requirement: Quantitative Reasoning
CSCD37H3 Analysis of Numerical Algorithms for Computational MathematicsMost 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 & MATB24H3 & MATB41H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
(CSCC50H3), (CSCC51H3), CSC350H, CSC351H
Breadth Requirement: Quantitative Reasoning
CSCD43H3 Database System TechnologyImplementation 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 & CSCC69H3 & CSCC73H3 & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
CSC443H
Breadth Requirement: Quantitative Reasoning
CSCD58H3 Computer NetworksComputer 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 & CSCB63H3 & [STAB52H3 or STAB57H3] & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Exclusion:
CSC458H
Breadth Requirement: Quantitative Reasoning
CSCD71H3 Topics in Computer ScienceA topic from computer science, selected by the instructor, will be covered.
The exact topic will typically change from year to year.
Prerequisite:
Permission of the instructor & [CGPA 3.0 or enrolment in a CSC Subject POSt]. Normally intended for students who have completed at least 8 credits.
CSCD72H3 Topics in the Theory of ComputingA topic from theoretical computer science, selected by the instructor, will be covered.
The exact topic will typically change from year to year.
Prerequisite:
Permission of the instructor & [CGPA 3.0 or enrolment in a CSC Subject POSt]. Normally intended for students who have completed at least 8 credits.
CSCD84H3 Artificial IntelligenceA 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:
CSCC24H3 & STAB52H3 & [CGPA 3.0 or enrolment in a CSC subject POSt]
Exclusion:
CSC484H, CSC384H
Breadth Requirement: Quantitative Reasoning
CSCD94H3 Computer Science ProjectA 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] & [permission of the Supervisor of Studies] & [CGPA 3.0 or enrolment in a CSC Subject POSt]
Enrolment procedures: Project supervisor's note of agreement must be presented to the Supervisor of Studies, who must issue permission for registration.
Exclusion:
CSC494H
CSCD95H3 Computer Science ProjectSame 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