o equivalente - matriz curricular - pesquisa em 22/06/2017 - considerada a 10 melhor de CC/EE
computer science / electrical engineering
computer science / electrical engineering
Enrolment Requirements:
This
is a limited enrolment program (Type 2L) that can only accommodate a
certain number of students. Eligibility is based on the following
criteria:
A. Completion of at least 4.0 FCEs including CSC148H1 (with a minimum grade of 70%) and CSC165H1/CSC240H1 (with a minimum grade of 70%), AND
B. An average of the grades in CSC148H1/CSC207H1 and CSC165H1/CSC236H1/CSC240H1 that meets the department's annual cutoff. When more than one course has been completed from a list of alternatives, the higher grades will be used. Also, CSC240H1 grades will be adjusted to account for the course's greater difficulty. Finally, note that the cutoff changes from year to year, depending on the current capacity of the program and the pool of applicants. For more information, including historical data, please visit http://web.cs.toronto.edu/program/ugrad/admission.htm.
Note that students admitted to the program after second or third year will be required to pay retroactive program fees.
A. Completion of at least 4.0 FCEs including CSC148H1 (with a minimum grade of 70%) and CSC165H1/CSC240H1 (with a minimum grade of 70%), AND
B. An average of the grades in CSC148H1/CSC207H1 and CSC165H1/CSC236H1/CSC240H1 that meets the department's annual cutoff. When more than one course has been completed from a list of alternatives, the higher grades will be used. Also, CSC240H1 grades will be adjusted to account for the course's greater difficulty. Finally, note that the cutoff changes from year to year, depending on the current capacity of the program and the pool of applicants. For more information, including historical data, please visit http://web.cs.toronto.edu/program/ugrad/admission.htm.
Note that students admitted to the program after second or third year will be required to pay retroactive program fees.
Completion Requirements:
(12.0 full course equivalents [FCEs], including at least 1.5 FCEs at the 400-level)
First year (2.5 FCEs):
1. (CSC108H1, CSC148H1)/CSC150H1, CSC165H1/CSC240H1; (MAT135H1, MAT136H1)/MAT137Y1/MAT157Y1
Second year (3.5 FCEs):
2. CSC207H1, CSC209H1, CSC236H1/CSC240H1, CSC258H1, CSC263H1/CSC265H1; MAT221H1/MAT223H1/MAT240H1; STA247H1/STA255H1/STA257H1
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 half-credit for program completion; however, please base your course choice on what you are ready to take, not on "saving" a half-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 1.
3. Consult the Undergraduate Office for advice about choosing among CSC108H1 and CSC148H1, and between CSC165H1 and CSC240H1.
Later years (6.0 FCEs):
3. CSC369H1, CSC373H1/CSC375H1
4. 5.0 FCEs from the following:
No more than 1.0 FCE from CSC490H1, CSC491H1, CSC494H1, CSC495H1, 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 half-courses: CSC301H1, CSC318H1, CSC404H1, CSC411H1, CSC418H1, CSC420H1, CSC428H1, CSC454H1, CSC485H1, CSC490H1, CSC491H1, CSC494H1, CSC495H1. This requirement may also be met by participating in the PEY (Professional Experience Year) program.
Preparing for graduate study in Computer Science
Strong students should consider the option of further study in graduate school (where the degrees offered are typically M.Sc. and Ph.D.). If you find yourself frequently receiving marks in the B+ range or better, you should consult with faculty members to learn more about graduate school and whether it would be a good option for you. You will want to ask for advice on your particular interestsand you will find faculty members are happy to talk to youbut there are also some course choices that should be considered by all students thinking of graduate study in Computer Science.
The focuses can help you further refine your areas of interest, but you should not take courses exclusively in one area. You will benefit by having taken an advanced course requiring considerable software development and a theory course.
It will be especially beneficial to have done a project course (CSC494H1/CSC495H1), a capstone course (CSC490H1/CSC491H1), and/or a summer research project. It is good if this individual work is in the area where you eventually decide you'd like to do your own research, but that is not essential; what you need most is some experience doing work on your own, under the mentorship of an experienced researcher.
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.
First year
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 half-credit for program completion; however, please base your course choice on what you are ready to take, not on "saving" a half-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 1.
3. Consult the Undergraduate Office for advice about choosing among CSC108H1 and CSC148H1, and between CSC165H1 and CSC240H1.
Later years (6.0 FCEs):
3. CSC369H1, CSC373H1/CSC375H1
4. 5.0 FCEs from the following:
No more than 1.0 FCE from CSC490H1, CSC491H1, CSC494H1, CSC495H1, 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 half-courses: CSC301H1, CSC318H1, CSC404H1, CSC411H1, CSC418H1, CSC420H1, CSC428H1, CSC454H1, CSC485H1, CSC490H1, CSC491H1, CSC494H1, CSC495H1. This requirement may also be met by participating in the PEY (Professional Experience Year) program.
Preparing for graduate study in Computer Science
Strong students should consider the option of further study in graduate school (where the degrees offered are typically M.Sc. and Ph.D.). If you find yourself frequently receiving marks in the B+ range or better, you should consult with faculty members to learn more about graduate school and whether it would be a good option for you. You will want to ask for advice on your particular interestsand you will find faculty members are happy to talk to youbut there are also some course choices that should be considered by all students thinking of graduate study in Computer Science.
The focuses can help you further refine your areas of interest, but you should not take courses exclusively in one area. You will benefit by having taken an advanced course requiring considerable software development and a theory course.
It will be especially beneficial to have done a project course (CSC494H1/CSC495H1), a capstone course (CSC490H1/CSC491H1), and/or a summer research project. It is good if this individual work is in the area where you eventually decide you'd like to do your own research, but that is not essential; what you need most is some experience doing work on your own, under the mentorship of an experienced researcher.
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.
Students who wish to pursue video game design should have an understanding of linear algebra (for computer graphics modeling), 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.
First year (2.5 FCEs):
1. (CSC108H1, CSC148H1)/CSC150H1, CSC165H1/CSC240H1; (MAT135H1, MAT136H1)/MAT137Y1/MAT157Y1
Second year (3.5 FCEs):
2. CSC207H1, CSC209H1, CSC236H1/CSC240H1, CSC258H1, CSC263H1/CSC265H1; MAT221H1/MAT223H1/MAT240H1; STA247H1/STA255H1/STA257H1
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 half-credit for program completion; however, please base your course choice on what you are ready to take, not on "saving" a half-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 1.
3. Consult the Undergraduate Office for advice about choosing among CSC108H1 and CSC148H1, and between CSC165H1 and CSC240H1.
Later years (6.0 FCEs):
3. CSC369H1, CSC373H1/CSC375H1
4. 5.0 FCEs from the following:
- Any 300-/400-level CSC course;
- BCB410H1, BCB420H1, BCB430Y1;
- ECE385H1, ECE489H1;
- MAT224H1, MAT235Y1/MAT237Y1/MAT257Y1, any 300-/400-level MAT course except MAT329Y1, MAT390H1, MAT391H1;
- STA248H1/STA261H1, any 300-/400-level STA course
No more than 1.0 FCE from CSC490H1, CSC491H1, CSC494H1, CSC495H1, 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 half-courses: CSC301H1, CSC318H1, CSC404H1, CSC411H1, CSC418H1, CSC420H1, CSC428H1, CSC454H1, CSC485H1, CSC490H1, CSC491H1, CSC494H1, CSC495H1. This requirement may also be met by participating in the PEY (Professional Experience Year) program.
Preparing for graduate study in Computer Science
Strong students should consider the option of further study in graduate school (where the degrees offered are typically M.Sc. and Ph.D.). If you find yourself frequently receiving marks in the B+ range or better, you should consult with faculty members to learn more about graduate school and whether it would be a good option for you. You will want to ask for advice on your particular interestsand you will find faculty members are happy to talk to youbut there are also some course choices that should be considered by all students thinking of graduate study in Computer Science.
The focuses can help you further refine your areas of interest, but you should not take courses exclusively in one area. You will benefit by having taken an advanced course requiring considerable software development and a theory course.
It will be especially beneficial to have done a project course (CSC494H1/CSC495H1), a capstone course (CSC490H1/CSC491H1), and/or a summer research project. It is good if this individual work is in the area where you eventually decide you'd like to do your own research, but that is not essential; what you need most is some experience doing work on your own, under the mentorship of an experienced researcher.
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.
First year
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. No prior programming experience required.
NOTE: You may not take this course concurrently with CSC120H1/CSC148H1, but you may take CSC148H1 after CSC108H1.
NOTE: You may not take this course concurrently with CSC120H1/CSC148H1, but you may take CSC148H1 after CSC108H1.
Distribution Requirements:
Science
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 go to their
college to drop down from CSC148H1 to CSC108H1. See above for the drop
down deadline.
Prerequisite:
CSC108H1/(equivalent programming experience)
Exclusion:
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
CSC165H1: Mathematical Expression and Reasoning for Computer Science
Hours:
36L/24T
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. 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.
Distribution Requirements:
Science
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.
NOTE: Students may go to their college to drop down from CSC240H1 to CSC165H1 (or to CSC236H1 if they have already passed CSC165H1). See above for the drop down deadline.
NOTE: Students may go to their college to drop down from CSC240H1 to CSC165H1 (or to CSC236H1 if they have already passed CSC165H1). See above for the drop down deadline.
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
MAT135H1: Calculus 1(A)
Hours:
36L/12T
Review
of trigonometric functions, trigonometric identities and trigonometric
limits. Functions, limits, continuity. Derivatives, rules of
differentiation and implicit differentiation, related rates, higher
derivatives, logarithms, exponentials. Trigonometric and inverse
trigonometric functions, linear approximations. Mean value theorem,
graphing, min-max problems, l'Hôpital's rule; anti- derivatives.
Examples from life science and physical science applications.
Prerequisite:
High school level calculus
Exclusion:
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
MAT136H1: Calculus 1(B)
Hours:
36L/12T
Definite
Integrals, Fundamental theorem of Calculus, Areas, Averages, Volumes.
Techniques: Substitutions, integration by parts, partial fractions,
improper integrals. Differential Equations: Solutions and applications.
Sequences, Series, Taylor Series. Examples from life science and
physical science applications.
Prerequisite:
Exclusion:
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
MAT137Y1: Calculus
Hours:
72L/24T
A
conceptual approach for students with a serious interest in
mathematics. Attention is given to computational aspects as well as
theoretical foundations and problem solving techniques. Review of
Trigonometry. Limits and continuity, mean value theorem, inverse
function theorem, differentiation, integration, fundamental theorem of
calculus, elementary transcendental functions, Taylor's theorem,
sequence and series, power series. Applications.
Prerequisite:
High school level calculus
Exclusion:
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
MAT157Y1: Analysis I
Hours:
72L/48T
A
theoretical course in calculus; emphasizing proofs and techniques, as
well as geometric and physical understanding. Trigonometric identities.
Limits and continuity; least upper bounds, intermediate and extreme
value theorems. Derivatives, mean value and inverse function theorems.
Integrals; fundamental theorem; elementary transcendental functions.
Techniques of integration. Taylor's theorem; sequences and series;
uniform convergence and power series.
Prerequisite:
High school level calculus
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
Second year
CSC207H1: Software Design
Hours:
24L/12T
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. Representation of
floating-point numbers and introduction to numerical computation.
Prerequisite:
60% or higher in CSC148H1
Exclusion:
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
Note:
Please note:
The minimum prerequisite grade in CSC148H1 and CSC165H1/CSC240H1 is
lower than the minimum grade for program admission. If you take this
course when your grade in CSC148H1 or CSC165H1/CSC240H1 is lower than
the requirement for program admission, you will be unable to enrol in a
Computer Science program. If you hope to enrol in a Computer Science
program in future, please ensure that you satisfy the program admission
grade requirements in CSC148H1 and CSC165H1/CSC240H1 before completing
any 200-level course.
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:
Distribution Requirements:
Science
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.
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
Note:
Please note:
The minimum prerequisite grade in CSC148H1 and CSC165H1/CSC240H1 is
lower than the minimum grade for program admission. If you take this
course when your grade in CSC148H1 or CSC165H1/CSC240H1 is lower than
the requirement for program admission, you will be unable to enrol in a
Computer Science program. If you hope to enrol in a Computer Science
program in future, please ensure that you satisfy the program admission
grade requirements in CSC148H1 and CSC165H1/CSC240H1 before completing
any 200-level course.
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.
NOTE: Students may go to their college to drop down from CSC240H1 to CSC165H1 (or to CSC236H1 if they have already passed CSC165H1). See above for the drop down deadline.
NOTE: Students may go to their college to drop down from CSC240H1 to CSC165H1 (or to CSC236H1 if they have already passed CSC165H1). See above for the drop down deadline.
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
CSC258H1: Computer Organization
Hours:
24L/12T/13P
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.
Distribution Requirements:
Science
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.
Exclusion:
Distribution Requirements:
Science
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. Students without the exact course
prerequisites but with a strong mathematical background are encouraged
to consult the Department about the possibility of taking this course.
NOTE: Students may go to their college to drop down from CSC265H1 to CSC263H1. See above for the drop down deadline.
NOTE: Students may go to their college to drop down from CSC265H1 to CSC263H1. See above for the drop down deadline.
Exclusion:
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
MAT221H1: Applied Linear Algebra
Hours:
36L/12T
An
application-oriented approach to linear algebra, based on calculations
in standard Euclidean space. Systems of linear equations, matrices,
Gauss-Jordan elimination, subspaces, bases, orthogonal vectors and
projections. Matrix inverses, kernel and range, rank-nullity theorem.
Determinants, eigenvalues and eigenvectors, Cramer's rule,
diagonalization. This course has strong emphasis on building
computational skills in the area of algebra. Applications to curve
fitting, economics, Markov chains and cryptography.
Prerequisite:
High school level calculus
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
MAT223H1: Linear Algebra I
Hours:
36L/12T
Systems
of linear equations, matrix algebra, real vector spaces, subspaces,
span,linear dependence andindependence, bases, rank, inner products,
orthogonality, orthogonal complements, Gram-Schmidt, linear
transformations, determinants,Cramer's rule, eigenvalues, eigenvectors,
eigenspaces, diagonalization.
Prerequisite:
High school level calculus
Exclusion:
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
STA247H1: Probability with Computer Applications
Hours:
36L/24T
A
theoretical approach to: vector spaces over arbitrary fields, including
C and Z_p. Subspaces, bases and dimension. Linear transformations,
matrices, change of basis, similarity, determinants. Polynomials over a
field (including unique factorization, resultants). Eigenvalues,
eigenvectors, characteristic polynomial, diagonalization. Minimal
polynomial, Cayley-Hamilton theorem.
Prerequisite:
High school level calculus
Corequisite:
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
STA255H1: Statistical Theory
ours:
36L/12T
Introduction
to the theory of probability, with emphasis on applications in computer
science. The topics covered include random variables, discrete and
continuous probability distributions, expectation and variance,
independence, conditional probability, normal, exponential, binomial,
and Poisson distributions, the central limit theorem, sampling
distributions, estimation and testing, applications to the analysis of
algorithms, and simulating systems such as queues (Note: STA247H1does
not count as a distribution requirement course).
Breadth Requirements:
The Physical and Mathematical Universes (5)
STA257H1: Probability and Statistics I
Hours:
36L/12T
This
courses deals with the mathematical aspects of some of the topics
discussed in STA250H1. Topics include discrete and continuous
probability distributions, conditional probability, expectation,
sampling distributions, estimation and testing, the linear model (Note:
STA255H1 does not count as a distribution requirement course).
Prerequisite:
Breadth Requirements:
The Physical and Mathematical Universes (5)
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 half-credit for program completion; however, please base your course choice on what you are ready to take, not on "saving" a half-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 1.
3. Consult the Undergraduate Office for advice about choosing among CSC108H1 and CSC148H1, and between CSC165H1 and CSC240H1.
Later years (6.0 FCEs):
3. CSC369H1, CSC373H1/CSC375H1
4. 5.0 FCEs from the following:
- Any 300-/400-level CSC course;
- BCB410H1, BCB420H1, BCB430Y1;
- ECE385H1, ECE489H1;
- MAT224H1, MAT235Y1/MAT237Y1/MAT257Y1, any 300-/400-level MAT course except MAT329Y1, MAT390H1, MAT391H1;
- STA248H1/STA261H1, any 300-/400-level STA course
No more than 1.0 FCE from CSC490H1, CSC491H1, CSC494H1, CSC495H1, 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 half-courses: CSC301H1, CSC318H1, CSC404H1, CSC411H1, CSC418H1, CSC420H1, CSC428H1, CSC454H1, CSC485H1, CSC490H1, CSC491H1, CSC494H1, CSC495H1. This requirement may also be met by participating in the PEY (Professional Experience Year) program.
Preparing for graduate study in Computer Science
Strong students should consider the option of further study in graduate school (where the degrees offered are typically M.Sc. and Ph.D.). If you find yourself frequently receiving marks in the B+ range or better, you should consult with faculty members to learn more about graduate school and whether it would be a good option for you. You will want to ask for advice on your particular interestsand you will find faculty members are happy to talk to youbut there are also some course choices that should be considered by all students thinking of graduate study in Computer Science.
The focuses can help you further refine your areas of interest, but you should not take courses exclusively in one area. You will benefit by having taken an advanced course requiring considerable software development and a theory course.
It will be especially beneficial to have done a project course (CSC494H1/CSC495H1), a capstone course (CSC490H1/CSC491H1), and/or a summer research project. It is good if this individual work is in the area where you eventually decide you'd like to do your own research, but that is not essential; what you need most is some experience doing work on your own, under the mentorship of an experienced researcher.
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.
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.
Distribution Requirements:
Science
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.
Exclusion:
Distribution Requirements:
Science
Breadth Requirements:
The Physical and Mathematical Universes (5)
App2
http://web.cs.toronto.edu/program/ugrad/programs/Game_Design.htm
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 modeling), 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.
Required
Courses:
Suggested
Related
Courses:
Contacts:
CSC104H1 - Computational Thinking
CSC108H1 - Introduction to Computer Programming
CSC120H1 - Computer Science for the Sciences
CSC121H1 - Computer Science for Statistics
CSC148H1 - Introduction to Computer Science
CSC165H1 - Mathematical Expression and Reasoning for Computer Science
CSC204H1 - Collaborating with Computer Scientists
CSC207H1 - Software Design
CSC209H1 - Software Tools and Systems Programming
CSC236H1 - Introduction to the Theory of Computation
CSC240H1 - Enriched Introduction to the Theory of Computation
CSC258H1 - Computer Organization
CSC263H1 - Data Structures and Analysis
CSC265H1 - Enriched Data Structures and Analysis
CSC300H1 - Computers and Society
CSC301H1 - Introduction to Software Engineering
CSC302H1 - Engineering Large Software Systems
CSC304H1 - Algorithmic Game Theory and Mechanism Design
CSC309H1 - Programming on the Web
CSC310H1 - Information Theory
CSC318H1 - The Design of Interactive Computational Media
CSC320H1 - Introduction to Visual Computing
CSC321H1 - Introduction to Neural Networks and Machine Learning
CSC324H1 - Principles of Programming Languages
CSC336H1 - Numerical Methods
CSC343H1 - Introduction to Databases
CSC358H1 - Principles of Computer Networks
CSC367H1 - Parallel Programming
CSC369H1 - Operating Systems
CSC373H1 - Algorithm Design, Analysis & Complexity
CSC384H1 - Introduction to Artificial Intelligence
CSC385H1 - Microprocessor Systems
CSC396Y0 - Designing Systems for Real World Problems
CSC401H1 - Natural Language Computing
CSC404H1 - Introduction to Video Game Design
CSC410H1 - Software Testing and Verification
CSC411H1 - Machine Learning and Data Mining
CSC412H1 - Probabilistic Learning and Reasoning
CSC418H1 - Computer Graphics
CSC420H1 - Introduction to Image Understanding
CSC428H1 - Human-Computer Interaction
CSC436H1 - Numerical Algorithms
CSC438H1 - Computability and Logic
CSC443H1 - Database System Technology
CSC446H1 - Computational Methods for Partial Differential Equations
CSC448H1 - Formal Languages and Automata
CSC454H1 - The Business of Software
CSC456H1 - High-Performance Scientific Computing
CSC458H1 - Computer Networking Systems
CSC463H1 - Computational Complexity and Computability
CSC465H1 - Formal Methods in Software Design
CSC466H1 - Numerical Methods for Optimization Problems
CSC469H1 - Operating Systems Design and Implementation
CSC473H1 - Advanced Algorithm Design
CSC485H1 - Computational Linguistics
CSC486H1 - Knowledge Representation and Reasoning
CSC488H1 - Compilers and Interpreters
ECE489H1 - Compilers II
CSC490H1 - Capstone Design Project
CSC491H1 - Capstone Design Project
CSC494H1 - Computer Science Project
CSC495H1 - Computer Science Project