Computer Science program requirements

What the Computer Science Specialist, Major and Minor require, as the 2026-2027 Arts & Science Calendar states it, and every course they name.

Computer Science Specialist

  • Science program
  • 12.0 credits
  • Limited enrolment
  • ASSPE1689

Enrolment

This is a limited enrolment program. Only students in the Year 1 Computer Science admission category (CMP1) who meet the criteria of the Computer Science program admission guarantee are eligible to apply to the Computer Science Specialist program. The full enrolment requirements are on the Calendar's page for this program.

Completion requirements

(12.0 credits, including at least 1.5 credits at the 400-level)

First year (2.5 credits):

1CSC110Y1, CSC111H1, (MAT148H1/ MAT158H1, MAT149H1/ MAT159H1)/ MAT137Y1/ MAT157Y1

Notes:

Note 1CSC110Y1 and CSC111H1 must be completed in order to complete the Specialist program. No course substitutions will be accepted for CSC110Y1 and/or CSC111H1.

Note 2Students seeking an enriched introduction to the theory of computing may choose to enrol in CSC240H1 in their first year. Please consult the department's Undergraduate Office for advice about enrolling in CSC240H1.

Students in this program have the option to enrol in the Arts & Science Internship Program (ASIP) stream. (See Note below)

Second year (3.5 credits):

2CSC207H1, CSC209H1, CSC236H1/ CSC240H1, CSC258H1, CSC263H1/ CSC265H1, MAT223H1/ MAT240H1; STA247H1/ STA237H1/ STA255H1/ STA257H1

Later years (6.0 credits):

3CSC369H1, CSC373H1

45.0 credits of courses in total selected from among the following groups:

Group A: Any 300-/ 400-level CSC course except CSC369H1, CSC373H1, and those listed in Group B

Group B: CSC299H1, CSC299Y1, CSC394H1, CSC395H1, CSC396Y0, CSC398H0, CSC398Y0, CSC399H1, CSC399Y1, CSC490H1, CSC491H1, CSC494H1, CSC494Y1, CSC495H1

Group C: BCB330Y1, BCB410H1, BCB420H1, BCB430Y1; MAT224H1/ MAT247H1, (MAT235H1, MAT236H1)/ MAT235Y1/ MAT237Y1/ MAT257Y1, any 300-/400-level MAT course except MAT329Y1, MAT390H1, MAT391H1; STA248H1/ STA238H1/ STA261H1, any 300-/400-level STA course; ECE419H1, ECE454H1

These 5.0 credits must include:

at least 3.0 credits from Groups A and/or B, including at least 1.5 credits from 400-level CSC courses

at least 1.0 credit from Group A

no more than 2.0 credits from Group B, and no more than 1.0 credit from Group B at the 400-level

no more than 0.5 credit from CSC311H1/ STA314H1

no more than 0.5 credit from CSC412H1/ STA414H1

no more than 0.5 credit from CSC438H1/ MAT309H1

The choices in 4 must satisfy the requirement for an integrative, inquiry-based activity by including one of the following courses: CSC301H1, CSC302H1, CSC316H1, CSC318H1, CSC394H1, CSC395H1, CSC396Y0, CSC404H1, CSC413H1, CSC417H1, CSC419H1, CSC428H1, CSC454H1, CSC485H1, CSC490H1, CSC491H1, CSC494H1, CSC495H1, CSC494Y1. Students who complete the Arts & Science Internship Program (ASIP) stream will also meet this requirement.

Students enrolled in the Computer Science Specialist (ASSPE1689) program may request to count other University of Toronto Faculty of Applied Science and Engineering courses within Group C. Requests must be reviewed and approved by the Computer Science Undergraduate Office and will be evaluated on a case-by-case basis. For information about this process, please contact the Computer Science Undergraduate Office.

Transfer credits (except for those attained through a University of Toronto exchange program) cannot comprise more than 1.0 credit at the 300-/400-level, and cannot be used to satisfy the requirement for an integrative, inquiry-based activity. In addition, transfer credits (except for those attained through a University of Toronto exchange program) cannot comprise more than 0.5 credit of the 400-level CSC courses required.

Students cannot combine the Computer Science Specialist (ASSPE1689) program with the Computer Science Major (ASMAJ1689) or the Computer Science Minor (ASMIN1689) for their degree.

Choosing courses

This program offers considerable freedom to choose courses at the 300-/400-level, and you are free to make those choices on your own. We are eager to offer guidance, however, and both our Undergraduate Office and individual faculty members are a rich source of advice.

Courses these requirements name

  • CSC110Y1Foundations of Computer Science I
  • CSC111H1Foundations of Computer Science II
  • MAT148H1Calculus I with Proofs
  • MAT158H1Analysis 1A
  • MAT149H1Calculus II with Proofs
  • MAT159H1Analysis 1B
  • MAT137Y1Calculus with Proofs last in the 2025-2026 Calendar
  • MAT157Y1Analysis I last in the 2025-2026 Calendar
  • CSC240H1Enriched Introduction to the Theory of Computation
  • CSC207H1Software Design
  • CSC209H1Software Tools and Systems Programming
  • CSC236H1Introduction to the Theory of Computation
  • CSC258H1Computer Organization
  • CSC263H1Data Structures and Analysis
  • CSC265H1Enriched Data Structures and Analysis
  • MAT223H1Linear Algebra I
  • MAT240H1Algebra I
  • STA247H1Probability with Computer Applications
  • STA237H1Probability, Statistics and Data Analysis I
  • STA255H1Statistical Theory
  • STA257H1Probability and Statistics I
  • CSC369H1Operating Systems
  • CSC373H1Algorithm Design, Analysis & Complexity
  • CSC299H1Research Opportunity Program
  • CSC299Y1Research Opportunity Program
  • CSC394H1Computer Science Project
  • CSC395H1Computer Science Project
  • CSC396Y0Designing Systems for Real World Problems
  • CSC398H0Research Excursions
  • CSC398Y0Research Excursions
  • CSC399H1Research Opportunity Program
  • CSC399Y1Research Opportunity Program
  • CSC490H1Capstone Design Project
  • CSC491H1Capstone Design Project
  • CSC494H1Computer Science Project
  • CSC494Y1Computer Science Project
  • CSC495H1Computer Science Project
  • BCB330Y1Special Project in Bioinformatics and Computational Biology
  • BCB410H1Applied Bioinformatics
  • BCB420H1Computational Systems Biology
  • BCB430Y1Advanced Special Project in Bioinformatics and Computational Biology
  • MAT224H1Linear Algebra II
  • MAT247H1Algebra II
  • MAT235H1Vector Calculus I
  • MAT236H1Vector Calculus II
  • MAT235Y1Multivariable Calculus last in the 2025-2026 Calendar
  • MAT237Y1Multivariable Calculus with Proofs
  • MAT257Y1Analysis II
  • MAT329Y1Concepts in Elementary Mathematics
  • MAT390H1History of Mathematics up to 1700
  • MAT391H1History of Mathematics after 1700
  • STA248H1Statistics for Computer Scientists
  • STA238H1Probability, Statistics and Data Analysis II
  • STA261H1Probability and Statistics II
  • ECE419H1
  • ECE454H1
  • CSC311H1Introduction to Machine Learning
  • STA314H1Statistical Methods for Machine Learning I
  • CSC412H1Probabilistic Learning and Reasoning
  • STA414H1Statistical Methods for Machine Learning II
  • CSC438H1Computability and Logic
  • MAT309H1Introduction to Mathematical Logic
  • CSC301H1Introduction to Software Engineering
  • CSC302H1Engineering Large Software Systems
  • CSC316H1Data Visualization: Foundations and Advanced Programming
  • CSC318H1The Design of Interactive Computational Media
  • CSC404H1Introduction to Video Game Design
  • CSC413H1Neural Networks and Deep Learning
  • CSC417H1Physics-Based Animation
  • CSC419H1Geometry Processing
  • CSC428H1Human-Computer Interaction
  • CSC454H1The Business of Software
  • CSC485H1Computational Linguistics

Computer Science Major

  • Science program
  • 8.0 credits
  • Limited enrolment
  • ASMAJ1689

Enrolment

This is a limited enrolment program. Students must have completed 4.0 credits and meet the requirements listed below to enrol. The full enrolment requirements are on the Calendar's page for this program.

Completion requirements

(8.0 credits, including at least one 0.5 credit at the 400-level)

First year (2.5 credits):

1(CSC108H1, CSC148H1, CSC165H1/ CSC240H1)/ (CSC110Y1, CSC111H1); (MAT148H1/ MAT158H1/ MAT130H1/ MAT135H1, MAT149H1/ MAT159H1/ MAT136H1)/ MAT137Y1/ MAT157Y1

Students in this program have the option to enrol in the Arts & Science Internship Program (ASIP) stream.

Notes:

Note 1Students with a strong background in an object-oriented language such as Python, Java or C++ may omit CSC108H1 and proceed directly with CSC148H1. [There is no need to replace the missing 0.5 credit for program completion; however, please base your course choice on what you are ready to take, not on “saving” a 0.5 credit].

Note 2CSC240H1 is an accelerated and enriched version of CSC165H1 plus CSC236H1, intended for students with a strong mathematical background, or who develop an interest after taking CSC165H1. If you take CSC240H1 without CSC165H1, there is no need to replace the missing half-credit for program completion; but please see Note (a).

Note 3Consult the Undergraduate Office for advice about choosing among CSC108H1 and CSC148H1, and between CSC165H1 and CSC240H1.

Note 4We recommend that students take MAT148H1/ MAT158H1 and MAT149H1/ MAT159H1, as they provide the best preparation for upper-year courses in computer science and benefit students in CSC165H1/ CSC240H1.

Second year (2.5 credits):

2CSC207H1, CSC236H1/ CSC240H1, CSC258H1, CSC263H1/ CSC265H1, STA247H1/ STA237H1/ STA255H1/ STA257H1

Later years (3.0 credits):

33.0 credits of courses in total selected from among the following groups:

Group A: CSC209H1; any 300-/ 400-level CSC course except those listed in Group B

Group B: CSC299H1, CSC299Y1, CSC394H1, CSC395H1, CSC396Y0, CSC398H0, CSC398Y0, CSC399H1, CSC399Y1, CSC490H1, CSC491H1, CSC494H1, CSC494Y1, CSC495H1

Group C: BCB330Y1, BCB410H1, BCB420H1, BCB430Y1; MAT223H1/ MAT240H1, (MAT235H1, MAT236H1)/ MAT235Y1/ MAT237Y1/ MAT257Y1, any 300-/400-level MAT course except MAT329Y1, MAT390H1, MAT391H1; STA248H1/ STA238H1/ STA261H1, any 300-/400-level STA course; ECE419H1, ECE454H1

These 3.0 credits must include:

at least 2.0 credits from Groups A and/or B at the 300-/400-level, including at least 0.5 credit from a 400-level CSC course

at least 1.0 credit at the 300-/400-level from Group A

no more than 1.5 credits from Group B, and no more than 1.0 credit from Group B at the 400-level

no more than 0.5 credit from CSC311H1/ STA314H1

no more than 0.5 credit from CSC412H1/ STA414H1

no more than 0.5 credit from CSC438H1/ MAT309H1

The choices in 3 must satisfy the requirement for an integrative, inquiry-based activity by including one of the following courses: CSC301H1, CSC302H1, CSC316H1, CSC318H1, CSC394H1, CSC395H1, CSC396Y0, CSC404H1, CSC413H1, CSC417H1, CSC419H1, CSC428H1, CSC454H1, CSC485H1, CSC490H1, CSC491H1, CSC494H1, CSC495H1, CSC494Y1. Students who complete the Arts & Science Internship Program (ASIP) stream will also meet this requirement.

Students enrolled in the Computer Science Major (ASMAJ1689) program may request to count other University of Toronto Faculty of Applied Science and Engineering courses within Group C. Requests must be reviewed and approved by the Computer Science Undergraduate Office and will be evaluated on a case-by-case basis. For information about this process, please contact the Computer Science Undergraduate Office.

Transfer credits (except for those attained through a University of Toronto exchange program) cannot comprise more than 1.0 credit at the 300-/ 400-level, and cannot be used to satisfy the requirement for an integrative, inquiry-based activity. In addition, transfer credits (except for those attained through a University of Toronto exchange program) cannot be used to satisfy the requirement for 0.5 credit at the 400-level in CSC.

Students cannot combine the Computer Science Major (ASMAJ1689) program with the Computer Science Specialist (ASSPE1689) or the Computer Science Minor (ASMIN1689) for their degree.

Courses these requirements name

  • CSC108H1Introduction to Computer Programming
  • CSC148H1Introduction to Computer Science
  • CSC165H1Mathematical Expression and Reasoning for Computer Science
  • CSC240H1Enriched Introduction to the Theory of Computation
  • CSC110Y1Foundations of Computer Science I
  • CSC111H1Foundations of Computer Science II
  • MAT148H1Calculus I with Proofs
  • MAT158H1Analysis 1A
  • MAT130H1Calculus I for Life Sciences
  • MAT135H1Calculus I
  • MAT149H1Calculus II with Proofs
  • MAT159H1Analysis 1B
  • MAT136H1Calculus II
  • MAT137Y1Calculus with Proofs last in the 2025-2026 Calendar
  • MAT157Y1Analysis I last in the 2025-2026 Calendar
  • CSC236H1Introduction to the Theory of Computation
  • CSC207H1Software Design
  • CSC258H1Computer Organization
  • CSC263H1Data Structures and Analysis
  • CSC265H1Enriched Data Structures and Analysis
  • STA247H1Probability with Computer Applications
  • STA237H1Probability, Statistics and Data Analysis I
  • STA255H1Statistical Theory
  • STA257H1Probability and Statistics I
  • CSC209H1Software Tools and Systems Programming
  • CSC299H1Research Opportunity Program
  • CSC299Y1Research Opportunity Program
  • CSC394H1Computer Science Project
  • CSC395H1Computer Science Project
  • CSC396Y0Designing Systems for Real World Problems
  • CSC398H0Research Excursions
  • CSC398Y0Research Excursions
  • CSC399H1Research Opportunity Program
  • CSC399Y1Research Opportunity Program
  • CSC490H1Capstone Design Project
  • CSC491H1Capstone Design Project
  • CSC494H1Computer Science Project
  • CSC494Y1Computer Science Project
  • CSC495H1Computer Science Project
  • BCB330Y1Special Project in Bioinformatics and Computational Biology
  • BCB410H1Applied Bioinformatics
  • BCB420H1Computational Systems Biology
  • BCB430Y1Advanced Special Project in Bioinformatics and Computational Biology
  • MAT223H1Linear Algebra I
  • MAT240H1Algebra I
  • MAT235H1Vector Calculus I
  • MAT236H1Vector Calculus II
  • MAT235Y1Multivariable Calculus last in the 2025-2026 Calendar
  • MAT237Y1Multivariable Calculus with Proofs
  • MAT257Y1Analysis II
  • MAT329Y1Concepts in Elementary Mathematics
  • MAT390H1History of Mathematics up to 1700
  • MAT391H1History of Mathematics after 1700
  • STA248H1Statistics for Computer Scientists
  • STA238H1Probability, Statistics and Data Analysis II
  • STA261H1Probability and Statistics II
  • ECE419H1
  • ECE454H1
  • CSC311H1Introduction to Machine Learning
  • STA314H1Statistical Methods for Machine Learning I
  • CSC412H1Probabilistic Learning and Reasoning
  • STA414H1Statistical Methods for Machine Learning II
  • CSC438H1Computability and Logic
  • MAT309H1Introduction to Mathematical Logic
  • CSC301H1Introduction to Software Engineering
  • CSC302H1Engineering Large Software Systems
  • CSC316H1Data Visualization: Foundations and Advanced Programming
  • CSC318H1The Design of Interactive Computational Media
  • CSC404H1Introduction to Video Game Design
  • CSC413H1Neural Networks and Deep Learning
  • CSC417H1Physics-Based Animation
  • CSC419H1Geometry Processing
  • CSC428H1Human-Computer Interaction
  • CSC454H1The Business of Software
  • CSC485H1Computational Linguistics

Computer Science Minor

  • 4.0 credits
  • Limited enrolment
  • ASMIN1689

Enrolment

This is a limited enrolment program. Students must have completed 4.0 credits and meet the requirements listed below to enrol. The full enrolment requirements are on the Calendar's page for this program.

Completion requirements

(4.0 credits with at least 1.0 credit at the 300+ level)

1Completion of either

CSC108H1, CSC148H1, CSC165H1 or

CSC108H1, CSC148H1, CSC240H1 or

CSC148H1, CSC165H1 or

CSC148H1, CSC240H1 or

CSC110Y1, CSC111H1

20.5 credit from: CSC207H1

30.5 credit from: CSC236H1/ CSC240H1

4Additional 1.5 to 2.0 credits from CSC courses at the 200-/300-/400 level to a total of 4.0 credits counting for the program.

Notes:

Note 1Students with a strong background in an object-oriented language such as Python, Java or C++ may omit CSC108H1 and proceed directly with CSC148H1.

Note 2CSC240H1 is an accelerated and enriched version of CSC165H1 plus CSC236H1, intended for students with a strong mathematical background, or who develop an interest after taking CSC165H1.

Note 3Consult the Undergraduate Office for advice about choosing among CSC108H1 and CSC148H1, and between CSC165H1 and CSC240H1.

Note 4Students enrolled in the Computer Science Minor program are limited to at most 1.5 credits from CSC/ECE courses at the 300-/400-level.

Note 5Transfer credits cannot comprise more than 0.5 credit at the 300-/400-level.

Note 6Students cannot combine the Computer Science Minor (ASMIN1689) program with the Computer Science Major (ASMAJ1689) or the Computer Science Specialist (ASSPE1689) for their degree.

Courses these requirements name

  • CSC108H1Introduction to Computer Programming
  • CSC148H1Introduction to Computer Science
  • CSC165H1Mathematical Expression and Reasoning for Computer Science
  • CSC240H1Enriched Introduction to the Theory of Computation
  • CSC110Y1Foundations of Computer Science I
  • CSC111H1Foundations of Computer Science II
  • CSC207H1Software Design
  • CSC236H1Introduction to the Theory of Computation

Requirements are quoted from the 2026-2027 Arts & Science Calendar, which is the official version. Atlas is independent of U of T, so confirm important decisions with your department or college registrar. See how to read program requirements or browse every program.

See where you stand in Computer Science.

Add your courses and Atlas marks each requirement done, in progress or still to do.