Computer Science


Faculty List

(As of April, 2024. For an up-to-date list of faculty and administrative roles, please see https://web.cs.toronto.edu/people/faculty-directory)

University Professors Emeriti 
S. Cook, SM, PhD, FRS, FRSC 
G. Hinton, PhD, FRS, FRSC 

Professors Emeriti 
R. Baecker, MSc, PhD 
D. Corneil, MA, PhD 
J. Danahy, MScUrb & DesPl 
W. Enright, MSc, PhD (University of Toronto Scarborough) 
E. Fiume, PhD, FRSC 
E. Hehner, MSc, PhD 
G. Hirst, MSc, PhD (University of Toronto Scarborough) 
K. Jackson, MSc, PhD 
A. Jepson, PhD 
H. Levesque, MSc, PhD, FRSC 
R. Miller, MSc, PhD, FRSC 
J. Mylopoulos, MSc, PhD, FRSC 
R. Neal, PhD 
C. Rackoff, PhD (University of Toronto Mississauga) 
D. Wortman, MSc, PhD 

Associate Professor, Teaching Stream Emeritus 
D. Heap, MSc 

Senior Lecturer Emeritus 
J. Clarke, MSc, PhD 

University Professor 
A. Borodin, MSc, PhD, FRSC 

Professor and Chair of the Department 
E. de Lara, MSc, PhD 

Professors 
T. Abdelrahman, MSc, PhD 
A. Aspuru-Guzik, PhD 
R. Balakrishnan, MSc, PhD 
A. Brown, MSc, PhD 
M. Brudno, MSc, PhD 
M. Chechik, MSc, PhD 
C. Christara, MSc, PhD 
E. de Lara, MSc, PhD 
S. Dickinson, MSc, PhD 
S. Easterbrook, PhD 
F. Ellen, MMath, PhD 
A. Farzan, PhD 
D. Fleet, MSc, PhD (University of Toronto Scarborough) 
Y. Ganjali, MSc, PhD 
A. Goldenberg, MSc, PhD 
E. Grinspun, PhD 
A. Gupta, PhD 
V. Hadzilacos, PhD (University of Toronto Scarborough) 
N. Koudas, MSc, PhD (University of Toronto Scarborough) 
K. Kutulakos, MSc, PhD 
P. Marbach, MSc, PhD 
S. McIlraith, MMath, PhD 
M. Molloy, MMath, PhD (University of Toronto Scarborough) 
G. Penn, MSc, PhD 
T. Pitassi, MSc, PhD 
B. Schroeder, MSc, PhD (University of Toronto Scarborough) 
K. Singh, MSc, PhD 
S. Stevenson, MSc, PhD 
L. Strug, PhD 
S. Toueg, MA, PhD 
K. Truong, PhD 
R. Urtasun, PhD 
D. Wigdor, MSc, PhD
R. Zemel, MSc, PhD 

Associate Professors 
A. Bonner, MSc, PhD (University of Toronto Mississauga) 
J. Burgner-Kahrs, PhD (University of Toronto Mississauga) 
D. Duvenaud, PhD 
S. Fidler, PhD (University of Toronto Mississauga) 
R. Grosse, PhD 
T. Grossman, PhD 
A. Jacobson, PhD 
S. Kopparty, PhD 
D. Levin, PhD 
M. Mehri Dehnavi, PhD 
K. Meel, PhD
A. Nikolov, PhD 
G. Pekhimenko, PhD (University of Toronto Scarborough)  
C.Raffel, PhD
S. Sachdeva, PhD (University of Toronto Mississauga) 
S. Saraf, PhD 
N. Shah, PhD 
Y. Xu, PhD 

Assistant Professors 
I. Ahmed, PhD 
A. Anderson, PhD (University of Toronto Scarborough) 
J. Ba, PhD 
F. Chevalier, PhD 
N. Dayan, PhD 
M. Erdogdu, PhD 
A. Farahmand, PhD (CLTA)
I. Gilitschenski, PhD (University of Toronto Mississauga) 
R. G. Krishnan, PhD 
A. Levis, PhD
D. Lindell, PhD 
F. Long, PhD 
C. Maddison, PhD 
A. Mariakakis, PhD 
C. Nobre, PhD 
G. Pekhimenko, PhD (University of Toronto Scarborough) 
S. Sachdeva, PhD (University of Toronto Mississauga) 
G. Saileshwar, PhD (University of Toronto Mississauga) 
K. Serkh, PhD 
N. Shah, PhD 
F. Shkurti, PhD (University of Toronto Mississauga) 
X. Si, PhD 
R. Soden, PhD 
A. Srinivasan, PhD (University of Toronto Mississauga) 
R. Tell, PhD (University of Toronto Scarborough)
N. Vijaykumar, PhD (University of Toronto Scarborough) 
B. Wang, PhD 
N. Wiebe, PhD 
J. Williams, PhD 
N. Xie, PhD 
Y. Xu, PhD 
Q. Zhang, PhD (University of Toronto Scarborough) 

Professors, Teaching Stream 
J. Campbell, MMath 
M. Craig, MSc 
S. Engels, MMath, PhD 
P. Gries, MEng 
D. Horton, MSc 
K. Reid, MSc 

Associate Professors, Teaching Stream 
G. Baumgartner, MSc 
T. Fairgrieve, MSc, PhD 
D. Liu, MSc 
F. Pitt, MSc, PhD 
J. Smith, MSc 

Assistant Professors, Teaching Stream 
B. Aameri, PhD (CLTA)
M. Badr, PhD 
J. Calver, PhD 
S. Coyne, PhD (CLTA) 
A. Gao, PhD 
S. Sharmin, PhD 
L. Shorser (P/T) 
J. Sun (CLTA)

Cross Appointed 
G. Bader, PhD 
T. Barfoot, PhD 
C. Beck, PhD 
J. Cafazzo, PhD 
K. Campbell, PhD 
M. Chignell, PhD 
E. Cohen, PhD 
N. Enright-Jerger, PhD 
M. Fox, PhD 
B. Frey, PhD 
A. Goel, PhD 
M. Gruninger, PhD 
S. Guha, PhD 
B. Haibe-Kains, PhD 
M. Hoffman, PhD 
H.A. Jacobsen, MSc, PhD 
M. Jeffrey, PhD 
I. Jurisica, PhD 
L. Kahrs, PhD 
J. Kelly, PhD 
F. Khalvati, PhD 
P. Kim, PhD 
A. Kuzminykh, PhD
B. Li, MSc, PhD
S.Li, PhD
D. Lie, PhD 
M. Luit, PhD
K. Lyons, MSc, PhD
A. Madani, PhD 
T. Maharaj, PhD 
R. McEwen, PhD 
C. McIntosh, PhD 
A. Mihailidis, PhD 
Q. Morris, PhD 
A. Moses, PhD 
A. Moshovos, PhD 
C. Munteanu, PhD 
N. Papernot, PhD 
V. Papyan, PhD 
A.Petersen, PhD
H. Rost, PhD 
D. Roy, PhD 
S. Sanner, PhD 
D. Singh, PhD 
M. Stumm, MSc (Math), PhD 
Y. Sun, PhD 
T. Tang, PhD 
A. Veneris, MSc, PhD 
E. Yu, MSc, PhD (Professor Emeritus) 
W. Yu, PhD 
Z. Zhang, PhD 
S. Zhou, PhD 

Adjunct and Status Only 
O. Balmau, PhD 
D. Berry, PhD 
M. Brubaker, PhD 
B. Buxton, MSc 
P. Dietz, PhD 
L. Frermann 
M. Gabel, PhD 
M. Ghassemi, PhD 
G. Gibson, PhD 
H. Huang, PhD 
D. Kaufmann, PhD 
C. Kemp, PhD 
H. Kontozopoulos 
A. Kreinen, PhD 
K. Kluchnikov
K. Kuber
G. Lakemeyer, PhD 
M. McCarthy
M. Medland
F. Rudzicz, PhD 
B. Taati, PhD 
A. Tagliasaachi, PhD 
R. Valenzano, PhD 
H. Yuen, PhD 

Introduction

What is Computer Science?

Despite the name, Computer Science is not really a science of computers at all. Computers are quite remarkable electronic devices, but even more remarkable is what they can be made to do: simulate the flow of air over a wing, manage communication over the Internet, control the actions of a robot, synthesize realistic images, play grandmaster-level chess, learn how to automatically translate between languages, and on and on. Indeed, the application of computers in activities like these has affected most areas of modern life. What these tasks have in common has little to do with the physics or electronics of computers; what matters is that they can be formulated as some sort of computation. This is the real subject matter of Computer Science: computation, and what can or cannot be done computationally.

In trying to make sense of what we can get a computer to do, a wide variety of topics come up. There are, however, two recurring themes. The first is the issue of scale: how big a system can we specify without getting lost in the design, or how big a task can a computer handle within reasonable bounds of time, memory, and accuracy? A large part of Computer Science deals with these questions in one form or another. In the area of programming languages and methodology, for example, we look for notations for describing computations, and programming methodologies that facilitate the production of manageable and efficient software. In the theory of computation area, we study resource requirements in time and memory of many basic computational tasks.

The second theme concerns the scope of computation. Computers were originally conceived as purely numerical calculators, but today, we tend to view them much more broadly. Part of Computer Science is concerned with understanding just how far computational ideas can be applied. In the area of artificial intelligence, for example, we ask how the function of the human brain can be expressed in computational terms. In the area of human-computer interaction, we ask what sorts of normal day-to-day activities of people might be supported and augmented using computers.

 

Computer Science Programs

Current students registered in the Faculty of Arts & Science interested in Computer Science (CS) can pursue the following programs:  

  • CS Major (ASMAJ1689)  
  • CS Minor (ASMIN1689)  
  • Data Science Specialist (ASSPE1687)  

Current students in the first-year Computer Science admission category (CMP1) may also apply to:  

  • CS Specialist (ASSPE1689)  

A Minor in Computer Science provides an introduction to theoretical and applied computer science as a complement to your studies in other areas, and allows you to take up to three 300+ level computer science courses.

A Major in Computer Science builds on the content of the Minor, preparing you for upper-year computer science study with options to explore a few topics more deeply. Students enrolled in the Computer Science Major can integrate their studies with another discipline.

A Specialist in Computer Science goes beyond the Major, providing a broad and deep foundation to computer science, and exposes you to a broad range of upper-year computer science topics.

Students enrolled in the Major or Specialist can choose to complete a Focus in a particular area of computer science, such as: Artificial Intelligence, Human-Computer Interaction, or the Theory of Computation, among others. See below for a full list of focuses and their respective courses.

 

Applying to Computer Science Programs

For enrolment requirements please refer to the individual program requirements. There are separate admission requirements and introductory courses for students admitted to the Computer Science admission stream (CMP1) and students admitted to other admissions categories. More information, including information about the supplemental application form, is available on the Department of Computer Science website at: https://web.cs.toronto.edu/undergraduate/how-to-apply

 

Arts & Science Internship Program (ASIP)

The Arts & Science Internship Program (ASIP) stream is available to students who are entering Year 2 or Year 3 of study and enrolled in the Data Science Specialist, Computer Science Specialist, or Computer Science Major. 

  • Enrolment is limited and requires a supplemental application. Students enrolled in the ASIP stream will be required to complete mandatory Professional Development programming plus a minimum of 12 and maximum of 20 months (Year 2 entry) or a minimum of 12 and maximum of 16 months (Year 3 entry) of paid, full-time work experience. The time to degree completion for students enrolled in ASIP will normally be 5 years. There is an additional cost to participate in the ASIP stream.
     
  • Students will typically be admitted to the ASIP stream for the Fall term of Year 2 of study, however in exceptional circumstances students, including transfer students, who enrolled in an eligible program in the Summer after Year 2 can be admitted to the ASIP stream for the Fall of Year 3. Acceptance into an ASIP stream in Year 3 is dependent on space and requires approval of the student’s academic unit and the Faculty of Arts & Science Experiential Learning & Outreach Support (ELOS) Office. Please refer to the ASIP eligibility page for further details.
     
  • Further details about ASIP, including eligibility requirements and application procedures, can be found here. Students may also visit the ASIP webpage or contact the ELOS office at asip@utoronto.ca

 

Contact Information

The Department of Computer Science is committed to providing academic support to our students throughout the duration of their undergraduate studies. Our undergraduate program office can provide St. George Computer Science students with advice on course selection, program admission, research and experiential learning opportunities, and ways to get involved in the CS community.

Contact us at Bahen Building, Room 4207, 40 St. George Street. Email: cs.undergrad@utoronto.ca. Website: web.cs.toronto.edu

 

Computer Science Programs

Applied Data Science Minor (Science Program) - ASMIN0160

More than at any other time in our history, we are living through a paradigm shift in how we think about data. Advances in computing power, algorithms for data modeling and machine learning, coupled with unparalleled access to vast quantities of data has transformed disciplines across the sciences, social sciences, and humanities. The Minor in Applied Data Science will help students learn fundamental data science methodologies drawn from computing and statistics and provide opportunities to apply these methodologies to datasets, problem domains, and explorations in many disciplines of study in Arts & Science. Understanding the human and ethical contexts and communicating results of data science methodologies will appear in courses throughout the program.

The minor is designed to complement programs in other areas with opportunities for data science applications (see program requirements for pertinent programs). This program is designed to be accessible to students who have never done any computer programming or statistics before, or who haven’t taken high school or university calculus. All skills necessary to succeed in the program are taught in our courses. Most students who are interested in this program should start by choosing one of our three introductory, interdisciplinary data science courses: EEB125H1, GGR274H1, or ENG286H1, which introduce data science skills such as computer programming, statistical reasoning, and data visualization within the context of a particular discipline. Students then proceed to take a suite of key computer science and statistics courses that reinforce and extend these skills, with an emphasis on applications to real-world problems. Finally, in later years students will choose from a wide variety of courses drawn from across the Faculty of Arts & Science. These upper-year courses will provide the opportunity to discuss and analyze the human contexts of data science, and to apply data science methodologies in discipline-specific contexts.

Enrolment Requirements:

This is a limited enrolment program. Students must have completed 4.0 credits and meet the requirements listed below to enrol.

Variable Minimum Grade
A minimum grade is needed for entry, and this minimum may change each year depending on available spaces and the number of applicants. Eligibility is based on the following criteria:

  1. Completion of one of EEB125H1/​ ENG286H1/​ GGR274H1/​ ESS245H1/​ STA130H1 with a grade of at least 60%, OR
  2. Completion of one of CSC108H1/​ CSC110Y1/​ CSC148H1 with a grade of at least 60%, OR
  3. Completion of one of ECO220Y1/​ EEB225H1/​ GGR270H1/​ IRW220H1/​ PSY201H1/​ SOC202H1/​ STA220H1/​ STA238H1/​ STA248H1/​ STA261H1/​ STA288H1 with a grade of at least 60%.

Obtaining this minimum grade does not guarantee admission to the program. If students have completed more than one of the above courses at the time of admission, the minimum grade will be based on the higher course grade.

Note: Students enrolled in this program cannot be simultaneously enrolled in or complete any Computer Science or Statistics programs, including the Computer Science Minor, Statistics Minor, and Data Science Specialist; nor the Focus in Data Analytics within the Economics Major or Specialist; nor the Focus in Data Science in Business within the Rotman Commerce specialist programs.

Completion Requirements:

(4.0 credits)

1. EEB125H1/​ ENG286H1/​ GGR274H1/​ ESS245H1/​ STA130H1
2. 0.5 credit from CSC108H1/​ CSC110Y1/​ CSC148H1
3. 0.5 credit from ECO220Y1/​ EEB225H1/​ GGR270H1/​ IRW220H1/​ PSY201H1/​ SOC202H1/​ STA220H1/​ STA238H1/​ STA248H1/​ STA261H1/​ STA288H1

Note: If you completed STA238H1, STA248H1, and/or STA261H1 before being admitted
to the Minor, please note that these courses are exclusions to EEB125H1, ENG286H1,
GGR274H1, and STA130H1. You can complete ESS245H1 to meet requirement 1 or can
instead complete an additional 0.5 credit from the list of courses in requirement 7, for a
total of 1.5 credits for requirement 7.

If you completed CSC148H1 before being admitted to the Minor, please note that this course is an exclusion to EEB125H1, ENG286H1, and GGR274H1. You can complete ESS245H1 or STA130H1 to meet requirement 1 or can instead complete an additional 0.5 credit from the list of courses in requirement 7, for a total of 1.5 credits for requirement 7.

4. CSC271H1 (first offering in 2025-26)
5. STA272H1 (first offering in 2025-26)
6. PHL277H1/​ PHL377H1/​ HPS246H1/​ CSC300H1

7. At least 1.0 credit from the following courses: BCB410H1/​ BCB420H1/​ CHM326H1/​ CHM328H1/​ CSB352H1/​ CSB435H1/​ CSB434H1/​ CSB471H1/​ CSB472H1/​ DHU338H1/​ EEB313H1/​ EEB319H1/​ EEB365H1/​ EEB458H1/​ EEB460H1/​ EEB463H1/​ ENV338H1/​ ESS452H1/​ GGR315H1/​ GGR372H1/​ GGR373H1/​ GGR375H1/​ GGR376H1/​ GGR377H1/​ GGR415H1/​ GGR462H1/​ GGR472H1/​ GGR473H1/​ IMM360H1/​ IRE379H1/​ JGA305H1/​ JPM400Y1/​ LIN305H1/​ LIN405H1/​ LIN456H1/​ MGY441H1/​ POL314H1/​ POL352H1/​ POL419H1/​ PCL367H1/​ PCL368H1/​ PSL432H1/​ PSY305H1/​ SOC303H1/​ 0.5 or 1.0 credits from a 300-/400-level capstone, topics, or independent study course(s) in which students apply data science methodologies, and with prior approval of the Applied Data Science Minor Program Director

Courses listed in requirement 7 are offered by academic units across the Faculty of Arts & Science. Please review the prerequisites and enrolment controls for the course(s) that you are planning to take to complete this requirement. Course enrolment controls are listed in the University’s Timetable Builder. Course descriptions, prerequisites, corequisites, and exclusions are listed in both in the Timetable Builder and in the Faculty of Arts & Science Academic Calendar.

Data Science Specialist (Science Program) - ASSPE1687

The field of Data Science is a combination of statistics and computer science methodologies that enable ‘learning from data’. A data scientist extracts information from data, and is involved with every step that must be taken to achieve this goal, from getting acquainted with the data to communicating the results in non-technical language. The Data Science Specialist program prepares students for work in the Data Science industry or government and for graduate studies in Data Science, Computer Science, or Statistics. Students in the program will benefit from a range of advanced courses in Computer Science and Statistics offered by the University of Toronto, as well as from a sequence of three integrative courses designed especially for the program.

The Data Science Specialist program comprises three fundamental and highly-integrated aspects. First, students will acquire expertise in statistical reasoning, methods, and inference essential for any data analyst. Seconds, students will receive in-depth training in computer science: the design and analysis of algorithms and data structures for handling large amounts of data, and best practices in software design. Students will receive training in machine learning, which lies at the intersection of computer and statistical sciences. The third aspect is the application of computer science and statistics to produce analyses of complex, large-scale datasets, and the communication of the results of these analyses; students will receive training in these areas by taking integrative courses that are designed specifically for the Data Science Specialist program. The courses involve experiential learning: students will be working with real large-scale datasets from the domain of business, government, and/or science. The successful student will combine their expertise in computer and statistical science to produce and communicate analyses of complex large-scale datasets.

Skills that graduates of the program will acquire include proficiency in statistical reasoning and computational thinking; data manipulation and exploration, visualization, and communication that are required for work as a data scientist; the ability to apply statistical methods to solve problems in the context of scientific research, business, and government; familiarity and experience with best practices in software development; and knowledge of current software infrastructure for handling large data sets. Graduates of the program will be able to demonstrate the ability to apply machine learning algorithms to large-scale datasets that arise in scientific research, government, and business; create appropriate data visualizations for complex datasets; identify and answer questions that involve applying statistical methods or machine learning algorithms to complex data, and communicating the results; present the results and limitations of a data analysis at an appropriate technical level for the intended audience.

Enrolment Requirements:

This is a limited enrolment program. Students must have completed 4.0 credits and meet the requirements listed below to enrol.

For students admitted to Arts & Science in the Year 1 Computer Science (CMP1) admission category:

Variable Minimum Grade
A minimum grade is needed for entry, and this minimum changes each year depending on the number of applicants. At least 20 spaces will be available each year for students applying from Year 1 Computer Science (CMP1) within 12 months of beginning their studies:

* STA130H1 is restricted to first-year students, therefore students are strongly encouraged to take STA130H1 in their first year. STA261H1 will be used in place of STA130H1 for program admission purposes if a student has not completed STA130H1 or if they have completed both STA130H1 and STA261H1 by the time they are being considered for admission.

To ensure that students admitted to the program will be successful, applicants will not be considered for admission with a grade lower than 70% in CSC110Y1, MAT137Y1, and STA130H1/​ STA261H1, or lower than 77% in CSC111H1. ( MAT157Y1 grades will be adjusted to account for the course's greater difficulty.) Obtaining these minimum grades does not guarantee admission to the program.

For students admitted to other Arts & Science Year 1 admission categories:

Special Requirement

  • Students who do not have the Computer Science Admission Guarantee must complete a supplementary application to be considered for the program.

Variable Minimum Grade
A minimum grade is needed for entry, and this minimum changes each year depending on available spaces and the number of applicants. The following courses must be completed:

* STA130H1 is restricted to first-year students, therefore students are strongly encouraged to take STA130H1 in their first year. STA261H1 will be used in place of STA130H1 for program admission purposes if a student has not completed STA130H1 or if they have completed both STA130H1 and STA261H1 by the time they are being considered for admission.

To ensure that students admitted to the program will be successful, applicants with a grade lower than 70% will not be considered for admission. ( MAT157Y1 grades will be adjusted to account for the course's greater difficulty.) Obtaining these minimum grades does not guarantee admission to the program.

Notes:

  1. Requests for admission will be considered in the first program request period only.
  2. Due to the limited enrolment nature of this program, students are strongly advised to plan to enroll in backup programs.
  3. Students admitted to the program after second or third year will be required to pay retroactive deregulated program fees.

Arts & Science Internship Program

Students in this program have the option to request enrolment in the Arts & Science Internship Program (ASIP) stream. Students can apply for the ASIP stream after Year 1 (Year 2 entry) or after Year 2 (Year 3 entry). Full details about ASIP, including student eligibility, selection and enrolment, are available in the ASIP section of the Arts & Science Academic Calendar. Please note that space is more limited for Year 3 entry and students applying for Year 3 entry must have been admitted to the Data Science Specialist in the Summer after Year 2.

Completion Requirements:

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

First year (3.0-3.5 credits)
MAT137Y1/​ MAT157Y1, MAT223H1/​ MAT240H1 ( MAT240H1 is recommended), STA130H1, ( CSC108H1, CSC148H1)/ ( CSC110Y1, CSC111H1)
Note: Students 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 half-credit for program completion; however, please base your course choice on what you are ready to take, not on "saving" a half-credit. Consult with the Computer Science Undergraduate Office for advice on choosing between CSC108H1 and CSC148H1.

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

Second year (3.5-4.0 credits)
MAT237Y1/​ MAT257Y1, STA257H1, STA261H1, CSC207H1, ( CSC165H1, CSC236H1)/ CSC236H1/​ CSC240H1 ( CSC240H1 is recommended), JSC270H1 (Data Science I)
Note: CSC240H1 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; however, please base your course choice on what you are ready to take, not on "saving" a half-credit. Consult the Computer Science Undergraduate Office for advice on choosing between CSC165H1 and CSC240H1. CSC236H1 may be taken without CSC165H1 for students who completed CSC111H1.

Later years (6.5 credits/7.0 credits for students who have not completed STA130H1 (see 4.))

  1. STA302H1, one of STA303H1 or STA305H1, STA355H1, CSC209H1, CSC263H1/​ CSC265H1 ( CSC265H1 is recommended), CSC343H1, CSC373H1, JSC370H1 (Data Science II)
  2. STA314H1/​ CSC311H1
  3. 2.0 credits from the following list, including at least 1.0 credit at the 400-level (see below for additional conditions): STA303H1/​ STA305H1 (whichever one was not taken previously), STA313H1/​ CSC316H1, STA347H1, CSC401H1, STA414H1/​ CSC412H1, CSC413H1/​ CSC421H1, any 400-level STA course; JSC470H1 (Data Science III); CSC454H1, CSC490H1, CSC491H1, CSC494H1, CSC495H1, CSC494Y1.
  4. If a student has not completed STA130H1 then an additional 0.5 credit 300+ level STA course that is not used towards any other program requirement must be completed.

The choices from 3 must satisfy the requirement for an integrative, inquiry-based activity by including at least 0.5 credit from the following: JSC470H1 (Data Science III); CSC454H1, CSC490H1, CSC491H1, CSC494H1, CSC495H1, CSC494Y1, STA490Y1, STA496H1, STA497H1, STA498Y1, STA499Y1. Students who complete the Arts & Science Internship Program (ASIP) stream will also meet this requirement.

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 or or STA or JSC courses required.

Students will be advised to develop domain expertise in at least one area where Data Science is applicable, by taking a sequence of courses in that area throughout their program. Examples of such areas will be provided to students by program advisors and will form the basis for a later proposal for program Focuses (to be approved through internal Arts & Science governance procedures).

Note:
-If you do not complete STA130H1 in your first year of study, this requirement must be fulfilled by completing a 300 or 400-level 0.5 credit STA course to replace STA130H1. Please note that the 300 or 400-level STA course used to replace STA130H1 cannot be a course that is already being used to meet a program completion requirement.

Computer Science Specialist (Science Program) - ASSPE1689

Enrolment Requirements:

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.

Requests for admission will be considered in the first program request period only. Students must have completed 4.0 credits and meet the requirements listed below to apply.

Completed courses (with minimum grades)
Students in the CMP1 admissions category have guaranteed admission to the Computer Science Specialist, provided the following courses with the stated minimum grades are successfully completed within 12 months of beginning their studies:

Note:

  1. If you are admitted to the CS Specialist in a session other than the summer after your first year (including if you are admitted after completing summer courses), you may be charged retroactive program fees. More information about retroactive fees can be found in the Faculty of Arts & Science Fees & Refund page.

Arts & Science Internship Program

Students in this program have the option to request enrolment in the Arts & Science Internship Program (ASIP) stream. Students can apply for the ASIP stream after Year 1 (Year 2 entry) or after Year 2 (Year 3 entry). Full details about ASIP, including student eligibility, selection and enrolment, are available in the ASIP section of the Arts & Science Academic Calendar. Please note that space is more limited for Year 3 entry and students applying for Year 3 entry must have been admitted to the Computer Science Specialist in the Summer after Year 2.

Completion Requirements:

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

First year (2.5 credits):

1. ( CSC110Y1, CSC111H1), MAT137Y1/​ MAT157Y1

Notes:

  1. CSC110Y1 and CSC111H1 must be completed in order to complete the Specialist program. No course substitutions will be accepted for CSC110Y1 and/or CSC111H1.
  2. Students 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):

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

Later years (6.0 credits):

3. CSC369H1, CSC373H1

4. 5.0 credits of courses selected from the following list:

These 5.0 credits must include:

  • at least 1.5 credits from 400-level CSC or BCB courses
  • no more than 2.0 credits from MAT or STA courses (excluding STA414H1)
  • no more than 0.5 credits from CSC311H1/​ STA314H1
  • no more than 0.5 credits from CSC412H1/​ STA414H1
  • no more than 0.5 credits from CSC438H1/​ MAT309H1

No more than 1.0 credit from CSC490H1, CSC491H1, CSC494H1, CSC495H1, CSC494Y1, BCB330Y1/​ BCB430Y1 may be used to fulfill program requirements.

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, CSC404H1, CSC413H1, CSC417H1, CSC418H1, CSC419H1, CSC428H1, CSC454H1, CSC485H1, CSC490H1, CSC491H1, CSC494H1, CSC495H1, CSC494Y1. Students who complete the Arts & Science Internship Program (ASIP) stream will also meet this requirement.

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 or BCB courses required.

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.

Computer Science Major (Science Program) - ASMAJ1689

Enrolment Requirements:

This is a limited enrolment program. Students must have completed 4.0 credits and meet the requirements listed below to enrol.

For students admitted to Arts & Science in the Year 1 Computer Science (CMP1) admission category:

Completed courses (with minimum grades)
Students in the CMP1 admissions category have guaranteed admission to the Computer Science Major, provided the following courses with the stated minimum grades are completed within 12 months of beginning their studies:

For students admitted to other Arts & Science Year 1 admission categories:

Special Requirement

  • Students who do not have the Computer Science Admission Guarantee must complete a supplementary application to be considered for the program.

Variable Minimum Grade
A minimum grade is needed for entry, and this minimum changes each year depending on available spaces and the number of applicants. The following courses must be completed:

To ensure that students admitted to the program will be successful, applicants with a grade below 70% will not be considered for admission. Obtaining this minimum grade does not guarantee admission to the program.

Notes:

  1. Requests for admission will be considered in the first program request period only.
  2. Due to the limited enrolment nature of this program, students are strongly advised to plan to enrol in backup programs.
  3. Students admitted to the program after second or third year will be required to pay retroactive deregulated program fees.

Arts & Science Internship Program

Students in this program have the option to request enrolment in the Arts & Science Internship Program (ASIP) stream. Students can apply for the ASIP stream after Year 1 (Year 2 entry) or after Year 2 (Year 3 entry). Full details about ASIP, including student eligibility, selection and enrolment, are available in the ASIP section of the Arts & Science Academic Calendar. Please note that space is more limited for Year 3 entry and students applying for Year 3 entry must have been admitted to the Computer Science Major in the Summer after Year 2.

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); MAT137Y1/​ MAT157Y1/​ ( MAT135H1, MAT136H1)

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

Notes:

  1. Students 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].
  2. CSC240H1 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).
  3. Consult the Undergraduate Office for advice about choosing among CSC108H1 and CSC148H1, and between CSC165H1 and CSC240H1.
  4. We recommend that students take MAT137Y1 or MAT157Y1, as they have been determined to provide the best preparation for upper-year courses in computer science and benefit students in CSC165H1/​ CSC240H1.

Second year (2.5 credits):

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

Later years (3.0 credits):
3. 3.0 credits of courses selected from the following list:

These 3.0 credits must include:

  • at least one 0.5 credit from a 400-level CSC/ BCB course
  • at least 1.5 additional credits from 300-/ 400-level CSC/ BCB courses
  • no more than 0.5 credit from CSC412H1/​ STA414H1
  • no more than 0.5 credit from CSC438H1/​ MAT309H1

No more than 1.0 credit from CSC490H1, CSC491H1, CSC494H1, CSC495H1, CSC494Y1, BCB330Y1/​ BCB430Y1 may be used to fulfill program requirements.

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, CSC404H1, CSC413H1, CSC417H1, CSC418H1, CSC419H1, CSC428H1, CSC454H1, CSC485H1, CSC490H1, CSC491H1, CSC494H1, CSC495H1, CSC494Y1. Students who complete the Arts & Science Internship Program (ASIP) stream will also meet this requirement.

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/ BCB.

Computer Science Minor (Science Program) - ASMIN1689

Enrolment Requirements:

This is a limited enrolment program. Students must have completed 4.0 credits and meet the requirements listed below to enrol.

For students admitted to Arts & Science in the Year 1 Computer Science (CMP1) admission category:

Completed courses (with minimum grades)
Students in the CMP1 admissions category have guaranteed admission to the Computer Science Minor, provided the following courses with the stated minimum grades are completed within 12 months of beginning their studies:

For students admitted to other Arts & Science Year 1 admission categories:

Special Requirement

  • Students who do not have the Computer Science Admission Guarantee must complete a supplementary application to be considered for the program.

Variable Minimum Grade
A minimum grade is needed for entry, and this minimum changes each year depending on available spaces and the number of applicants. The following courses must be completed:

To ensure that students admitted to the program will be successful, applicants with a grade below 70% will not be considered for admission. Obtaining this minimum grade does not guarantee admission to the program.

Notes:

  1. Requests for admission will be considered in the first program request period only.
  2. Due to the limited enrolment nature of this program, students are strongly advised to plan to enroll in backup programs.
Completion Requirements:

(4.0 credits)

1. ( CSC108H1/​ CSC120H1, CSC148H1, CSC165H1/​ CSC240H1)/( CSC110Y1, CSC111H1)

Notes:

  1. Students with a strong background in an object-oriented language such as Python, Java or C++ may omit CSC108H1 and proceed directly with CSC148H1.
  2. CSC240H1 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.
  3. Consult the Undergraduate Office for advice about choosing among CSC108H1 and CSC148H1, and between CSC165H1 and CSC240H1.

2. CSC207H1, CSC236H1/​ CSC240H1

(Total of above requirements: 2.5 credits. If you take fewer than 2.5 credits, you must take more than 1.5 credits from the next list, so that the total is 4.0 credits.)

3. 1.5 credits from the following list, of which at least 1.0 credit must be at the 300-/400-level:

  • CSC: any 200-/300-/400-level

Note:

  • Computer Science Minors are limited to 1.5 credits from 300-/400-level CSC/ECE courses.
  • Transfer credits cannot comprise more than 0.5 credit at the 300-/400-level.

Focus in Artificial Intelligence (Specialist) - ASFOC1689B

(3.5 credits)

Artificial Intelligence (AI) is aimed at understanding and replicating the computational processes underlying intelligent behaviour. These behaviours include the perception of one's environment, learning how that environment is structured, communicating with other agents, and reasoning to guide one's actions. This focus is designed to provide students with an introduction to some of the key scientific and technical ideas that have been developed in AI. There are four different sub-areas of AI represented in our department: Computer Vision, Computational Linguistics, Machine Learning, and Knowledge Representation and Reasoning. These areas cover a wide variety of ideas and techniques. Students wanting to achieve this focus are required to take courses from at least two of these sub-areas (as in point 2, below).

Enrolment Requirements:

Enrolment in the Computer Science Specialist Program (ASSPE1689).

Completion Requirements:

Required Courses:

  1. 1.0 credit from the following: CSC336H1, MAT235Y1/​ MAT237Y1/​ MAT257Y1, APM236H1, MAT224H1/​ MAT247H1, STA238H1/​ STA248H1/​ STA261H1, STA302H1, STA347H1
  2. 2.5 credits from the following, so that courses are from at least two of the four areas:
    1. CSC401H1, CSC485H1
    2. CSC320H1, CSC420H1
    3. CSC413H1/​ CSC421H1/​ CSC321H1, CSC311H1/​ STA314H1, CSC412H1/​ STA414H1
    4. CSC304H1, CSC384H1, CSC486H1

Suggested Related Courses:

CSC324H1, COG250Y1, PSY270H1, PHL232H1, PHL342H1

Focus in Artificial Intelligence (Major) - ASFOC1689K

(3.5 credits)

The Focus in Artificial Intelligence (Major) has the same set of requirements as the Focus in Artificial Intelligence (Specialist).

Artificial Intelligence (AI) is aimed at understanding and replicating the computational processes underlying intelligent behaviour. These behaviours include the perception of one's environment, learning how that environment is structured, communicating with other agents, and reasoning to guide one's actions. This focus is designed to provide students with an introduction to some of the key scientific and technical ideas that have been developed in AI. There are four different sub-areas of AI represented in our department: Computer Vision, Computational Linguistics, Machine Learning, and Knowledge Representation and Reasoning. These areas cover a wide variety of ideas and techniques. Students wanting to achieve this focus are required to take courses from at least two of these sub-areas (as in point 2, below).

Enrolment Requirements:

Enrolment in the Computer Science Major Program (ASMAJ1689).

Completion Requirements:

Required Courses:

  1. 1.0 credit from the following: CSC336H1, MAT235Y1/​ MAT237Y1/​ MAT257Y1, APM236H1, MAT224H1/​ MAT247H1, STA238H1/​ STA248H1/​ STA261H1, STA302H1, STA347H1
  2. 2.5 credits from the following, so that courses are from at least two of the four areas:
    1. CSC401H1, CSC485H1
    2. CSC320H1, CSC420H1
    3. CSC413H1/​ CSC421H1/​ CSC321H1, CSC311H1/​ STA314H1, CSC412H1/​ STA414H1
    4. CSC304H1, CSC384H1, CSC486H1

Suggested Related Courses:

CSC324H1, COG250Y1, PSY270H1, PHL232H1, PHL342H1

Focus in Computational Linguistics and Natural Language Processing (Specialist) - ASFOC1689C

(4.0 credits)

How can we build and analyze systems that enable users to communicate with computers using human language (also called natural language) and automatically process the vast amounts of data on the web available in the form of text? The focus covers appropriate material on natural language interfaces, as well as tools such as document summarization, intelligent search over the web, and so on. Students considering this focus are encouraged to consider a Major in Linguistics. [Note 0.5 credit in LIN is in addition to the 12.0 credits required to complete the Specialist program]

Enrolment Requirements:

Enrolment in the Computer Science Specialist Program (ASSPE1689).

Completion Requirements:

Required Courses:

  1. CSC318H1
  2. CSC401H1, CSC485H1
  3. LIN101H1/​ LIN200H1
  4. 1.5 credits from the following: CSC309H1, CSC413H1/​ CSC421H1/​ CSC321H1, CSC311H1, CSC428H1, CSC486H1
  5. 0.5 credit from the following: PSY100H1, COG250Y1

Suggested Related Courses:

Other relevant Computer Science courses, depending on the student's interests, include other courses in artificial intelligence such as CSC384H1 or CSC420H1. Linguistics, Psychology, and Cognitive Science are all directly relevant to this focus, and we recommend that interested students take additional courses from any or all of those disciplines.

Focus in Computational Linguistics and Natural Language Processing (Major) - ASFOC1689M

(4.0 credits)

The Focus in Computational Linguistics and Natural Language Processing (Major) has the same set of requirements as the Focus in Computational Linguistics and Natural Language Processing (Specialist).

How can we build and analyze systems that enable users to communicate with computers using human language (also called natural language) and automatically process the vast amounts of data on the web available in the form of text? The focus covers appropriate material on natural language interfaces, as well as tools such as document summarization, intelligent search over the web, and so on. Students considering this focus are encouraged to consider a Major in Linguistics.

Enrolment Requirements:

Enrolment in the Computer Science Major Program (ASMAJ1689).

Completion Requirements:

Required Courses:

  1. CSC318H1
  2. CSC401H1, CSC485H1
  3. LIN101H1/​ LIN200H1
  4. 1.5 credits from the following: CSC309H1, CSC413H1/​ CSC421H1/​ CSC321H1, CSC311H1, CSC428H1, CSC486H1
  5. 0.5 credit from the following: PSY100H1, COG250Y1

Suggested Related Courses:

Other relevant Computer Science courses, depending on the student's interests, include other courses in artificial intelligence such as CSC384H1 or CSC420H1. Linguistics, Psychology, and Cognitive Science are all directly relevant to this focus, and we recommend that interested students take additional courses from any or all of those disciplines.

Focus in Computer Systems (Specialist) - ASFOC1689F

(3.0 credits)

Software systems are complex and interesting. Poorly done systems can be incredibly expensive: they can cost society billions of dollars and sometimes make the difference between life and death. Rapid changes in technology and applications means that the underlying systems must continually adapt. This focus takes you under the covers of software systems, laying bare the layers and introducing you to concurrency issues, scalability, multiprocessor systems, distributed computing, and more.

Enrolment Requirements:

Enrolment in the Computer Science Specialist Program (ASSPE1689).

Completion Requirements:

Required Courses:

  1. CSC209H1
  2. 1.5 credits from the following: CSC343H1, CSC367H1, CSC369H1, CSC457H1/​ CSC458H1
  3. 1.0 credit from the following: CSC457H1/​ CSC458H1 (if not taken in list 2), CSC324H1, CSC368H1, CSC385H1, CSC443H1, CSC469H1, CSC488H1

Suggested Related Courses:

  1. CSC301H1, CSC309H1, CSC410H1
  2. Relevant courses offered at UTM: CSC347H5, CSC423H5, CSC427H5
  3. Relevant courses offered by Engineering: ECE454H1, ECE568H1

Focus in Computer Systems (Major) - ASFOC1689P

(3.0 credits)

Software systems are complex and interesting. Poorly done systems can be incredibly expensive: they can cost society billions of dollars and sometimes make the difference between life and death. Rapid changes in technology and applications means that the underlying systems must continually adapt. This focus takes you under the covers of software systems, laying bare the layers and introducing you to concurrency issues, scalability, multiprocessor systems, distributed computing, and more.

Enrolment Requirements:

Enrolment in the Computer Science Major Program (ASMAJ1689).

Completion Requirements:

Required Courses:

  1. CSC209H1
  2. 1.5 credits from the following: CSC343H1, CSC367H1, CSC369H1, CSC457H1/​ CSC458H1
  3. 1.0 credit from the following: CSC457H1/​ CSC458H1 (if not taken in list 2), CSC324H1, CSC368H1, CSC385H1, CSC443H1, CSC469H1, CSC488H1

Suggested Related Courses:

  1. CSC301H1, CSC309H1, CSC410H1
  2. Relevant courses offered at UTM: CSC347H5, CSC423H5, CSC427H5
  3. Relevant courses offered by Engineering: ECE454H1, ECE568H1

Focus in Computer Vision (Specialist) - ASFOC1689D

(3.5 credits)

Computer vision is the science and technology of machines that can see. As a science, the goal of computer vision is to understand the computational processes required for a machine to come to an understanding of the content of a set of images. The data here may be a single snapshot, a video sequence, or a set of images from different viewpoints or provided by medical scanners.

The computer vision focus introduces students to the study of vision from a computational point of view. That is, we attempt to clearly define computational problems for various steps of the overall process, and then show how these problems can be tackled with appropriate algorithms.

Students who wish to pursue computer vision should have an understanding of linear algebra and calculus of several variables. Moreover, they should be solid programmers and have a good understanding of data structures and algorithm design. These basic tools are required in order to first pose computational vision problems, and then develop and test algorithms for the solution to those problems.

Enrolment Requirements:

Enrolment in the Computer Science Specialist Program (ASSPE1689).

Completion Requirements:

Required Courses:

  1. MAT235Y1/​ MAT237Y1/​ MAT257Y1, CSC320H1, CSC336H1, CSC311H1, CSC420H1
  2. 0.5 credit from the following: CSC412H1, CSC417H1, CSC317H1/​ CSC418H1, CSC419H1, CSC2503H (Note: students must request permission to take a graduate course.)

Suggested Related Courses:

The following are examples of topics and courses that fit naturally with a study of computational vision. The list is meant to be illustrative of the range of cognate topics, but is not necessarily complete. The ordering is alphabetical and not indicative of importance. Note: there are prerequisites for many of these courses that we do not list here.

APM462H1, COG250Y1, CSC384H1, CSC485H1, CSC486H1, ECE216H1, PHL232H1, PHY385H1, PSL440Y1, PSY270H1, PSY280H1, STA257H1/​ STA261H1

Focus in Computer Vision (Major) - ASFOC1689L

(3.5 credits)

The Focus in Computer Vision (Major) has the same set of requirements as the Focus in Computer Vision (Specialist).

Computer vision is the science and technology of machines that can see. As a science, the goal of computer vision is to understand the computational processes required for a machine to come to an understanding of the content of a set of images. The data here may be a single snapshot, a video sequence, or a set of images from different viewpoints or provided by medical scanners.

The computer vision focus introduces students to the study of vision from a computational point of view. That is, we attempt to clearly define computational problems for various steps of the overall process, and then show how these problems can be tackled with appropriate algorithms.

Students who wish to pursue computer vision should have an understanding of linear algebra and calculus of several variables. Moreover, they should be solid programmers and have a good understanding of data structures and algorithm design. These basic tools are required in order to first pose computational vision problems, and then develop and test algorithms for the solution to those problems.

Enrolment Requirements:

Enrolment in the Computer Science Major Program (ASMAJ1689).

Completion Requirements:

Required Courses:

  1. MAT235Y1/​ MAT237Y1/​ MAT257Y1, CSC320H1, CSC336H1, CSC311H1, CSC420H1
  2. 0.5 credit from the following: CSC412H1, CSC417H1, CSC317H1/​ CSC418H1, CSC419H1, CSC2503H (Note: students must request permission to take a graduate course.)

Suggested Related Courses:

The following are examples of topics and courses that fit naturally with a study of computational vision. The list is meant to be illustrative of the range of cognate topics, but is not necessarily complete. The ordering is alphabetical and not indicative of importance. Note: there are prerequisites for many of these courses that we do not list here.

APM462H1, COG250Y1, CSC384H1, CSC485H1, CSC486H1, ECE216H1, PHL232H1, PHY385H1, PSL440Y1, PSY270H1, PSY280H1, STA257H1/​ STA261H1

Focus in Game Design (Specialist) - ASFOC1689G

(3.0 credits)

Video game design combines several disciplines within computer science, including software engineering, graphics, artificial intelligence, and human-computer interaction. It also incorporates elements of economics, psychology, music, and creative writing, requiring video game researchers to have a diverse, multidisciplinary set of skills.

Students who wish to pursue video game design should have an understanding of linear algebra (for computer graphics modelling), computer hardware and operating systems (for console architecture), data structures, and algorithm design. Students will gain a general knowledge of the more advanced topics listed in the courses below.

Enrolment Requirements:

Enrolment in the Computer Science Specialist Program (ASSPE1689).

Completion Requirements:

Focus in Game Design (Major) - ASFOC1689N

(3.0 credits)

The Focus in Game Design (Major) has the same set of requirements as the Focus in Game Design (Specialist).

Video game design combines several disciplines within computer science, including software engineering, graphics, artificial intelligence, and human-computer interaction. It also incorporates elements of economics, psychology, music, and creative writing, requiring video game researchers to have a diverse, multidisciplinary set of skills.

Students who wish to pursue video game design should have an understanding of linear algebra (for computer graphics modelling), computer hardware and operating systems (for console architecture), data structures, and algorithm design. Students will gain a general knowledge of the more advanced topics listed in the courses below.

Enrolment Requirements:

Enrolment in the Computer Science Major Program (ASMAJ1689).

Completion Requirements:

Focus in Human-Computer Interaction (Specialist) - ASFOC1689H

(3.5 credits)

Human-Computer Interaction (HCI) is the scientific study of the use of computers by people and the design discipline that informs the creation of systems and software that are useful, usable, and enjoyable for the people who use them. HCI students have exciting opportunities for research and graduate school; HCI professionals often have jobs with titles such as user interface architect, user interface specialist, interaction designer, or usability engineer.

Enrolment Requirements:

Enrolment in the Computer Science Specialist Program (ASSPE1689).

Completion Requirements:

Required Courses:

  1. CSC300H1, CSC301H1, CSC318H1, CSC428H1
  2. STA238H1/​ STA248H1/​ SOC204H1/​ PSY201H1
  3. PSY100H1/​ SOC100H1/​ MIE343H1/​ MIE344H1/​ MIE448H1 (These MIE courses address Human Factors or Ergonomics, offered by the Department of Mechanical and Industrial Engineering. Human factors is a discipline closely associated with human-computer interaction that approaches problems in slightly different ways.)
  4. CSC302H1/​ CSC309H1/​ CSC311H1/​ CSC316H1/​ CSC320H1/​ CSC384H1/​ CSC401H1/​ CSC404H1/​ CSC420H1/​ CSC454H1/​ CSC485H1

Suggested Related Courses:

If you have completed any of these suggested related courses, please contact cs.undergrad@utoronto.ca to determine whether it may be appropriate to count a related course towards Focus requirements.

Focus in Human-Computer Interaction (Major) - ASFOC1689Q

(3.5 credits)

Human-Computer Interaction (HCI) is the scientific study of the use of computers by people and the design discipline that informs the creation of systems and software that are useful, usable, and enjoyable for the people who use them. HCI students have exciting opportunities for research and graduate school; HCI professionals often have jobs with titles such as user interface architect, user interface specialist, interaction designer, or usability engineer.

Enrolment Requirements:

Enrolment in the Computer Science Major Program (ASMAJ1689).

Completion Requirements:

Required Courses:

  1. CSC300H1, CSC301H1, CSC318H1, CSC428H1
  2. STA238H1/​ STA248H1/​ SOC204H1/​ PSY201H1
  3. PSY100H1/​ SOC100H1/​ MIE343H1/​ MIE344H1/​ MIE448H1 (These MIE courses address Human Factors or Ergonomics, offered by the Department of Mechanical and Industrial Engineering. Human factors is a discipline closely associated with human-computer interaction that approaches problems in slightly different ways.)
  4. CSC302H1/​ CSC309H1/​ CSC311H1/​ CSC316H1/​ CSC320H1/​ CSC384H1/​ CSC401H1/​ CSC404H1/​ CSC420H1/​ CSC454H1/​ CSC485H1

Suggested Related Courses:

If you have completed any of these suggested related courses, please contact cs.undergrad@utoronto.ca to determine whether it may be appropriate to count a related course towards Focus requirements.

Focus in Scientific Computing (Specialist) - ASFOC1689A

(3.5 credits)

Scientific computing studies the world around us. Known and unknown quantities are related through certain rules, e.g. physical laws, formulating mathematical problems. These problems are solved by numerical methods implemented as algorithms and run on computers. The numerical methods are analyzed and their performance (e.g. accuracy, efficiency) studied. Problems, such as choosing the optimal shape for an airplane (to achieve, for example, minimal fuel consumption), finding the fair price for derivative products of the market, or regulating the amount of radiation in medical scans, can be modelled by mathematical expressions and solved by numerical techniques.

Students wishing to study scientific computing should have a strong background in mathematics—in particular calculus of several variables, linear algebra, and statistics—be fluent in programming, and have a good understanding of data structures and algorithm design.

Enrolment Requirements:

Enrolment in the Computer Science Specialist Program (ASSPE1689).

Completion Requirements:

Required Courses:

  1. MAT235Y1/​ MAT237Y1/​ MAT257Y1
  2. 1.5 credits from the following: CSC336H1, CSC436H1, CSC446H1, CSC456H1, CSC466H1
  3. 1.0 credit from the following: CSC317H1/​ CSC320H1/​ CSC417H1/​ CSC418H1/​ CSC419H1, CSC311H1, CSC343H1, CSC384H1, CSC457H1/​ CSC458H1

Suggested Related Courses:

It is also recommended that students in this focus consider taking a half-course or two from the basic sciences (such as physics, chemistry, biology), as these sciences are the source of many problems solved by numerical techniques.

Focus in Scientific Computing (Major) - ASFOC1689O

(3.5 credits)

The Focus in Scientific Computing (Major) has the same set of requirements as the Focus in Scientific Computing (Specialist).

Scientific computing studies the world around us. Known and unknown quantities are related through certain rules, e.g. physical laws, formulating mathematical problems. These problems are solved by numerical methods implemented as algorithms and run on computers. The numerical methods are analyzed and their performance (e.g. accuracy, efficiency) studied. Problems, such as choosing the optimal shape for an airplane (to achieve, for example, minimal fuel consumption), finding the fair price for derivative products of the market, or regulating the amount of radiation in medical scans, can be modelled by mathematical expressions and solved by numerical techniques.

Students wishing to study scientific computing should have a strong background in mathematics—in particular calculus of several variables, linear algebra, and statistics—be fluent in programming, and have a good understanding of data structures and algorithm design.

Enrolment Requirements:

Enrolment in the Computer Science Major Program (ASMAJ1689).

Completion Requirements:

Required Courses:

  1. MAT235Y1/​ MAT237Y1/​ MAT257Y1
  2. 1.5 credits from the following: CSC336H1, CSC436H1, CSC446H1, CSC456H1, CSC466H1
  3. 1.0 credit from the following: CSC317H1/​ CSC320H1/​ CSC417H1/​ CSC418H1/​ CSC419H1, CSC311H1, CSC343H1, CSC384H1, CSC457H1/​ CSC458H1

Suggested Related Courses:

It is also recommended that students in this focus consider taking a half-course or two from the basic sciences (such as physics, chemistry, biology), as these sciences are the source of many problems solved by numerical techniques.

Focus in Technology Leadership (Computer Science Specialist) - ASFOC1689T

The Technology Leadership Focus combines the development of applied Computer Science skills with an exploration of the core aspects of leadership within the context of the technology sector.

Students who complete the Technology Leadership Focus will be well-prepared to step into leadership roles and navigate the complexities of the tech industry.

To enrol in the Technology Leadership Focus, you must meet eligibility requirements, apply and be admitted, as detailed in "Enrolment Requirements."

Enrolment Requirements:

To be admitted to the Technology Leadership Focus, you must:

  • Have not yet completed CSC207H1 prior to beginning Focus requirements.
  • Complete an application and/or interview. Application information will be provided to all Computer Science Specialist and Major and Data Science Specialist program applicants during the Round 1 program admission period.
  • Students who complete the Technology Leadership Focus application and/or interview and are admitted to a Computer Science Specialist or Major or Data Science Specialist program will be considered for admission to the Focus.

Students admitted to the Focus will be enrolled in an industry-engaged version of CSC207H1 in the Fall term. This industry-engaged version of CSC207H1 is a required component of the Focus, and is a prerequisite to CSC308H1.

Completion Requirements:
  1. Industry-engaged version of CSC207H1: Software Design
  2. CSC308H1: Technology Leadership
  3. 0.5 credits from CSC301H1, CSC302H1, CSC309H1, CSC318H1, and CSC343H1
  4. 1.0 credits including:
    1. Up to 0.5 credits from CSC301H1, CSC302H1, CSC309H1, CSC318H1, and CSC343H1 (if not taken in list 3)
    2. Up to 1.0 credits from CSC404H1, CSC413H1, CSC417H1, CSC419H1, CSC428H1, CSC454H1, CSC485H1, CSC490H1, CSC491H1, CSC494H1, CSC495H1, CSC494Y1

Additionally, participating students will be invited to participate in co-curricular community-building and networking activities. These co-curricular activities will provide opportunities for students to meet leaders in the field and to reflect on their own leadership development.

Focus in Technology Leadership (Data Science Specialist) - ASFOC1687A

The Technology Leadership Focus combines the development of applied Computer Science skills with an exploration of the core aspects of leadership within the context of the technology sector.

Students who complete the Technology Leadership Focus will be well-prepared to step into leadership roles and navigate the complexities of the tech industry.

To enrol in the Technology Leadership Focus, you must meet eligibility requirements, apply and be admitted, as detailed in "Enrolment Requirements."

Enrolment Requirements:

To be admitted to the Technology Leadership Focus, you must:

  • Have not yet completed CSC207H1 prior to beginning Focus requirements.
  • Complete an application and/or interview. Application information will be provided to all Computer Science Specialist and Major and Data Science Specialist program applicants during the Round 1 program admission period.
  • Students who complete the Technology Leadership Focus application and/or interview and are admitted to a Computer Science Specialist or Major or Data Science Specialist program will be considered for admission to the Focus.

Students admitted to the Focus will be enrolled in an industry-engaged version of CSC207H1 in the Fall term. This industry-engaged version of CSC207H1 is a required component of the Focus, and is a prerequisite to CSC308H1.

Completion Requirements:
  1. Industry-engaged version of CSC207H1: Software Design
  2. CSC308H1: Technology Leadership
  3. 0.5 credits from CSC301H1, CSC302H1, CSC309H1, CSC318H1, and CSC343H1
  4. 1.0 credits including:
    1. Up to 0.5 credits from CSC301H1, CSC302H1, CSC309H1, CSC318H1, and CSC343H1 (if not taken in list 3)
    2. Up to 1.0 credits from CSC404H1, CSC413H1, CSC417H1, CSC419H1, CSC428H1, CSC454H1, CSC485H1, CSC490H1, CSC491H1, CSC494H1, CSC495H1, CSC494Y1

Additionally, participating students will be invited to participate in co-curricular community-building and networking activities. These co-curricular activities will provide opportunities for students to meet leaders in the field and to reflect on their own leadership development.

Focus in Technology Leadership (Computer Science Major) - ASFOC1689U

The Technology Leadership Focus combines the development of applied Computer Science skills with an exploration of the core aspects of leadership within the context of the technology sector.

Students who complete the Technology Leadership Focus will be well-prepared to step into leadership roles and navigate the complexities of the tech industry.

To enrol in the Technology Leadership Focus, you must meet eligibility requirements, apply and be admitted, as detailed in "Enrolment Requirements."

Enrolment Requirements:

To be admitted to the Technology Leadership Focus, you must:

  • Have not yet completed CSC207H1 prior to beginning Focus requirements.
  • Complete an application and/or interview. Application information will be provided to all Computer Science Specialist and Major and Data Science Specialist program applicants during the Round 1 program admission period.
  • Students who complete the Technology Leadership Focus application and/or interview and are admitted to a Computer Science Specialist or Major or Data Science Specialist program will be considered for admission to the Focus.

Students admitted to the Focus will be enrolled in an industry-engaged version of CSC207H1 in the Fall term. This industry-engaged version of CSC207H1 is a required component of the Focus, and is a prerequisite to CSC308H1.

Completion Requirements:
  1. Industry-engaged version of CSC207H1: Software Design
  2. CSC308H1: Technology Leadership
  3. 0.5 credit from CSC301H1, CSC302H1, CSC309H1, CSC318H1, and CSC343H1
  4. 1.0 credit including:
    1. Up to 0.5 credit from CSC301H1, CSC302H1, CSC309H1, CSC318H1, and CSC343H1 (if not taken in list 3)
    2. Up to 1.0 credit from CSC404H1, CSC413H1, CSC417H1, CSC419H1, CSC428H1, CSC454H1, CSC485H1, CSC490H1, CSC491H1, CSC494H1, CSC495H1, CSC494Y1

Additionally, participating students will be invited to participate in co-curricular community-building and networking activities. These co-curricular activities will provide opportunities for students to meet leaders in the field and to reflect on their own leadership development.

Focus in Theory of Computation (Specialist) - ASFOC1689I

(3.5 credits)

Why is it easy to sort a list of numbers, but hard to break Internet encryption schemes? Is finding a solution to a problem harder than checking that a solution is correct? Can we find good approximate solutions, even when the exact solutions seem out of reach? Theory of Computation studies the inherent complexity of fundamental algorithmic problems. On one hand, we develop ground-breaking efficient data structures and algorithms. On the other, we have yet to develop good algorithms for many problems despite decades of effort, and for these problems we strive to prove no time- or space-efficient algorithms will ever solve them. While the field has seen some successful impossibility results, there are still many problems (such as those underlying modern cryptography and security) for which we do not know either efficient algorithms or strong lower bounds!

This focus takes a rigorous, mathematical approach to computational problem-solving: students will gain a deep understanding of algorithm paradigms and measures of problem complexity, and develop the skills necessary to convey abstract ideas with precision and clarity. Many of our students go on to graduate studies and sophisticated algorithmic work in industry. This focus has natural ties with many branches of mathematics and is the foundation of many computer science fields. Consequently, our students often apply their theoretical knowledge to other fields of interest.

We advise you to take CSC240H1 and CSC265H1, the enriched versions of CSC236H1 and CSC263H1, because these courses are particularly well-aligned with the goals of this focus and will best prepare you for advanced theory courses. However, students who have already taken CSC236H1/​ CSC236H5/​ CSCB36H3 or CSC263H1/​ CSC263H5/​ CSCB63H3 are also welcome to enrol in the focus.

Enrolment Requirements:

Enrolment in the Computer Science Specialist Program (ASSPE1689).

Completion Requirements:
  1. CSC463H1
  2. 3.0 credits from the following:

Students who complete an independent study project ( CSC494H1/​ CSC495H1) under the supervision of a faculty member from the Theory group may request to substitute one of CSC494H1/​ CSC495H1 for one of the courses in list 2 above. This request must be made directly to the department's Undergraduate Office.

Students who complete a graduate Topics course in Theory may request to count it towards the completion of list 2 above. This request must be made directly to the department's Undergraduate Office.

Focus in Theory of Computation (Major) - ASFOC1689R

(3.5 credits)

Why is it easy to sort a list of numbers, but hard to break Internet encryption schemes? Is finding a solution to a problem harder than checking that a solution is correct? Can we find good approximate solutions, even when the exact solutions seem out of reach? Theory of Computation studies the inherent complexity of fundamental algorithmic problems. On one hand, we develop ground-breaking efficient data structures and algorithms. On the other, we have yet to develop good algorithms for many problems despite decades of effort, and for these problems we strive to prove no time- or space-efficient algorithms will ever solve them. While the field has seen some successful impossibility results, there are still many problems (such as those underlying modern cryptography and security) for which we do not know either efficient algorithms or strong lower bounds!

This focus takes a rigorous, mathematical approach to computational problem-solving: students will gain a deep understanding of algorithm paradigms and measures of problem complexity, and develop the skills necessary to convey abstract ideas with precision and clarity. Many of our students go on to graduate studies and sophisticated algorithmic work in industry. This focus has natural ties with many branches of mathematics and is the foundation of many computer science fields. Consequently, our students often apply their theoretical knowledge to other fields of interest.

We advise you to take CSC240H1 and CSC265H1, the enriched versions of CSC236H1 and CSC263H1, because these courses are particularly well-aligned with the goals of this focus and will best prepare you for advanced theory courses. However, students who have already taken CSC236H1/​ CSC236H5/​ CSCB36H3 or CSC263H1/​ CSC263H5/​ CSCB63H3 are also welcome to enrol in the focus.

Enrolment Requirements:

Enrolment in the Computer Science Major Program (ASMAJ1689).

Completion Requirements:
  1. CSC373H1, CSC463H1
  2. 2.5 credits from the following:

Students who complete an independent study project ( CSC494H1/​ CSC495H1) under the supervision of a faculty member from the Theory group may request to substitute one of CSC494H1/​ CSC495H1 for one of the courses in list 2 above. This request must be made directly to the department's Undergraduate Office.

Students who complete a graduate Topics course in Theory may request to count it towards the completion of list 2 above. This request must be made directly to the department's Undergraduate Office.

Focus in Web and Internet Technologies (Specialist) - ASFOC1689J

(3.0 credits)

The Web and Internet Technologies focus introduces students to the systems and algorithms that power today's large-scale web and Internet applications such as search engines, social networking applications, web data mining applications, and content distribution networks. The focus covers the architecture of the systems, algorithms and protocols, and machine learning techniques underlying these applications.

Students who wish to pursue the Focus in Web and Internet Technologies should have a solid understanding of statistics, be good programmers, and have a good understanding of data structures and algorithm design.

To get practical experience, students pursuing the web and Internet technologies focus are encouraged to do either a CSC494H1/​ CSC495H1: Computer Science Project course or a summer USRA/UTEA project in web and internet technologies.

Enrolment Requirements:

Enrolment in the Computer Science Specialist Program (ASSPE1689).

Completion Requirements:

Required courses:

  1. STA238H1/​ STA248H1 / STA261H1, CSC309H1, CSC311H1, CSC343H1, CSC457H1/​ CSC458H1
  2. 0.5 credit from the following list: CSC413H1, CSC443H1, CSC457H1 (if not taken in list 2), CSC458H1 (if not taken in list 2)

Suggested Related Courses:

  1. Courses offered at UTM: CSC347H5, CSC423H5, CSC427H5
  2. ECE568H1
  3. ENV281H1, ENV381H1

Focus in Web and Internet Technologies (Major) - ASFOC1689S

(3.0 credits)

The Web and Internet Technologies focus introduces students to the systems and algorithms that power today's large-scale web and Internet applications such as search engines, social networking applications, web data mining applications, and content distribution networks. The focus covers the architecture of the systems, algorithms and protocols, and machine learning techniques underlying these applications.

Students who wish to pursue the Focus in Web and Internet Technologies should have a solid understanding of statistics, be good programmers, and have a good understanding of data structures and algorithm design.

To get practical experience, students pursuing the web and Internet technologies focus are encouraged to do either a CSC494H1/​ CSC495H1: Computer Science Project course or a summer USRA/UTEA project in web and internet technologies.

Enrolment Requirements:

Enrolment in the Computer Science Major Program (ASMAJ1689).

Completion Requirements:
  1. CSC209H1
  2. 2.5 credits from STA238H1/​ STA248H1/​ STA261H1, CSC309H1, CSC311H1, CSC343H1, CSC413H1, CSC443H1, CSC457H1, CSC458H1

Suggested Related Courses:


Regarding Computer Science Courses

Courses Equivalent to CSC148H1 and CSC165H1/CSC240H1

Only grades from CSC148H1 and CSC165H1/ CSC240H1 (completed on the St. George campus) will be accepted for purposes of application to the Computer Science Specialist, Major and Minor and the Data Science Specialist. However, equivalent courses will be accepted for purposes of prerequisites for course enrolment.

 

Enrolment Notes

  1. Priority enrolment: Most CSC courses at the 200-level and above offer priority enrolment to students in Computer Science programs. Consult the Timetable for details.
  2. Limits to upper-level courses: Students not enrolled in Computer Science Major or Specialist programs are limited to a maximum of three 300+ level CSC/ECE half-credit courses (1.5 credits). Students enrolled in the Engineering Science Robotics Engineering, Electrical and Computer Engineering, or Machine Intelligence Majors may take a maximum of four 300+ level courses in the Department of Computer Science (CSC). Students enrolled in the Arts & Science Bioinformatics and Computational Biology Specialist may take a maximum of five 300+ level CSC/ECE half-credit courses (2.5 credits).
  3. Completion of CS Minor without program enrolment: Students who complete the requirements of CS Minor and are not enrolled in the CS Minor program may request to be enrolled in the CS Minor during their final term of studies. Please contact cs.undergrad@utoronto.ca for more information.
  4. Prerequisites: For Arts & Science students, no requests to waive prerequisites are considered in 200-level courses except for CSC240H1 and CSC265H1, where appropriate, and students without prerequisites will be removed from the course. For upper-level courses, students without prerequisites must obtain permission to remain enrolled in the course through the department's prerequisite waiver process. Please contact cs.undergrad@utoronto.ca for information about the prerequisite waiver process.
  5. Students with transfer credits: If you have transfer credits in Computer Science, or a similar subject, for courses done at another university or college, contact our Undergraduate Office (cs.undergrad@utoronto.ca) for advice on choosing courses. Also ask for advice even if you don’t have transfer credits yet but are considering degree study at the University of Toronto.
  6. First-Year Foundations Seminars: First-Year Foundations Seminars are open only to newly-admitted, Faculty of Arts & Science students (3.5 credits or less). They are full-credit or half-credit courses that focus on discussion of issues, questions and controversies surrounding a particular discipline (or several disciplines) in a small-group setting that encourages the development of critical thinking, writing skills, oral presentation and research methods. FYF seminars are as rigorous and demanding as any other first-year course and require in addition the acquisition of those skills expected of successful undergraduate students. With a maximum enrolment of 30 students each, they are an ideal way to have an enjoyable and challenging small-class experience in your first year. First-Year Foundations Seminars count as 0.5 or 1.0 of the 20.0 credits required for an HBA, HBSc or BCom and can be counted towards the breadth requirement.

 

Advice on choosing courses towards a Major in Computer Science

A Major program in any discipline may form part (but not the whole) of your degree requirements. The Major program in Computer Science is designed to include a solid grounding in the essentials of Computer Science, followed by options that let you explore one or a few topics more deeply. You will also realize what areas you have not studied and be ready to explore them if your interests change after completing the Major.

To give you freedom to choose your path through Computer Science, we have designed the Major to include a minimal set of required courses. There are some courses that we think you ought to consider carefully as you make those choices. CSC373H1 is fundamental to many more advanced Computer Science topics, where designing appropriate algorithms is central. CSC209H1 is a prerequisite to effective work in many application areas. Additionally, you may wish to select a Focus as part of your Major program.

A significant role of the Major is to allow you to integrate your studies in Computer Science and another discipline. For example, many Computer Science students are also interested in statistics, economics, physics or mathematics. In those cases, it makes sense to enrol in a Major in one discipline and either a Major or a Specialist in the other. If your interests are evenly balanced, the obvious choice is to do two Majors, and that is what we assume here. Explore some more suggestions from the department about combining Computer Science with other programs.

If you are doing two Majors in related disciplines, you might want to consult your college registrar’s office for advice on satisfying the degree requirements with overlapping Majors.

A Major program may not be enough to prepare you for graduate study in Computer Science, though a complete Specialist is not typically required. Consult the undergraduate office (cs.undergrad@utoronto.ca) for advice and referrals if you are a student in the Major considering graduate study in Computer Science.

 

Computer Science Courses

CSC104H1 - Computational Thinking

Hours: 24L/12T

Humans have solved problems for millennia on computing devices by representing data as diverse numbers, text, images, sound and genomes, and then transforming the data. A gentle introduction to designing programs (recipes) for systematically solving problems that crop up in diverse domains such as science, literature, and graphics. Social and intellectual issues raised by computing. Algorithms, hardware, software, operating systems, the limits of computation.

Note: you may not take this course concurrently with any Computer Science course, but you may take CSC108H1/ CSC148H1 after CSC104H1.

Exclusion: JCC250H1; Any CSC course except CSC196H1, CSC197H1, CSC199H1, AP, IB, CAPE or GCE Transfer Credits.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC108H1 - Introduction to Computer Programming

Hours: 36L

Programming in a language such as Python. Elementary data types, lists, maps. Program structure: control flow, functions, classes, objects, methods. Algorithms and problem solving. Searching, sorting, and complexity. Unit testing. Floating-point numbers and numerical computation. No prior programming experience required.

NOTE: You may take CSC148H1 after CSC108H1. You may not take CSC108H1 in the same term as, or after taking, any of CSC110Y1/ CSC111H1/ CSC120H1/ CSC148H1.

Exclusion: CSC110Y1, CSC111H1, CSC120H1, CSC121H1, CSC148H1, CSC108H5, CSC148H5, CSCA08H3, CSCA20H3, CSCA48H3
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC110Y1 - Foundations of Computer Science I

Hours: 72L/24T

An introduction to the field of computer science combining the tools and techniques of programming (using the Python programming language) with rigorous mathematical analysis and reasoning. Topics include: data representations; program control flow (conditionals, loops, exceptions, functions); mathematical logic and formal proof; representation of floating-point numbers and numerical computation; algorithms and running time analysis; software engineering principles (formal specification and design, testing and verification). Prior programming experience is not required to succeed in this course.

This course is restricted to students in the first year Computer Science admission stream, and is only offered in the Fall term. Other students planning to pursue studies in computer science should enrol in CSC108H1, CSC148H1, and CSC165H1/ CSC240H1.

Exclusion: CSC108H1, CSC148H1, CSC165H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC111H1 - Foundations of Computer Science II

Hours: 36L/24T

A continuation of CSC110Y1 to extend principles of programming and mathematical analysis to further topics in computer science.

Topics include: object-oriented programming (design principles, encapsulation, composition and inheritance); binary representation of numbers; recursion and mathematical induction; abstract data types and data structures (stacks, queues, linked lists, trees, graphs); the limitations of computation.

This course is restricted to students in the first year Computer Science admission stream, and is only offered in the Winter term. Other students planning to pursue studies in computer science should enrol in CSC108H1, CSC148H1, and CSC165H1/ CSC240H1.

Prerequisite: CSC110Y1 (70% or higher)
Exclusion: CSC108H1, CSC148H1, CSC165H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC148H1 - Introduction to Computer Science

Hours: 36L/24P

Abstract 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. This course assumes programming experience as provided by CSC108H1. Students who already have this background may consult the Computer Science Undergraduate Office for advice about skipping CSC108H1. Practical (P) sections consist of supervised work in the computing laboratory. These sections are offered when facilities are available, and attendance is required. Note: Students may request to move from CSC148H1 to CSC108H1 after the last day to add classes and before a deadline set by the course instructors, if space is available in CSC108H1 at the time of the request.

Prerequisite: CSC108H1/ (equivalent programming experience)
Exclusion: CSC111H1, CSC207H1, CSC148H5, CSC207H5, CSCA48H3, CSCB07H3
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC165H1 - Mathematical Expression and Reasoning for Computer Science

Hours: 36L/12T

Introduction to abstraction and rigour. Informal introduction to logical notation and reasoning. Understanding, using and developing precise expressions of mathematical ideas, including definitions and theorems. Structuring proofs to improve presentation and comprehension. General problem-solving techniques. Representation of floating-point numbers. Running time analysis of iterative programs. Formal definition of Big-Oh. Diagonalization, the Halting Problem, and some reductions. Unified approaches to programming and theoretical problems.

Corequisite: CSC108H1/ CSC120H1/(equivalent programming experience)
Exclusion: CSC111H1, CSC236H1, CSC240H1, MAT102H5, CSC236H5, CSCA67H3, MATA67H3, CSCB36H3
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC194H1 - Impactful Video Game Design

Previous Course Number: PMU199H1

Hours: 24S

An introduction to the fundamental design and development principles for digital games, and their potential for real-world impact and social betterment. Topics include game design history & social issues, narrative and gameplay elements, human-computer interaction and project management. Strong focus on how design elements affect player engagement and learning. This course requires students to create a game as part of the course, with practical assignments and a final project that reflect industry milestones. No programming is required for this course. Please note that not all CSC first-year seminars will be offered in a given year; please check the Timetable for current offerings. Restricted to first-year students. Not eligible for CR/NCR option.

Breadth Requirements: Creative and Cultural Representations (1)

CSC196H1 - Great Ideas in Computing

Hours: 36L

We will pursue the general (and very debatable) theme of GREAT IDEAS in COMPUTING (including some surprising algorithms). The ambitious goal is to try to identify some of the great ideas that have significantly influenced the field and have helped to make computing so pervasive. We will concentrate on mathematical, algorithmic and software ideas with the understanding that the importance and usefulness of these ideas depends upon (and often parallels) the remarkable ideas and progress in computing and communications hardware. As we will see, many of the great ideas were against the "prevailing opinion". The list of topics we shall discuss will depend to some degree on the background and interests of the class. Please note that not all CSC first-year seminars will be offered in a given year; please check the Timetable for current offerings. Restricted to first-year students. Not eligible for CR/NCR option.

Recommended Preparation: Some knowledge of probability theory
Breadth Requirements: Society and its Institutions (3)

CSC197H1 - Big Data and Privacy

Hours: 24S

The rapid advance of technology has brought remarkable changes to how we conduct our daily lives, from how we communicate, consume news and data, and purchase goods. As we increase our online activity, so too do we increase the amount of personal data that we're sharing, often without realizing it. The questions of exactly what data is being collected, who is collecting and accessing this data, and how this data is being used, have significant implications for both individuals and our larger social and political institutions. Organized by a wide variety of case studies drawn from current events, we'll study how personal data can be collected and tracked, how personal and social factors may influence our own decisions about whether and how much to share our data, and what broader political and legal tools are used to either protect or subvert individual privacy. Please note that not all CSC first-year seminars will be offered in a given year; please check the Timetable for current offerings. Restricted to first-year students. Not eligible for CR/NCR option.

Breadth Requirements: Society and its Institutions (3)

CSC199H1 - Intelligence, Artificial and Human

Hours: 36S

What is human intelligence? How close are we to replicating it? How productive/reductive is the brain-computer analogy? What ethical challenges are posed by AI on workers, society, and the environment? Can we put a hold on "progress"? Is Silicon Valley the seat of a new techno-religion? What can they teach us about today's research priorities? What insight (or inspiration) can we get from works of science fiction about the future of human-AI interaction? Through reading discussion, written assignment, and workshops, this seminar will present students with the opportunity to integrate their computer science interests with philosophy, history, and literature. There is an equivalent course offered by St. Michael’s College. Students may take one or the other but not both. Please note that not all CSC first-year seminars will be offered in a given year; please check the Timetable for current offerings. Restricted to first-year students. Not eligible for CR/NCR option.

Exclusion: SMC199H1 (Intelligence, Artificial and Human)
Breadth Requirements: Society and its Institutions (3)

CSC207H1 - Software Design

Hours: 24L/24T

An introduction to software design and development concepts, methods, and tools using a statically-typed object-oriented programming language such as Java. Topics from: version control, unit testing, refactoring, object-oriented design and development, design patterns, advanced IDE usage, regular expressions, and reflection.

Prerequisite: 60% or higher in CSC148H1/ 60% or higher in CSC111H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC209H1 - Software Tools and Systems Programming

Hours: 24L/12T

Software techniques in a Unix-style environment, using scripting languages and a machine-oriented programming language (typically C). What goes on in the operating 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: CSC207H1/ CSC207H5/ CSCB07H3
Exclusion: CSC372H1, CSC369H1, CSC469H1, CSC209H5, CSC369H5, CSC469H5, CSCB09H3, CSCC69H3
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC236H1 - Introduction to the Theory of Computation

Hours: 24L/12T

The application of logic and proof techniques to Computer Science. Mathematical induction; correctness proofs for iterative and recursive algorithms; recurrence equations and their solutions; introduction to automata and formal languages. This course assumes university-level experience with proof techniques and algorithmic complexity as provided by CSC165H1. Very strong students who already have this experience (e.g. successful completion of MAT157Y1) may consult the undergraduate office about proceeding directly into CSC236H1 or CSC240H1.

Prerequisite: (60% or higher in CSC148H1, 60% or higher in CSC165H1) / (60% or higher in CSC111H1)
Exclusion: CSC240H1, CSC236H5, CSCB36H3
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC240H1 - Enriched Introduction to the Theory of Computation

Hours: 24L/12T

The rigorous application of logic and proof techniques to Computer Science. Propositional and predicate logic; mathematical induction and other basic proof techniques; correctness proofs for iterative and recursive algorithms; recurrence equations and their solutions (including the Master Theorem); introduction to automata and formal languages. This course covers the same topics as CSC236H1, together with selected material from CSC165H1, but at a faster pace, in greater depth and with more rigour, and with more challenging assignments. Greater emphasis will be placed on proofs and theoretical analysis. Certain topics briefly mentioned in CSC165H1 or CSC236H1 may be covered in more detail in this course, and some additional topics may also be covered.

Prerequisite: CSC110Y1 (with a minimum mark of at least 70%) / CSC165H1 (with a minimum mark of at least 85%) / students with a strong mathematical background who have not completed CSC110Y1 or CSC165H1 may enrol in CSC240H1 as an enriched alternative to CSC165H1
Corequisite: Corequisite: CSC111H1/ CSC148H1; MAT137Y1/ MAT157Y1. MAT135H1 and MAT136H1 do not provide appropriate preparation for CSC240H1. Students with programming experience equivalent to CSC111H1/ CSC148H1 or who have completed math courses equivalent to MAT137Y1/ MAT157Y may apply for a corequisite waiver.
Exclusion: CSC236H1, CSC263H1/ CSC265H1, CSC236H5, CSC263H5, CSCB36H3, CSCB63H3
Breadth Requirements: The Physical and Mathematical Universes (5)

JCC250H1 - Computing for Science

Previous Course Number: CSC198H1

Hours: 24L/24T

Computational skills for the modern practice of basic and applied science. Applied computer programming with an emphasis on practical examples related to the simulation of matter, drawing from scientific disciplines including chemistry, biology, materials science, and physics. Studio format with a mixture of lecture, guided programming, and open scientific problem solving. Students will be exposed to Python numerical and data analysis libraries. No prior programming experience is required.

Prerequisite: CHM135H1/ CHM136H1/ CHM151Y1, 0.5 credit in MAT (excluding FYF courses)
Exclusion: Any CSC course except CSC104H1, CSC196H1, CSC197H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC258H1 - Computer Organization

Hours: 36L/36P

Computer structures, machine languages, instruction execution, addressing techniques, and digital representation of data. Computer system organization, memory storage devices, and microprogramming. Block diagram circuit realizations of memory, control and arithmetic functions. There are a number of laboratory periods in which students conduct experiments with digital logic circuits.

Prerequisite: (60% or higher in ( CSC148H1/ CSC148H5/ CSCA48H3), 60% or higher in ( CSC165H1/ CSC240H1/ MAT102H5/ MATA67H3/ CSCA67H3))/ 60% or higher in CSC111H1
Exclusion: CSC258H5, CSCB58H3
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC263H1 - Data Structures and Analysis

Hours: 24L/12T

Algorithm analysis: worst-case, average-case, and amortized complexity. Expected worst-case complexity, randomized quicksort and selection. Standard abstract data types, such as graphs, dictionaries, priority queues, and disjoint sets. A variety of data structures for implementing these abstract data types, such as balanced search trees, hashing, heaps, and disjoint forests. Design and comparison of data structures. Introduction to lower bounds.

Prerequisite: CSC236H1/ ​ CSC240H1/ CSC236H5/ CSCB36H3/ APS105H1/ APS106H1/ ESC180H1; STA237H1/ STA247H1/ ​ STA255H1/ ​ STA257H1/ STAB57H3/ STAB52H3/ ECE302H1/ STA286H1/ CHE223H1/ CME263H1/ MIE231H1/ MIE236H1/ MSE238H1/ STA286H1
Exclusion: CSC265H1, CSC263H5, CSCB63H3
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC265H1 - Enriched Data Structures and Analysis

Hours: 24L/12T

This course covers the same topics as CSC263H1, but at a faster pace, in greater depth and with more rigour, and with more challenging assignments. Greater emphasis will be placed on proofs, theoretical analysis, and creative problem-solving. Certain topics briefly mentioned in CSC263H1 may be covered in more detail in this course, and some additional topics may also be covered.

Prerequisite: CSC240H1 (with a minimum mark of 70%)/ ( CSC236H1 (with a minimum mark of 85%), MAT377H1/ STA237H1/ STA247H1/ STA255H1/ STA257H1). Notes: Students who have completed CSC240H1 must enrol in MAT377H1/ STA237H1/ STA247H1/ STA255H1/ STA257H1 concurrently with CSC265H1, if they have not already completed one of those courses. Students who have completed additional 200- or 300-level Mathematics courses may submit a prerequisite waiver request for permission to complete the statistics requirement as a co-requisite or to consider other courses as appropriate preparation for CSC265H1.
Exclusion: CSC263H1, CSC263H5, CSCB63H3
Breadth Requirements: The Physical and Mathematical Universes (5)

JSC270H1 - Data Science I

Hours: 24L/24P

This course is restricted to students in the Data Science Specialist program. Data exploration and preparation; data visualization and presentation; and computing with data will be introduced. Professional skills, such as oral and written communication, and ethical skills for data science will be introduced. Data science workflows will be integrated throughout the course. These topics will be explored through case studies and collaboration with researchers in other fields.

Prerequisite: STA257H1, CSC207H1
Corequisite: STA261H1, MAT237Y1/ MAT257Y1, CSC236H1/ CSC240H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC271H1 - Computational Principles and Methods for Data Science

Hours: 24L/12T

Computational tools and methods are a cornerstone of the data scientist's toolbox, useful in a variety of applications and disciplines. This course builds on introductory data science and computer programming skills to equip students with several of these tools and methods. Computational methods for gathering and storing data via web APIs or web scraping or other formats; data pre-processing methods useful in data science algorithms; using version control and other tools to implement reproducible data science workflows; using web tools to communicate data science results and build data science products; creating, distributing, and accessing open-source data science software libraries. This course assumes prerequisite experience in computer programming, but does not require any additional knowledge or prior experience with any of the tools or methods covered.

Prerequisite: CSC108H1/ CSC110Y1/ CSC148H1
Exclusion: CSC207H1/ ECO225H1
Recommended Preparation: EEB125H1/ GGR274H1/ ENG286H1/ STA130H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC299H1 - Research Opportunity Program

Credit course for supervised participation in faculty research project. Details at https://www.artsci.utoronto.ca/current/academics/research-opportunities…. Not eligible for CR/NCR option.

CSC299Y1 - Research Opportunity Program

Credit course for supervised participation in faculty research project. Details at https://www.artsci.utoronto.ca/current/academics/research-opportunities…. Not eligible for CR/NCR option.

CSC300H1 - Computers and Society

Hours: 24L/12T

This course offers a concise introduction to ethics in computing, distilled from the ethical and social discussions carried on by today's academic and popular commentators. This course covers a wide range of topics within this area including the philosophical framework for analyzing computer ethics; the impact of computer technology on security, privacy and intellectual property, digital divide, and gender and racial discrimination; the ethical tensions with Artificial Intelligence around future of work and humanity, the emerging role of online social media over voice, inclusion, and democracy; and the environmental consequences of computing.

Prerequisite: 0.5 credit in CSC
Exclusion: CSC300H5, CSCD03H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: Society and its Institutions (3)

CSC301H1 - Introduction to Software Engineering

Hours: 24L/12T

An introduction to agile development methods appropriate for medium-sized teams and rapidly-moving projects. Basic software development infrastructure; requirements elicitation and tracking; estimation and prioritization; teamwork skills; basic modeling; design patterns and refactoring; discussion of ethical issues, and professional responsibility.

Prerequisite: CSC209H1, CSC263H1/ CSC265H1
Exclusion: CSC301H5, CSCC01H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC302H1 - Engineering Large Software Systems

Hours: 24L/12T

An introduction to the theory and practice of large-scale software system design, development, and deployment. Project management; advanced UML; reverse engineering; requirements inspection; verification and validation; software architecture; performance modelling and analysis.

Prerequisite: CSC301H1
Exclusion: CSCD01H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC303H1 - Social and Information Networks

Hours: 24L/12T

A course on how networks underlie the social, technological, and natural worlds, with an emphasis on developing intuitions for broadly applicable concepts in network analysis. Topics include: introductions to graph theory, network concepts, and game theory; social networks; information networks; the aggregate behaviour of markets and crowds; network dynamics; information diffusion; popular concepts such as "six degrees of separation," the "friendship paradox," and the "wisdom of crowds."

Prerequisite: CSC263H1/ CSC265H1/ CSC263H5/ CSCB63H3, STA247H1/ STA255H1/ STA257H1/ ECO227Y1/ STA237H1/ STAB52H3/ STAB57H3, MAT223H1/ MAT240H1
Exclusion: CSCC46H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC304H1 - Algorithmic Game Theory and Mechanism Design

Hours: 24L/12P

A mathematical and computational introduction to game theory and mechanism design. Analysis of equilibria in games and computation of price of anarchy. Design and analysis mechanisms with monetary transfers (such as auctions). Design and analysis of mechanisms without monetary transfers (such as voting and matching). This course is intended for economics, mathematics, and computer science students.

Prerequisite: STA247H1/ STA255H1/ STA257H1/ STA237H1/ PSY201H1/ ECO227Y1, ( MAT135H1, MAT136H1)/ MAT137Y1/ MAT157Y1
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: MAT223H1, CSC373H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC308H1 - Technology Leadership

Hours: 36L

An exploration of the core aspects of leadership within the context of the software-oriented industry and academic research sectors. Topics include corporate mission, vision, and stakeholder roles in the technology sector; strategic planning; competitive technology market analysis; decision-making; a practical awareness of financial documents; contract negotiation; equity and financing in technology business growth; business-to-business (B2B) and business-to-consumer (B2C) software markets; principles of effective communication and influence in a corporate setting; professional development strategies for a software-oriented career; crafting an impactful elevator pitch; understanding of employment rights. The approach ensures that graduates are well-prepared to step into leadership roles and navigate the complexities of the tech industry and of academic research.

Students must be enrolled in the Focus in Technology Leadership to enrol in this course.

Prerequisite: CSC207H1
Breadth Requirements: Society and its Institutions (3)

CSC309H1 - Programming on the Web

Hours: 24L/12T

An introduction to software development on the web. Concepts underlying the development of programs that operate on the web; survey of technological alternatives; greater depth on some technologies. Operational concepts of the internet and the web, static client content, dynamic client content, dynamically served content, n-tiered architectures, web development processes, and security on the web.

Prerequisite: CSC209H1/ CSC209H5/ CSCB09H3/ ESC180H1/ ESC190H1/ CSC190H1/ (APS105H1, ECE244H1)
Exclusion: CSC309H5, CSCC09H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/ 400-level CSC/ ECE courses.
Recommended Preparation: CSC343H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC310H1 - Information Theory

Hours: 24L/12T

Measuring information. Entropy, mutual information and their meaning. Probabilistic source models and the source coding theorem. Data compression. Noisy channels and the channel coding theorem. Error correcting codes and their decoding. Applications to inference, learning, data structures and communication complexity.

Prerequisite: 60% or higher in CSC148H1/ 60% or higher in CSC111H1/ ESC190H1, CSC263H1/ CSC265H1/ ECE345H1/ ECE358H1/ MIE245H1, MAT223H1/ MAT240H1/ MAT185H1/ MAT188H1
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC311H1 - Introduction to Machine Learning

Previous Course Number: CSC411H1

Hours: 24L/12T

An introduction to methods for automated learning of relationships on the basis of empirical data. Classification and regression using nearest neighbour methods, decision trees, linear models, and neural networks. Clustering algorithms. Problems of overfitting and of assessing accuracy. Basics of reinforcement learning.

Prerequisite: CSC207H1/ APS105H1/ APS106H1/ ESC180H1/ CSC180H1; MAT235Y1/​ MAT237Y1/​ MAT257Y1/​ (minimum of 77% in MAT135H1 and MAT136H1)/ (minimum of 73% in MAT137Y1)/ (minimum of 67% in MAT157Y1)/ MAT291H1/ MAT294H1/ (minimum of 77% in MAT186H1, MAT187H1)/ (minimum of 73% in MAT194H1, MAT195H1)/ (minimum of 73% in ESC194H1, ESC195H1); MAT223H1/ MAT240H1/ MAT185H1/ MAT188H1; STA237H1/ STA247H1/ STA255H1/ STA257H1/ STA286H1/ CHE223H1/ CME263H1/ MIE231H1/ MIE236H1/ MSE238H1/ ECE286H1
Exclusion: CSC411H1, STA314H1, ECE421H1, CSC311H5, CSC411H5, CSCC11H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: MAT235Y1/ MAT237Y1/ MAT257Y1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC316H1 - Data Visualization: Foundations and Advanced Programming

Hours: 24L/12T

The amount and complexity of information produced in science, engineering, business, and everyday human activity is increasing at staggering rates. The goal of this course is to expose you to visual representation methods and techniques that increase the understanding of complex data. Good visualizations not only present a visual interpretation of data, but do so by improving comprehension, communication, and decision making.

In this course you will learn how the human visual system processes and perceives images, good design practices for visualization, methods for visualization of data from a variety of fields, and programming of interactive web-based visualizations, using front-end libraries (e.g., D3 or Vega).

Prerequisite: CSC207H1
Recommended Preparation: Javascript knowledge helpful, but not required
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC317H1 - Computer Graphics

Previous Course Number: CSC418H1

Hours: 24L/12T

Identification and characterization of the objects manipulated in computer graphics, the operations possible 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 modelling, transformations, illumination models, primary and secondary light effects; graphics packages and systems. Students, individually or in teams, implement graphical algorithms or entire graphics systems.

Prerequisite: MAT235Y1/ MAT237Y1/ MAT257Y1/ MAT291H1/ MAT292H1/ MAT294H1/ ( MAT232H5/ MAT233H5, MAT236H5)/ ( MATB41H3, MATB42H3); MAT223H1/ MAT240H1/ MAT223H5/ MATA22H3/ MAT185H1/ MAT188H1; CSC209H1/ CSC209H5/ CSCB09H3/ proficiency in C or C++/ APS105H1/ ESC180H1/ CSC180H1
Exclusion: CSC418H1, CSCD18H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: MAT244H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC318H1 - The Design of Interactive Computational Media

Hours: 24L/24T

User-centred design of interactive systems; methodologies, principles, and metaphors; task analysis. Interdisciplinary design; the role of graphic design, industrial design, and the behavioural sciences. Interactive hardware and software; concepts from computer graphics. Typography, layout, colour, sound, video, gesture, and usability enhancements. Classes of interactive graphical media; direct manipulation systems, extensible systems, rapid prototyping tools. Students work on projects in interdisciplinary teams.

Prerequisite: Any 0.5 credit in CSC/ ESC180H1/ ESC190H1/ APS105H1/ APS106H1
Exclusion: CSC318H5, CSCC10H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: CSC300H1 provides useful background for work in CSC318H1, so if you plan to take CSC300H1 then you should do it before CSC318H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC320H1 - Introduction to Visual Computing

Hours: 24L/12T

A first-principles introduction to the acquisition and computational processing of 2D images, aimed at students interested in computer vision, digital photography and computer graphics. The course serves as a stepping stone for tackling more advanced courses in those subjects and covers four broad themes: (1) mathematical and engineering foundations: introducing key concepts from geometry; multivariate calculus; linear algebra; image and signal processing; and human vision, (2) algorithms for low-level computer vision: image warping, morphing and stitching; image enhancement; image scissoring and inpainting; color image processing and display; face recognition; and 2D image matching, (3) implementing several such tools in Python, and (4) a first taste of vision and graphics research. Understanding how to turn algorithmic descriptions in research papers into working computer vision code—and how to evaluate its performance—will be key skills acquired in the course.

Prerequisite: CSC263H1/ CSC265H1/ ECE345H1/ ECE358H1/ MIE335H1, MAT223H1/ MAT240H1/ MAT185H1/ MAT188H1, ( MAT136H1 with a minimum mark of 77)/ ( MAT137Y1 with a minimum mark of 73)/ ( MAT157Y1 with a minimum mark of 67)/ MAT235Y1/ MAT237Y1/ MAT257Y1/ MAT291H1/ MAT292H1
Exclusion: CSC320H5. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: MAT235Y1/ MAT237Y1/ MAT257Y1/ ( MAT232H5, MAT236H5)/ ( MAT233H5, MAT236H5)/ ( MATB41H3, MATB42H3)
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC324H1 - Principles of Programming Languages

Hours: 24L/12T

Programming principles common in modern languages; details of commonly used paradigms. The structure and meaning of code. Scope, control flow, datatypes, and parameter passing. Two non-procedural, non-object-oriented programming paradigms: functional programming (illustrated by languages such as Lisp/Scheme, ML or Haskell) and logic programming (typically illustrated in Prolog).

Prerequisite: CSC263H1/ CSC265H1
Exclusion: CSC324H5, CSCC24H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC336H1 - Numerical Methods

Hours: 24L/12T

The study of computational methods for solving problems in linear algebra, non-linear equations, and approximation. The aim is to give students a basic understanding of both floating-point arithmetic and the implementation of algorithms used to solve numerical problems, as well as a familiarity with current numerical computing environments.

Prerequisite: CSC148H1/ CSC111H1; MAT133Y1(70%)/ ( MAT135H1, MAT136H1)/ MAT135Y1/ MAT137Y1/ MAT157Y1, MAT223H1/ MAT240H1
Exclusion: CSC338H5, CSCC37H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC343H1 - Introduction to Databases

Hours: 36L

Introduction to database management systems. The relational data model. Relational algebra. Querying and updating databases: the query language SQL. Application programming with SQL. Integrity constraints, normal forms, and database design. Elements of database system technology: query processing, transaction management.

Prerequisite: CSC111H1/ CSC165H1/ ​ CSC240H1/ ​( MAT135H1, MAT136H1)/ MAT135Y1/ MAT137Y1/ ​ MAT157Y1/ (MAT186H1, MAT187H1)/ ( MAT194H1, MAT195H1)/ (ESC194H1, ESC195H1); CSC207H1/ CSC207H5/ CSCB07H3/ ECE345H1/ ESC190H1
Exclusion: CSC343H5, CSCC43H3, MIE253H1. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC367H1 - Parallel Programming

Hours: 24L/12T

Introduction to aspects of parallel programming. Topics include computer instruction execution, instruction-level parallelism, memory system performance, task and data parallelism, parallel models (shared memory, message passing), synchronization, scalability and Amdahl's law, Flynn taxonomy, vector processing and parallel computing architectures.

Prerequisite: CSC258H1/ CSC258H5/ CSCB58H3; CSC209H1/ CSC209H5/ CSCB09H3
Exclusion: CSC367H5. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC368H1 - Computer Architecture

Hours: 24L/12T

An introduction to computer architecture and how to evaluate the performance of workloads running on processor architectures. Topics include statically and dynamically scheduling instructions in a processor pipeline; speculative execution through branch prediction; hardware cache organizations, their policies, and prefetching; multi-core processors, cache coherence, and synchronization primitives. Additional topics may include other relevant architectures, such as GPUs or domain specific accelerators.

Prerequisite: CSC209H1, CSC258H1
Exclusion: ECE552H1. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC369H1 - Operating Systems

Hours: 24L/12T

Principles of operating systems. The operating system as a control program and as a resource allocator. The concept of a process and concurrency problems: synchronization, mutual exclusion, deadlock. Additional topics include memory management, file systems, process scheduling, threads, and protection.

Prerequisite: CSC209H1/ CSC209H5/ CSCB09H3; CSC258H1/ CSC258H5/ CSCB58H3
Exclusion: CSC369H5, CSCC69H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

JSC370H1 - Data Science II

Hours: 24L/24P

This course is restricted to students in the Data Science Specialist program. Students will learn to identify and answer questions through the application of exploratory data analysis, data visualization, statistical methods or machine learning algorithms to complex data. Software development for data science and reproducible workflows. Communication of statistical information at various technical levels, ethical practice of data analysis and software development, and teamwork skills. Topics will be explored through case studies and collaboration with researchers in other fields.

Prerequisite: JSC270H1, STA261H1, MAT237Y1/ MAT257Y1, CSC263H1/ CSC265H1/ CSC263H5/ CSCB63H3, STA302H1, CSC343H1/ CSC343H5/ CSCC43H3
Corequisite: STA303H1/ STA305H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC373H1 - Algorithm Design, Analysis & Complexity

Hours: 36L/12T

Standard algorithm design techniques: divide-and-conquer, greedy strategies, dynamic programming, linear programming, randomization, network flows, approximation algorithms. Brief introduction to NP-completeness: polynomial time reductions, examples of various NP-complete problems, self-reducibility. Additional topics may include approximation and randomized algorithms. Students will be expected to show good design principles and adequate skills at reasoning about the correctness and complexity of algorithms.

Prerequisite: CSC263H1/ CSC265H1 / CSC263H5/ CSCB63H3
Exclusion: CSC375H1, CSC373H5, CSCC73H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC384H1 - Introduction to Artificial Intelligence

Hours: 24L/12T

Theories and algorithms that capture (or approximate) some of the core elements of computational intelligence. Topics include: search; logical representations and reasoning, classical automated planning, representing and reasoning with uncertainty, learning, decision making (planning) under uncertainty. Assignments provide practical experience, in both theory and programming, of the core topics.

Prerequisite: ( CSC263H1/​ CSC265H1/ CSC263H5/ CSCB63H3/ ECE345H1/ ECE358H1/ MIE245H1/ ( CSC148H1, enrolled in ASMAJ1446A, completed at least 9.0 credits), STA220H1/ STA237H1/ STA247H1/​ STA255H1/​ STA257H1/ STAB57H3/ STAB52H3/ ECE302H1/ STA286H1/ CHE223H1/ CME263H1/ MIE231H1/ MIE236H1/ MSE238H1/ ECE286H1/ PSY201H1)
Exclusion: CSC384H5, CSCD84H3, MIE369H1. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: CSC324H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC385H1 - Microprocessor Systems

Hours: 24L/24P

An examination of the issues unique to embedded computing and the Internet of Things (IoT). Software techniques for programming with sensors on lightweight, low-power processors. Topics include embedded processor architectures, interrupts, scheduling for real-time systems, power consumption, and connected device characteristics. Laboratory experiments provide hands-on experience with embedded systems. A refundable deposit of $90 will be charged for the use of discovery board in lab activities.

Prerequisite: CSC258H1, CSC209H1
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC396Y0 - Designing Systems for Real World Problems

This Summer Abroad special offering provides students with an opportunity to explore new environments, which improves their ability to see their own world with increased sensitivity and germinates new design ideas. In this course, students will identify a real problem in the world and work in groups on projects addressing this problem. Students will explore their problem space and the people within that space, identify needs, constraints, and requirements, and ultimately design solutions. Their designs will be iterated by gathering feedback and conducting usability testing on the early prototypes. The course projects will culminate with development of a technological solution that addresses the identified problem. Final project presentations will take place at the end of the course. This course can be counted as 0.5 credit at the 300-level for Computer Science program completion.

Prerequisite: Any CSC 0.5 credit, and balloting
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC398H0 - Research Excursions

An instructor-supervised group project in an off-campus setting. Details at https://www.artsci.utoronto.ca/current/academics/research-opportunities…. Not eligible for CR/NCR option.

CSC398Y0 - Research Excursions

An instructor-supervised group project in an off-campus setting. Details at https://www.artsci.utoronto.ca/current/academics/research-opportunities/research-excursions-program. Not eligible for CR/NCR option.

CSC399H1 - Research Opportunity Program

Credit course for supervised participation in faculty research project. Details at https://www.artsci.utoronto.ca/current/academics/research-opportunities…. Not eligible for CR/NCR option.

CSC399Y1 - Research Opportunity Program

Credit course for supervised participation in faculty research project. Details at https://www.artsci.utoronto.ca/current/academics/research-opportunities/research-opportunities-program. Not eligible for CR/NCR option.

Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.

CSC401H1 - Natural Language Computing

Hours: 24L/12T

Introduction to techniques involving natural language processing and speech in applications such as information retrieval, speech recognition and synthesis, machine translation, summarization, and dialogue. N-grams, corpus analysis, neural methods, and information theory. Python and other software.

Prerequisite: CSC207H1/ CSC209H1/ CSC207H5/ CSCB07H3/ CSC209H5/ CSCB09H3/ APS105H1/ APS106H1/ ESC180H1/ CSC180H1; STA237H1/ STA247H1/​ STA255H1/ ​ STA257H1/ STAB57H3/ STAB52H3/ ECE302H1/ STA286H1/ CHE223H1/ CME263H1/ MIE231H1/ MIE236H1/ MSE238H1/ ECE286H1
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: CSC311H1, MAT221H1/ MAT223H1/ MAT240H1 is strongly recommended
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC404H1 - Introduction to Video Game Design

Hours: 36L

Concepts and techniques for the design and development of electronic games. History, social issues, and story elements. The business of game development and game promotion. Software engineering, artificial intelligence, and graphics elements. Level and model design. Audio elements. Practical assignments leading to team implementation of a complete game.

Students must submit an application to the course describing relevant interests, experience, and skills and general academic history. Application questions are set and assessed by the instructor. Applications from St. George students enroled in a Computer Science program or the Data Science Specialist program will be considered first. Applications by students from other programs with appropriate prerequisites will be considered as space permits.

Please visit https://q.utoronto.ca/courses/221753/pages/400-level-course-balloting-and-applications for application deadlines and details. A decision on your application will be confirmed approximately 2-3 weeks after the application deadline, so students should enrol in an alternate course until the results of their application are confirmed.

Prerequisite: CSC301H1/ CSC317H1/ CSC318H1/ CSC384H1/ CSC417H1/ CSC418H1/ CSC419H1
Exclusion: CSC404H5. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: Creative and Cultural Representations (1)

CSC410H1 - Software Testing and Verification

Hours: 24L/24T

Concepts and state-of-the-art techniques in quality assessment for software engineering; quality attributes; formal specifications and their analysis; testing, verification, and validation.

Prerequisite: CSC207H1, CSC236H1/ CSC240H1
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: CSC330H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC412H1 - Probabilistic Learning and Reasoning

Hours: 24L/12T

An introduction to probability as a means of representing and reasoning with uncertain knowledge. Qualitative and quantitative specification of probability distributions using probabilistic graphical models. Algorithms for inference and probabilistic reasoning with graphical models. Statistical approaches and algorithms for learning probability models from empirical data. Applications of these models in artificial intelligence and machine learning.

Prerequisite: CSC311H1/ CSC411H1/ STA314H1/ ECE421H1/ ROB313H1/ CSCC11H3/ CSC311H5
Exclusion: STA414H1, STAD68H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC413H1 - Neural Networks and Deep Learning

Previous Course Number: CSC321H1/CSC421H1

Hours: 24L/12T

An introduction to neural networks and deep learning. Backpropagation and automatic differentiation. Architectures: convolutional networks and recurrent neural networks. Methods for improving optimization and generalization. Neural networks for unsupervised and reinforcement learning.

Prerequisite: CSC311H1/​ CSC311H5/ CSCC11H3/ CSC411H1/ STA314H1/ ECE421H1/ ROB313H1/; MAT235Y1/​ MAT237Y1/​ MAT257Y1/ MAT257Y5/ MAT291H1/ MAT294H1/ AER210H1/ ( MAT232H5, MAT236H5)/ ( MAT233H5, MAT236H5)/ ( MATB41H3, MATB42H3); MAT223H1/ MAT240H1/ MAT185H1/ MAT188H1/ MAT223H5/ MATA23H3
Exclusion: CSC321H1/ CSC421H1, CSC321H5, CSC413H5. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC417H1 - Physics-Based Animation

Hours: 24L/12T

This course is designed to introduce students to the field of physics-based animation by exposing them to the underlying mathematical and algorithmic techniques required to understand and develop efficient numerical simulations of physical phenomena such as rigid bodies, deformable bodies and fluids. Topics covered include rigid body simulation, elasticity simulation, cloth simulation, collision detection and resolution and fluid simulation. Along the way, we will explore the underlying mathematics of ordinary differential equations, discrete time integration, finite element methods and more.

Students should have a strong background in Linear Algebra and Multivariate Calculus.

Prerequisite: MAT235Y1/ MAT237Y1/ MAT257Y1/ MAT291H1/ MAT294H1; MAT223H1/​ MAT240H1/ MAT185H1/ MAT188H1; CSC209H1/ ​proficiency in C or C++/ APS105H1/ ESC180H1/ CSC180H1
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC419H1 - Geometry Processing

Hours: 24L/12T

Extending traditional signal processing, geometry processing interprets three-dimensional curves and surfaces as signals. Just as audio and image signal data can be filtered, denoised and decomposed spectrally, so can the geometry of a three-dimensional curve or surface. The course covers algorithms and mathematics behind fundamental operations for interpreting and manipulating geometric data. These essential tools enable: geometric modeling for computer aided design, life-like animations for computer graphics, reliable physical simulations, and robust scene representations for computer vision. Topics include: discrete curves and surfaces, curvature computation, surface reconstruction from point clouds, surface smoothing and denoising, parameterization, symmetry detection, and animation.

Prerequisite: MAT235Y1/ MAT237Y1/ MAT257Y1/ MAT291H1/ MAT294H1; MAT223H1/ MAT240H1/ MAT185H1/ MAT188H1; CSC209H1/ proficiency in C or C++/ APS105H1/ ESC180H1/ CSC180H1
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: CSC317H1/ CSC418H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC420H1 - Introduction to Image Understanding

Hours: 24L/12P

Introduction to basic concepts in computer vision. Extraction of image features at multiple scales. Robust estimation of model parameters. Multiview geometry and reconstruction. Image motion estimation and tracking. Object recognition. Topics in scene understanding as time permits.

Prerequisite: For 2024-25: CSC263H1/ CSC265H1/ ECE345H1/ ECE358H1/ MIE335H1; ( MAT135H1, MAT136H1)/ MAT137Y1/ MAT157Y1/ (MAT186H1, MAT187H1)/ ( MAT194H1, MAT195H1)/ (ESC194H1, ESC195H1); MAT223H1/ MAT240H1/ MAT185H1/ MAT188H1
Beginning Fall 2025: CSC263H1/ CSC265H1/ ECE345H1/ ECE358H1/ MIE335H1; CSC311H1; CSC320H1. We encourage students interested in taking CSC420H1 in 2025-26 or beyond to include CSC263H1, CSC311H1 and CSC320H1 in their enrolment plans for 2024-25.

Exclusion: CSC420H5. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: CSC320H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC428H1 - Human-Computer Interaction

Hours: 24L/12T

Understanding human behaviour as it applies to user interfaces: work activity analysis, observational techniques, questionnaire administration, and unobtrusive measures. Operating parameters of the human cognitive system, task analysis and cognitive modelling techniques and their application to designing interfaces. Interface representations and prototyping tools. Cognitive walkthroughs, usability studies and verbal protocol analysis. Case studies of specific user interfaces.

Prerequisite: CSC318H1; STA237H1/ STA247H1/ ​ STA255H1/ ​ STA257H1/ ECE302H1/ STA286H1/ CHE223H1/ CME263H1/ MIE231H1/ MIE236H1/ MSE238H1/ ECE286H1; CSC207H1/ APS105H1/ ESC180H1/ CSC180H1
Exclusion: CSC428H5. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: A course in PSY; ( STA248H1/ STA250H1/ STA261H1)/( PSY201H1, PSY202H1)/( SOC202H1, SOC300H1)
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC436H1 - Numerical Algorithms

Hours: 24L/12T

Numerical algorithms for the algebraic eigenvalue problem, approximation, integration, and the solution of ordinary differential equations. Emphasis is on the convergence, stability, and efficiency properties of the algorithms.

Prerequisite: CSC336H1/ CSC350H1
Exclusion: CSC351H1, CSCD37H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: MAT235Y1/ MAT237Y1/ MAT257Y1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC438H1 - Computability and Logic

Hours: 24L/12T

Computable functions, Church's thesis, unsolvable problems, recursively enumerable sets. Predicate calculus, including the completeness, compactness, and Lowenheim-Skolem theorems. Formal theories and the Gödel Incompleteness Theorem. Ordinarily offered in years alternating with CSC448H1.

Prerequisite: ( CSC363H1/ CSC463H1)/ CSC365H1/ CSC373H1/ CSC375H1/ MAT247H1
Exclusion: MAT309H1; PHL348H1. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC443H1 - Database System Technology

Hours: 24L/12T

Implementation 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: CSC343H1, CSC369H1, CSC373H1/ CSC375H1
Exclusion: CSCD43H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC446H1 - Computational Methods for Partial Differential Equations

Hours: 24L/12T

Finite Difference and Finite Element methods for boundary value problems including 2-point boundary value problems and 2-dimensional problems. Convergence of methods. Efficiency of the solution of linear systems. Finite difference methods for initial value problems. Consistency, stability and convergence. Method of lines. Special topics of interest among domain decomposition, multigrid, FFT solvers. Ordinarily offered in years alternating with CSC466H1.

Prerequisite: CSC351H1/ ( CSC336H1 (75%))/ equivalent mathematical background; MAT237Y1/ MAT257Y1; APM346H1/ MAT351Y1/ ( MAT244H1/ MAT267H1 and exposure to PDEs)
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC448H1 - Formal Languages and Automata

Hours: 24L/12T

Regular, deterministic, context free, context sensitive, and recursively enumerable languages via generative grammars and corresponding automata (finite state machines, push down machines, and Turing machines). Topics include complexity bounds for recognition, language decision problems and operations on languages. Ordinarily offered in years alternating with CSC438H1.

Prerequisite: CSC236H1/ CSC240H1, CSC263H1/ CSC265H1
Exclusion: CSC448H5. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: CSC373H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC454H1 - The Business of Software

Hours: 24L/12T

Designed and delivered by industry experts in successful commercialization of tech startups, this course focuses on the development of a viable business and startup in partnership and mentorship from industry businesses and entrepreneurs.

The course is designed to be taken by students from any faculty or discipline. It focuses on helping them understand and develop business sense, introduce modern customer development, and teach skills in product development, financial management, marketing, and leadership. Alongside the software engineering abilities of CSC491H1 teammates, skills learned in CSC454H1 will aid the development of a viable startup.

For more details visit our website at https://www.dcsil.ca/student-courses.

Not eligible for CR/NCR option.

Students must submit an application to the course describing relevant interests, experience, and skills and general academic history. On this application, you will indicate whether you wish to be considered for CSC454H1 only, or CSC454H1 and CSC491H1. Application questions are set and assessed by the instructor. Applications from St. George students enrolled in a Computer Science program or the Data Science Specialist program will be considered first. Applications by students from other programs with appropriate prerequisites will be considered as space permits.

Please visit https://q.utoronto.ca/courses/221753/pages/400-level-course-balloting-and-applications for application deadlines and details. A decision on your application will be confirmed approximately 2-3 weeks after the application deadline, so students should enrol in an alternate course until the results of their application are confirmed.

Prerequisite: 2.5 credits at the 300-level or higher
Exclusion: CSCD54H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC456H1 - High-Performance Scientific Computing

Hours: 24L/12T

Computationally-intensive applications in science and engineering are implemented on the fastest computers available, today composed of many processors operating in parallel. Parallel computer architectures; implementation of numerical algorithms on parallel architectures; performance evaluation. Topics from: matrix-vector product, solution of linear systems, sparse matrices, iterative methods, domain decomposition, Fourier solvers. For students in computer science, applied mathematics, science, engineering. Ordinarily offered in years alternating with CSC446H1.

Prerequisite: CSC436H1/ ( CSC336H1 (75%))/ equivalent mathematical background; CSC209H1/ proficiency in C, C++, or Fortran
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC457H1 - Principles of Computer Networks

Hours: 24L/12T

The course covers fundamental principles of computer networks, as well as currently used network architectures and protocols. Its emphasis is 1) to explain why reliable data transfer, addressing, routing and congestion control are the fundamental concepts, 2) to explore the design principles behind algorithms/protocols for reliable data transfer, addressing, routing and congestion control and 3) to use current protocols such as TCP/IP, ARQ, Ethernet, CSMA/CD, DNS and Internet routing protocols as examples of concrete implementations/designs of these protocols. It will highlight the trade-offs (and approaches to navigate these trade-offs) in the design of computer network protocols.

Prerequisite: CSC373H1/ CSC373H5/ CSCC73H3, STA247H1/ STA255H1/ STA257H1/ STA237H1
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: CSC309H1, CSC369H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC458H1 - Computer Networking Systems

Hours: 24L/12T

Computer networks with an emphasis on network systems, network programming, and applications. Networking basics: layering, routing, congestion control, and the global Internet. Network systems design and programming: Internet design, socket programming, and packet switching system fundamentals. Additional topics include network security, multimedia, software-defined networking, peer-to-peer networking, and online social networks.

Prerequisite: CSC209H1, CSC258H1, CSC263H1/ CSC265H1, STA247H1/ STA255H1/ STA257H1/ STA237H1/ ECO227Y1
Exclusion: CSC458H5, CSCD58H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC463H1 - Computational Complexity and Computability

Hours: 24L/12T

Introduction to the theory of computability: Turing machines and other models of computation, Church’s thesis, computable and noncomputable functions, recursive and recursively enumerable sets, many-one reductions. Introduction to complexity theory: P, NP, polynomial time reducibility, NP-completeness, self-reducibility, space complexity (L, NL, PSPACE and completeness for those classes), hierarchy theorems, and provably intractable problems.

Prerequisite: CSC236H1/ CSC240H1/ CSC236H5/ CSCB36H3
Exclusion: CSC363H1/ CSC363H5/ CSCC63H3/ CSC365H1. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC465H1 - Formal Methods in Software Design

Hours: 24L

Using mathematics to write error-free programs. Proving each refinement; identifying errors as they are made. Program development to meet specifications; modifications that preserve correctness. Useful for all programming; essential for programs that lives depend on. Basic logic, formal specifications, refinement. Conditional, sequential, parallel, interaction, probabilistic programming, and functional programming.

Prerequisite: CSC236H1/ CSC240H1/ MAT309H1/ CSC236H5/ CSCB36H3
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC466H1 - Numerical Methods for Optimization Problems

Hours: 36L

Numerical methods for unconstrained optimization problems, in particular line search methods and trust region methods. Topics include steepest descent, Newton's method, quasi-Newton methods, conjugate gradient methods and techniques for large problems. This course will normally be offered every other year.

Prerequisite: CSC336H1, MAT223H1/ MAT240H1, MAT235Y1/ MAT237Y1/ MAT257Y1
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC469H1 - Operating Systems Design and Implementation

Hours: 24L/12T

An in-depth exploration of the major components of operating systems with an emphasis on the techniques, algorithms, and structures used to implement these components in modern systems. Project-based study of process management, scheduling, memory management, file systems, and networking is used to build insight into the intricacies of a large concurrent system.

Prerequisite: CSC369H1
Exclusion: CSC469H5. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

JSC470H1 - Data Science III

Hours: 24L/24P

This course is restricted to students in the Data Science Specialist program. Research topics and applications of data science methods will be explored through case studies and collaboration with researchers in other fields. Data analysis, visualization, and communication of statistical information at various technical levels, ethical practice of data analysis and software development, and teamwork skills.

Prerequisite: JSC370H1, STA314H1/ CSC411H1/ CSC311H1, STA303H1/ STA305H1
Exclusion: STA490Y1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC473H1 - Advanced Algorithm Design

Hours: 24L/12T

Advanced algorithm design techniques, with emphasis on the role that geometry, approximation, randomization, and parallelism play in modern algorithms. Examples will be drawn from linear programming and basics of continuous optimization; randomized algorithms for string matching, graph problems, and number theory problems; streaming algorithms and parallel algorithms in the Map-Reduce model.

Prerequisite: CSC373H1, MAT223H1/ MAT240H1
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC485H1 - Computational Linguistics

Hours: 36L

Computational linguistics and the processing of language by computer. Topics include: context-free grammars; chart parsing, statistical parsing; semantics and semantic interpretation; ambiguity resolution techniques; reference resolution. Emphasis on statistical learning methods for lexical, syntactic, and semantic knowledge.

Prerequisite: CSC209H1/ APS105H1/ APS106H1/ ESC180H1/ CSC180H1; STA237H1/ STA247H1/​ STA255H1/ ​ STA257H1/ ECE302H1/ STA286H1/ CHE223H1/ CME263H1/ MIE231H1/ MIE236H1/ MSE238H1/ ECE286H1
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: CSC311H1, CSC324H1/ CSC384H1
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC486H1 - Knowledge Representation and Reasoning

Hours: 24L/12T

Representing knowledge symbolically in a form suitable for automated reasoning, and associated reasoning methods. Topics from: first-order logic, entailment, the resolution method, Horn clauses, procedural representations, production systems, description logics, inheritance networks, defaults and probabilities, tractable reasoning, abductive explanation, the representation of action, planning.

Prerequisite: CSC384H1/ CSC384H5/ ROB311H1
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC488H1 - Compilers and Interpreters

Hours: 24L/12T

The structure of compilers, Programming language processing. Scanning based on regular expressions, Parsing using context free grammars, Semantic analysis (type and usage checking), Compiler dictionaries and tables. Runtime organization and storage allocation, code generation, optimization. Use of modern compiler building tools. Course project involves building a complete compiler.

Prerequisite: CSC258H1/ CSC258H5/ CSCB58H3, CSC324H1/ CSC324H5/ CSCC24H3, CSC263H1/ CSC265H1/ CSC263H5/ CSCB63H3
Exclusion: CSC488H5, CSCD70H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC490H1 - Capstone Design Project

Hours: 36L

This half-course gives students experience solving a substantial problem that may span several areas of Computer Science. Students will define the scope of the problem, develop a solution plan, produce a working implementation, and present their work using written, oral, and (if suitable) video reports. Class time will focus on the project, but may include some lectures. The class will be small and highly interactive. Project themes change each year. Contact the Computer Science Undergraduate Office for information about this year’s topic themes, required preparation, and course enrolment procedures. Not eligible for CR/NCR option. A refundable deposit of $90 will be charged for the use of Arduino kit in lab activities.

Students must submit an application to the course describing relevant interests, experience, and skills and general academic history. Application questions are set and assessed by the instructor. Applications from St. George students enrolled in a Computer Science program or the Data Science Specialist program will be considered first. Applications by students from other programs with appropriate prerequisites will be considered as space permits.

Please visit https://q.utoronto.ca/courses/221753/pages/400-level-course-balloting-and-applications for application deadlines and details. A decision on your application will be confirmed approximately 2-3 weeks after the application deadline, so students should enrol in an alternate course until the results of their application are confirmed.

Prerequisite: 1.5 credits of 300+ level CSC courses.
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC491H1 - Capstone Design Project

Hours: 36L

This course is designed and delivered by industry experts from the Software/Tech fields. Students will work with teammates from CSC454H1 to develop a marketable startup on a selected theme.

The class will be small and highly interactive. You will work to develop working software industry best practices. You are expected to have experience writing software and be able to learn on the go.

For more details, visit our website at https://www.dcsil.ca/student-courses. Not eligible for CR/NCR option.

Students submit a single application for CSC491H1 and CSC454H1, describing relevant interests, experience, and skills and general academic history. Application questions are set and assessed by the instructor. Applications from St. George students enrolled in a Computer Science program or the Data Science Specialist program will be considered first. Applications by students from other programs with appropriate prerequisites will be considered as space permits.

Please visit https://q.utoronto.ca/courses/221753/pages/400-level-course-balloting-and-applications for application deadlines and details. A decision on your application will be confirmed approximately 2-3 weeks after the application deadline, so students should enrol in an alternate course until the results of their application are confirmed.

Corequisite: CSC454H1/ CSC2527H
Exclusion: CSCD90H3. NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Recommended Preparation: 2.0 CSC credits at the 300+ level, 0.5 additional credits at the 300+ level
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC494H1 - Computer Science Project

This half-course involves a significant project in any area of Computer Science. The project may be undertaken individually or in small groups. The course is offered by arrangement with a Computer Science faculty member, and is restricted to students in an Arts & Science Computer Science program or Data Science Specialist program. Not eligible for CR/NCR option.

Students must submit an application to the course. Applications request information about students’ planned project and project supervisor. Applications for each term are due no later than the end of the first week of classes in that term.

Please visit https://q.utoronto.ca/courses/221753/pages/400-level-course-balloting-and-applications for application deadlines and details. A decision on your application will be confirmed approximately 2-3 weeks after the application deadline, so students should enrol in an alternate course until the results of their application are confirmed.

Prerequisite: 1.5 credits of 300+ level CSC courses.
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC494Y1 - Computer Science Project

This course involves a significant multidisciplinary project in an area of Computer Science completed in partnership with another academic unit. Not eligible for CR/NCR option.

Students must submit an application to the course. Application requirements and timelines are set and assessed by the instructor or partnering program. Please visit https://q.utoronto.ca/courses/221753/pages/400-level-course-balloting-and-applications for application deadlines and details.

Prerequisite: 1.5 credits of 300+ level CSC courses.
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

CSC495H1 - Computer Science Project

This half-course involves a significant project in any area of Computer Science. The project may be undertaken individually or in small groups. The course is offered by arrangement with a Computer Science faculty member, and is restricted to students in an Arts & Science Computer Science program or Data Science Specialist program. Not eligible for CR/NCR option.

Students must submit an application to the course. Applications request information about students’ planned project and project supervisor. Applications for each term are due no later than the end of the first week of classes in that term.

Please visit https://q.utoronto.ca/courses/221753/pages/400-level-course-balloting-and-applications for application deadlines and details. A decision on your application will be confirmed approximately 2-3 weeks after the application deadline, so students should enrol in an alternate course until the results of their application are confirmed.

Prerequisite: CSC494H1. 1.5 credits of 300+ level CSC courses.
Exclusion: NOTE: Students not enrolled in the Computer Science Major or Specialist program at A&S, UTM, or UTSC, or the Data Science Specialist at A&S, are limited to a maximum of 1.5 credits in 300-/400-level CSC/ECE courses.
Breadth Requirements: The Physical and Mathematical Universes (5)

Printer-friendly Version