Computer Science


On this page: Introduction | Programs |
See also: Faculty Members | Course Descriptions | Course Winter Timetable |

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, 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 much of the intelligent behaviour of people 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.

Many of our programs combine another field with computer science, such as Information Systems, Economics, Mathematics, Physics or Statistics. the programs in Software Engineering and Human-Computer Interaction focus on developing areas of computing.

Some Computer Science courses are offered in the evening, to allow part-time students to pursue our programs. Introductory courses and some higher-level courses are offered in the summer.

the Professional Experience Year Program (PEY) offers students the opportunity to gain valuable work experience in industry, over a twelve to sixteen-month period. It, and the Co-Op Japan Program, are available to eligible, full time students pursuing their first degree. Please refer to Page 20 for more information.

Associate Chair - Undergraduate Studies: Professor J.N. Clarke
Undergraduate Office: Bahen Building, 40 St. George Street, ROOM 4252/4254, M5S 2E4 (416-978-6360, email: ug@cs.utoronto.ca)

Web site: www.cs.utoronto.ca

Computer Science Programs

Enrolment is restricted in all CSC programs. You may request a CSC subject POSt in April-June or July-August depending on when you have completed the required 100-level courses listed below and completed your fourth full-course equivalent. Consult the 2009-2010 Registration Handbook & Timetable for details of how to apply. Admission to restricted programs depends on performance in the required 100-level courses (listed in program descriptions) and on cumulative GPA.

Tuition fees for students enrolled in Computer Science Major or Specialist programs are higher than for other Arts and Science programs.

Course Categories

A number of Computer Science programs are described based on the following course categories: English Writing Requirement, Basic Courses, Core Courses, and Additional Courses. Also, all CSC courses and a few related ECE/MAT/STA courses are further grouped into subject areas and sub-areas.

English Writing Requirement

Students in any Specialist program sponsored by the Department of Computer Science (including Combined Specialist programs) must complete one full credit requiring substantial written work in English. the courses accepted for this purpose are listed below. Courses not on this list do not satisfy the requirement without departmental approval. Students in the Major program in Computer Science must take one-half credit from the same list. Departments offering these courses have agreed to accept our students, but will not give you special preference in enrolment. You must satisfy the prerequisite and other requirements listed in this Calendar. Make sure to check that the course you want to take is offered in the year you want it, and to follow the enrolment requirements stated in the Arts and Science Registration Handbook and Timetable. A Transfer credit, whether it is for a specific course on the list below (e.g., “RLG100Y1”) or is a generic credit (e.g., “RLG 1**Y1”), must be approved by the Department in order to count towards the writing requirement. Please contact the Department for approval. In order to accept such a course, we must assess the role of written work in the course, and determine that it was taught in English, at an English-speaking university.

ANT204Y1; CLA160H1, ANY 200- or 300-level except CLA201H1; CSC290H1, CSC300H1; ENG – ANY 100- or 200-level; GER235Y1, GER251Y1; HIS – ANY 100- or 200-level; HPS – all courses; HUM199H1/Y1; INI115Y1, INI202Y1, INI203Y1, INI204Y1, INI224Y1, INI225Y1, INI235Y1, INI300Y1; ITA240Y1, ITA245Y1, ITA340Y1; JAL328H1; JEF100Y1; NEW150Y1, NEW160Y1; NMC101Y1, NMC185H1, higher-level courses in the “History” grouping; PHL100Y1, ANY 200- or 300-level PHL except PHL245H1, PHL246H1, PHL247H1, PHL344H1, PHL345H1, PHL346H1, PHL347H1, PHL348H1, PHL349H1, PHL356H1; POL100Y1, POL102Y1, POL103Y1, POL104Y1, POL108Y1, ANY 200-level except POL242Y1; RLG100Y1, RLG200Y1, ANY 200-level; TRN200Y1; UNI130Y1, UNI201H1, UNI202H1, UNI250Y1; UNI310H1; VIC120Y1; WRT300H1.

Courses not accepted to satisfy the writing requirement include SCI199H1/Y1, SSC199H1/Y1, and the “Research Opportunity Program” courses numbered 299Y1 in any Department. INX199H1/Y1 is not automatically accepted towards the writing requirement. Students may, however, request Department approval for a particular INX199H1/Y1 course.

In addition to completing their English Writing Requirement, Computer Science students do significant writing in a number of their CSC courses. the quality of their writing, as well as its content, is important and is normally part of the grading scheme.

Basic Courses (5.5 full courses): Courses required in the Major and most Specialists

First Year:

CSC108H1/CSC150H1 [Software Engineering sub-area]
CSC148H1/CSC150H1 [Software Engineering sub-area]
CSC165H1/CSC240H1 [Logic and Complexity sub-area]
MAT137Y1/MAT157Y1 [Mathematics sub-area]

First or Second Year:

CSC207H1 [Software Engineering sub-area]
CSC236H1/CSC240H1 [Logic and Complexity sub-area]
CSC258H1 [Core Systems sub-area]
MAT223H1/MAT240H1 [Mathematics sub-area]

Second Year:

CSC263H1/CSC265H1 [Logic and Complexity sub-area]
STA247H1/STA255H1/STA257H1 [Mathematics sub-area]

Notes:
1. Students with a strong background in Java or C++ may omit CSC108H1 and proceed directly with CSC148H1.
2. CSC150H1 is an accelerated alternative to CSC108H1 and CSC148H1, intended for students with previous programming experience in a procedural language.
3. 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.
4. Students may not omit CSC165H1 and proceed directly to CSC236H1. Either (CSC165H1 and CSC236H1), or CSC240H1 is required for program completion. CSC165H1 is different from CSC108H1 in this respect.
5. Consult the Undergraduate Office for advice about choosing among CSC108H1, CSC148H1, and CSC150H1, and between CSC165H1 and CSC240H1.

Core Courses (3.5 full courses): Courses required in most Specialists

CSC209H1 [Core Systems sub-area]
CSC324H1 [Software Engineering sub-area]
CSC336H1/CSC350H1 [Numerical Analysis sub-area]
CSC343H1 [Information Systems sub-area]
CSC363H1/CSC365H1 [Logic and Complexity sub-area]
CSC369H1 [Core Systems sub-area]
CSC373H1/CSC375H1 [Logic and Complexity sub-area]

Notes
1. CSC350H1 is required in the Computer Science Specialist Program – Foundations Option; students who take CSC336H1 and later decide to enrol in the Foundations Option will be required to take extra credits as determined by the Undergraduate Program Director.
2. MAT237Y1/MAT257Y1 is a direct or indirect prerequisite for a number of CSC courses. MAT237Y1/MAT257Y1 is also required in most Computer Science programs. Students are advised to take MAT237Y1/MAT257Y1 unless they have planned their program and course selection carefully and are certain that they will not need it.

Additional Courses

Systems Area

I. Core Systems
358H1/458H1, 372H1; ECE385H1
CSC458H1, CSC469H1, CSC488H1; ECE489H1

II. Software Engineering
CSC301H1. CSC302H1
CSC410H1, CSC404H1, CSC465H1

III. Information Systems
CSC309H1, CSC310H1
CSC443H1

Human Factors and Graphics Area

I. Human Factors
CSC300H1, CSC318H1
CSC428H1, CSC454H1

II. Graphics
CSC320H1
CSC418H1

Artificial Intelligence Area

I. Reasoning

CSC384H1
CSC486H1

II. Language
CSC401H1, CSC485H1

III. Vision

CSC420H1, CSC487H1

IV. Learning
CSC321H1
CSC411H1, CSC412H1

Foundations Area

I. Logic and Complexity
CSC330H1
CSC438H1, CSC448H1

II. Numerical Analysis
CSC351H1
CSC446H1, CSC456H1

III. Mathematics
MAT224H1/MAT240H1, MAT237Y1/MAT257Y1; STA248H1

Computer Science (Science Program)

Consult Student Counsellors, Department of Computer Science.

Enrolment in the Specialist and Major programs is limited. Specialist Program admission requires (1) 65% in CSC148H1/CSC150H1, (2) either 60% in MAT137Y1/MAT157Y1 or 65% in CSC165H1/CSC240H1, and (3) a minimum CGPA of 2.0. Major Program admission requires (1) 50% in CSC148H1/CSC150H1, and (2) either 50% in MAT137Y1/MAT157Y1 or 50% in CSC165H1/CSC240H1. Students who not meet these requirements on the first attempt will be considered on a case-by-case basis.

Specialist Program – Flexible Option (Science Program)

(14 full courses or their equivalent, including at least ONE 400-series course)

1. One full course English Writing Requirement.
2. All Basic Courses and Core Courses (9 full courses).
3. MAT237Y1/MAT257Y1.
4. Six half courses from the Additional Courses, with at least TWO 400-level half courses.

Note:
1. This flexible program allows students to concentrate in one or more areas for which there is currently no other program. Students are strongly encouraged to seek advice from a faculty member in the Department of Computer Science in order to ensure that their course selection meets their academic goals. This is particularly important for students planning to apply to graduate school.

Major Program

(8 full courses or their equivalent, including at least TWO 300+ series courses)

1. One half course English Writing Requirement.
2. All Basic Courses (5.5 full courses).
3. FOUR 300+ level half courses from the Core Courses and/or Additional Courses.

Notes:
1. CSC209H1 is a direct or indirect prerequisite for a number of CSC courses. Students who intend to take one of these courses will also have to take CSC209H1 as an additional half course.

Computer Science – Artificial Intelligence Option (Science Program)

Consult Student Counsellors, Department of Computer Science.

Enrolment in this program is limited. Admission requirements are the same as for the Specialist Program in Computer Science.

Specialist Program

(13.5 full courses or their equivalent, including at least ONE 400-series course)

1. One full course English Writing Requirement.
2. All Basic Courses and Core Courses (9 full courses).
3. One full credit from MAT237Y1/MAT257Y1, MAT224H1/MAT240H1/MAT247H1, STA248H1/(STA250H1, STA255H1)/STA261H1.
4. Five half courses from the Artificial Intelligence area, with at least one half course from each of three different Artificial Intelligence sub-areas.

Notes:
1. Students may be interested in taking UNI250Y1 to satisfy their English Writing Requirement. This course can be taken in first year.
2. the additional half course CSC320H1 is recommended for students interested in taking CSC420H1.
3. the additional half course CSC330H1 is recommended for students interested in taking CSC486H1.

Computer Science – Foundations Option (Science Program)

Consult Student Counsellors, Department of Computer Science.

Enrolment in this program is limited. Admission requirements are the same as for the Specialist Program in Computer Science.

Specialist Program

(14 full courses or their equivalent, including at least ONE 400-series course)

1. One full course English Writing Requirement.
2. All Basic Courses and Core Courses (9 full courses), except that students must take CSC350H1 rather than CSC336H1.
3. MAT224H1/MAT240H1, MAT237Y1/MAT257Y1.
4. MAT301H1/MAT315H1/MAT334H1/MAT344H1/MAT401H1.
5. CSC351H1.
6. CSC438H1/CSC448H1/CSC465H1.
7. Two half courses from the Additional Courses, with at least ONE 400-level half course – these may include any half course not taken to satisfy the requirement CSC438H1/CSC448H1/CSC465H1.

Computer Science – Information Systems Option (Science Program)

Consult Student Counsellors, Department of Computer Science.

Enrolment in this program is limited. Admission requirements are the same as for the Specialist Program in Computer Science.

Specialist Program

(14 full courses or their equivalent, including at least ONE 400-series course)

1. One full course English Writing Requirement.
2. All Basic Courses and Core Courses (9 full courses).
3. MAT237Y1/MAT257Y1.
4. CSC309H1, CSC310H1,CSC301H1/CSC318H1.
5. CSC443H1.
6. (CSC384H1, CSC486H1) / (STA248H1, /(STA250H1, STA255H1), CSC411H1)

Computer Science – Software Engineering Option (Science Program)

Consult Student Counsellors, Department of Computer Science.

Enrolment in this program is limited. Admission requirements are the same as for the Specialist Program in Computer Science.

Specialist Program

(13.5 full courses or their equivalent, including at least ONE 400-series course)

1. One full course English Writing Requirement.
2. All Basic Courses and Core Courses (9 full courses).
3. CSC301H1, CSC302H1,CSC318H1.
4. Two of CSC372H1,CSC320H1/CSC321H1/CSC330H1/CSC384H1, CSC401H1, CSC410H1, CSC454H1, CSC465H1; ECE385H1.
5. Two of CSC309H1, CSC404H1, CSC418H1, CSC443H1, CSC358H1/CSC458H1, CSC469H1; CSC488H1/ECE489H1.
6. the courses chosen from groups 4 and 5 must include at least two half courses at the 400 level.

Notes:
1. This program does not lead to certification as a Professional Engineer.
2. Students in this program are strongly encouraged to consider participating in the Professional Experience Year (PEY) Program.
3. It is recommended, although not necessary, to take CSC301H1 AND302H1 in sequence in third year. Students who do so will likely defer some other third year course until fourth year.

Computer Science & Economics (Science Program)

Consult the Undergraduate Secretary, Department of Economics or Student Counsellors, Department of Computer Science.

Enrolment in this program is limited. Admission requires: (1) 70% in ECO100Y1, (2) 65% in CSC148H1/CSC150H1, (3) either 60% in MAT137Y1/MAT157Y1 or 65% in CSC165H1/CSC240H1, and (4) a minimum CGPA of 2.0. the requirements of the two Departments, Computer Science and Economics, must both be met.

Specialist Program

(17 full courses or their equivalent, including at least ONE 400-series course)

First Year:
CSC165H1/CSC240H1, (CSC108H1,CSC148H1)/CSC150H1; ECO100Y1; MAT137Y1/MAT157Y1 (See the Notes following the list of Basic Courses in the Course Categories above.)
Higher Years:
1. One full course English Writing Requirement (See the Course Categories above.)
2. CSC207H1, CSC236H1/CSC240H1, CSC258H1, CSC263H1/CSC265H1, CSC324H1, CSC336H1/CSC350H1.
3. ECO206Y1, 208Y1, 325H1, 326H1, 375H1, 376H1, 416H1/418H1
4 APM236H1, (MAT223H1, MAT224H1)/MAT240H1, MAT235Y1/MAT237Y1/MAT257Y1.
5. ECO227Y1/(STA257H1, STA261H1).
6. One and a half courses from the following groups, of which at least one half-course must be from each of Groups A and B:

Group A:
CSC343H1, CSC358H1, CSC369H1

Group B:
ANY 300+ series ECO course

Group C:
APM462H1; CSC301H1, CSC302H1, CSC351H1, CSC363H1/CSC365H1, CSC373H1/CSC375H1, CSC401H1, CSC411H1, CSC454H1; ECE385H1; STA322H1, STA347H1, STA437H1, STA457H1

Note:
1. the courses chosen from groups A, B and C must include at least one half credit at the 400 level.

Computer Science & Mathematics (Science Program)

Consult Student Counsellors, Department of Computer Science or Professor S.A. Cook, Department of Computer Science.

Enrolment in this program is limited. Admission requirements are the same as for the Specialist Program in Computer Science.

Specialist Program

(15.5 full courses or their equivalent, including at least ONE 400-series course)

First Year:
(CSC108H1, CSC148H1)/CSC150H1; MAT157Y1, MAT240H1 (See the Notes following the list of Basic Courses in the Course Categories above.)
First or Second Year:
CSC240H1, CSC258H1, CSC207H1; one full course English Writing Requirement (See the Course Categories above.)
Second Year:
CSC265H1; MAT247H1, MAT257Y1, MAT267H1; STA257H1/STA352Y1
Third Year:
CSC324H1, CSC365H1, CSC375H1
Third or Fourth Years:
1. MAT327H1, MAT347Y1, MAT354H1, MAT357H1.
2. One of CSC438H1, CSC448H1, CSC465H1; MAT443H1.
3. CSC350H1, CSC351H1.
4. One of CSC401H1, CSC418H1, CSC420H1, CSC428H1, CSC443H1, CSC456H1, CSC458H1, CSC469H1, CSC485H1, CSC486H1, CSC487H1, CSC488H1; ECE489H1.
5. APM351Y1/MAT457Y1.
6. One of APM461H1; MAT344H1, MAT464H1, 477H1.

Note:
1. It is recommended that PHY151H1, PHY152H1 be taken.

Computer Science & Physics (Science Program)

Consult Student Counsellors, Department of Computer Science, or Associate Chair (Undergraduate Studies), Department of Physics.

Enrolment in this program is limited. Admission requirements are the same as for the Specialist Program in Computer Science. NOTE: Students in this program should consult one or both Departments during the spring of each year, to ensure that they choose courses appropriate to their intended careers.

Specialist Program

(17.5 full courses or their equivalent, including at least ONE 400-series course)

First Year:
(CSC108H1, CSC148H1)/CSC150H1; MAT137Y1/MAT157Y1, MAT223H1/MAT240H1; PHY151H1, PHY152H1 (See the Notes following the list of Basic Courses in the Course Categories above.)
First or Second Year:
CSC240H1, CSC207H1; STA247H1; one full course English Writing Requirement (See the Course Categories above.)
Second Year:
CSC263H1/CSC265H1; MAT237Y1/MAT257Y1, MAT244H1/MAT267H1; PHY224H1, PHY250H1, PHY252H1, PHY254H1, PHY256H1
Third Year:
APM346H1; CSC324H1, CSC350H1; MAT334H1; PHY350H1, PHY354H1 , PHY356H1
Third or Fourth Years:
1. CSC351H1, CSC363H1/CSC365H1/CSC373H1/CSC375H1
2. PHY456H1/PHY459H1/PHY460H1
3. CSC401H1CSC418H1/CSC420H1/CSC428H1/CSC443H1/CSC458H1/CSC469H1/CSC485H1/CSC486H1/CSC487H1/CSC488H1/ECE489H1
4. 1.5 courses from the 300-/400-level lab courses as described in the Notes to the Physics Specialist Program.

Computer Science & Statistics (Science Program)

Consult Student Counsellors, Department of Computer Science, or Undergraduate Secretary, Department of Statistics.

Enrolment in this program is limited. Admission requirements are the same as for the Specialist Program in Computer Science.

Specialist Program

(14.5 full courses or their equivalent, including at least ONE 400-series course)

First Year:
(CSC108H1, CSC148H1)/CSC150H1, CSC165H1/CSC240H1; MAT137Y1/MAT157Y1 (See the Notes following the list of Basic Courses in the Course Categories above.)
First or Second Year:
1. CSC236H1/CSC240H1, CSC258H1, CSC207H1
2. (MAT223H1, MAT224H1)/(MAT240H1,MAT247H1)
3. One full course English Writing Requirement (See the Course Categories above.)
Second Year:
CSC263H1/CSC265H1; STA257H1, STA261H1; MAT237Y1/MAT257Y1
Third Year:
CSC324H1, CSC350H1, CSC351H1, CSC363H1/CSC365H1, CSC373H1/CSC375H1; STA302H1, (STA347H1, STA447H1)/STA352Y1
Third or Fourth Years:
1. One of CSC418H1, CSC443H1, CSC456H1, CSC458H1, CSC469H1, CSC487H1; MAT443H1
2. STA437H1/STA442H1/STA457H1
3. Two of CSC310H1, CSC321H1, CSC401H1, CSC411H1, CSC412H1; STA410H1

Human-Computer Interaction (Science Program)

Consult Student Counsellors, Department of Computer Science.

Enrolment in this program is limited. Admission requires (1) 65% in CSC148H1/CSC150H1, (2) either 60% in MAT135Y1/MAT137Y1/MAT157Y1 or 65% in CSC165H1/CSC240H1, and (3) a minimum CGPA of 2.0. Students who do not meet these requirements on the first attempt will be considered on a case-by-case basis.

Specialist Program

(15 full courses or their equivalent, including at least ONE 400-series course)

First Year:
1. CSC165H1/CSC240H1, (CSC108H1, CSC148H1)/CSC150H1 (See the Notes following the list of Basic Courses in the Course Categories above.)
2. MAT135Y1/MAT137Y1/MAT157Y1,
3. SOC101Y1,
First or Second Year:
CSC207H1, CSC236H1/CSC240H1; PSY100H1; one full course English Writing Requirement (See the Course Categories above.)
Second Year:
1. CSC258H1, CSC263H1/CSC265H1; STA247H1
2. MAT223H1/MAT240H1; SOC200H1
Third Year:
1. CSC300H1, CSC301H1, CSC318H1
2. CSC324H1/CSC343H1
3. STA248H1/(PSY201H1, PSY202H1)/(SOC202H1, SOC300H1)
4. PSY270H1, PSY280H1
Third or Fourth Year:
1. CSC363H1/CSC365H1/CSC373H1/CSC375H1, CSC428H1
2. Two of CSC302H1, CSC418H1/CSC487H1/CSC420H1, CSC401H1/CSC485H1/CSC486H1/CSC411H1, CSC443H1/CSC458H1/CSC469H1
3. WDW260H1

Notes:
1. Students in this program should consult the Department of Computer Science at least annually to discuss their choice of courses, especially if they plan on graduate study.
2. Students who may be interested in other programs sponsored by the Department of Computer Science must take MAT137Y1/MAT157Y1 and not MAT135Y1.
3. It is recommended that you take a physical science course such as (PHY131H1, PHY132H1)/(PHY151H1, PHY152H1)1.
4. It is strongly recommended that you take at least one half-course in Human Factors or Ergonomics offered by the Department of Mechanical and Industrial Engineering, such as MIE343H1, 448H1, 449H1.
5. Other recommended courses include:
CSC309H1, CSC369H1, CSC454H1, CSC469H1; SOC387Y1; PSY305H1, PSY312H1, PSY370H1, PSY371H1, PSY372H1, PSY375H1, PSY312H1; JLP374H1
For advice on course choice and assistance in enrolment consult the Department of Computer Science.

Bioinformatics and Computational Biology – See Biochemistry

Cognitive Science & Artificial Intelligence - See University College

Linguistics and Computing- See Linguistics