Jump to programs in:
Designed for students who want to gain a basic understanding of computer science principles and get an overview of some computer science areas. Basic computer science skills are important in many domains, the Minor is useful for students majoring in any discipline.
COURSE  CREDITS  TITLE 

REQUIRED:  9  
COMP 202*  3  Introduction to Computing 1 
COMP 203  3 
Introduction to Computing 2 
COMP 206 
3 
Introduction to Software Systems 
COMPLIMENTARY:  15  (to be selected from the courses below) 
COMP 251** 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
MATH 222 
3 
Calculus 3 
MATH 240 
3 
Discrete Structures 1 
and COMP courses at the 300level or above (except COMP 364, COMP 396, COMP 400, COMP 431)  
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202, but it must be replaced with an additional COMP complementary course. **COMP 251 is a prerequisite for many of the other complementary courses. This Minor may be taken in conjunction with any program in the Faculties of Science and Engineering (except other Computer Science programs). Students must obtain approval from the advisor of their main program. Students are strongly encouraged to talk to an advisor in the School of Computer Science before choosing their complementary courses. Approval must be given by the School for the particular selection of courses to be credited towards the Minor. If a student's Major program requires COMP courses, up to six credits of COMP courses may be used to fulfill both Major and Minor requirements. 
The standard Major program offered by the School of Computer Science. It provides a broad introduction to the principles of computer science and offers ample opportunity to acquire indepth knowledge of several subdisciplines. At the same time, its credit requirements allow students to take an additional minor.
COURSE  CREDITS  TITLE 

REQUIRED:  2730  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 251 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 310 
3 
Operating Systems 
MATH 222 
3 
Calculus 3 
MATH 223 
3 
Linear Algebra 
MATH 240 
3 
Discrete Structures 1 
COMPLIMENTARY:  33  (to be selected from the courses below) 
At least 6 credits selected from:  
COMP 330 
3 
Theory of Computation 
COMP 350 
3 
Numerical Computing 
COMP 360 
3 
Algorithm Design Techniques 
At least 3 credits selected from:  
COMP 303 
3 
Software Development 
COMP 304 
3 
Objectoriented Design 
39 credits selected from: (Must include at least one of MATH 323 and MATH 340)  
MATH 318 
3 
Mathematical Logic 
MATH 323 
3 
Probability 
MATH 324 
3 
Statistics 
MATH 340 
3 
Discrete Structures 2 
The remaining credits selected from COMP courses at the 300level or above
(except COMP 364, COMP 396, COMP 400, COMP 431) and ECSE 508 

NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202. Students must make sure they have the appropriate prerequisites when choosing upper level courses. 
A specialization within Computer Science. It fulfills all the basic requirements of the Major in Computer Science. Complementary courses focus on topics that are important to understanding the technology behind computer games and to gaining experience in software development and design needed for computer game development.
COURSE  CREDITS  TITLE 

REQUIRED:  4750  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 251 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 303 
3 
Software Development 
COMP 308 
1 
Computer Systems Lab 
COMP 310 
3 
Operating Systems 
COMP 322 
1 
Introduction to C++ 
COMP 330 
3 
Theory of Computation 
COMP 361D1, 361D2 
3, 3 
Software Engineering Project 
COMP 557 
3 
Fundamentals of Computer Graphics 
MATH 222 
3 
Calculus 3 
MATH 223 
3 
Linear Algebra 
MATH 240 
3 
Discrete Structures 1 
MATH 323 
3 
Probability 
COMPLIMENTARY:  33  (to be selected from the courses below) 
3 credits selected from:  
COMP 350 
3 
Numerical Computing 
COMP 360 
3 
Algorithm Design Techniques 
68 credits selected from:  
COMP 424 
3 
Artificial Intelligence 
COMP 507 
3 
Computational Geometry 
COMP 521 
4 
Modern Computer Games 
COMP 522 
4 
Modelling and Simulation 
COMP 529 
4 
Software Architecture 
COMP 533 
3 
Objectoriented Software Development 
COMP 559 
4 
Fundamentals of Computer Vision 
6 credits selected from:  
COMP 409 
3 
Concurrent Programming 
COMP 421 
3 
Database Systems 
COMP 535 
3 
Computer Networks 1 
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202. 
This program provides a broad introduction to the principles of computer science and covers in depth the design and development of software systems.
COURSE  CREDITS  TITLE 

REQUIRED:  3639  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 251 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 303 
3 
Software Development 
COMP 310 
3 
Operating Systems 
COMP 361D1, 361D2 
3, 3 
Software Engineering Project 
ECSE 429 
3 
Software Validation 
MATH 223 
3 
Linear Algebra 
MATH 240 
3 
Discrete Structures 1 
COMPLIMENTARY:  24  (to be selected from the courses below) 
At least 9 credits selected from Groups A and B, with at least 3 credits selected from each:  
Group A:  
MATH 222 
3 
Calculus 3 
MATH 323 
3 
Probability 
MATH 324 
3 
Statistics 
Group B:  
COMP 330 
3 
Theory of Computation 
COMP 360 
3 
Algorithm Design Techniques 
At least 15 credits selected from the following 2 lists:  
Software Engineering Specializations (at least 6 credits):  
COMP 409 
3 
Concurrent Programming 
COMP 523 
3 
Languagebased Security 
COMP 525 
4 
Formal Verification 
COMP 529 
4 
Software Architecture 
COMP 533 
3 
Objectoriented Software Development 
Applications Specialities (at least 6 credits):  
COMP 350 
3 
Numerical Computing 
COMP 417 
3 
Introduction to Robotics and Intelligent Systems 
COMP 421 
3 
Database Systems 
COMP 424 
3 
Artificial Intelligence 
COMP 512 
4 
Distributed Systems 
COMP 520 
4 
Compiler Design 
COMP 521 
4 
Modern Computer Games 
COMP 522 
4 
Modelling and Simulation 
COMP 535 
4 
Computer Networks 1 
COMP 557 
3 
Fundamentals of Computer Graphics 
COMP 558 
3 
Fundamentals of Computer Vision 
ECSE 424 
3 
HumanComputer Interaction 
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202. 
In a Liberal Program, students must complete a Core Science Component (CSC) of 4550 credits, PLUS a Breadth Component of at least 18 credits. Please see course calendar for details.
Liberal Program: Core Science Component in Computer Science (45 credits)This program provides an introduction to the principles of computer science and offers opportunity to get insight into some of its subareas. Having only 45 credits, it allows students to combine it with minor or major concentrations in other disciplines.
COURSE  CREDITS  TITLE 

REQUIRED:  21  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 251 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
MATH 222 
3 
Calculus 3 
MATH 240 
3 
Discrete Structures 1 
COMPLIMENTARY:  24  (to be selected from the courses below) 
36 credits selected from:  
MATH 223 
3 
Linear Algebra 
MATH 318 
3 
Mathematical Logic 
MATH 323 
3 
Probability 
MATH 324 
3 
Statistics 
MATH 340 
3 
Discrete Structures 2 
At least 3 credits selected from:  
COMP 330 
3 
Theory of Computation 
COMP 350 
3 
Numerical Computing 
COMP 360 
3 
Algorithm Design Techniques 
At least 3 credits selected from:  
COMP 302 
3 
Programming Languages and Paradigms 
COMP 303 
3 
Software Development 
The remaining credits selected from COMP courses at the 300level or above (except COMP 364, COMP 396, COMP 400, COMP 431). 

NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202, but it must be replaced with an additional COMP complementary course. Advanced COMP courses have more prerequisites than the required courses for this program. Students have to make sure that they have the appropriate prerequisites when choosing upper level courses. 
This program covers a core of programming and Software Engineering courses and allows students to select courses that aim at practical aspects of software development.
COURSE  CREDITS  TITLE 

REQUIRED:  36  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 251 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 303 
3 
Software Development 
COMP 310 
3 
Operating Systems 
COMP 361D1, 361D2 
3, 3 
Software Engineering Project 
MATH 223 
3 
Linear Algebra 
MATH 240 
3 
Discrete Structures 1 
COMPLIMENTARY:  1213  (to be selected from the courses below) 
3 credits selected from:  
COMP 330 
3 
Theory of Computation 
COMP 360 
3 
Algorithm Design Techniques 
910 credits selected from:  
COMP 322 
1 
Introduction to C++ 
COMP 409 
3 
Concurrent Programming 
COMP 421 
3 
Database Systems 
COMP 535 
3 
Computer Networks 1 
COMP 520 
4 
Compiler Design 
COMP 525 
4 
Formal Verification 
COMP 529 
4 
Software Architecture 
COMP 533 
3 
Objectoriented Software Development 
The remaining credits selected from COMP courses at the 300level or above (except COMP 364, COMP 396, COMP 400, COMP 431). 

NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202. Advanced COMP courses have more prerequisites than the required courses for this program. Students have to make sure that they have the appropriate prerequisites when choosing upper level courses. 
Honours students must maintain a CGPA of at least 3.00 during their studies and at graduation.
Honours in Computer Science (7275 credits)This program provides an indepth introduction to the principles of computer science and offers ample opportunity to acquire indepth knowledge of several subdisciplines. Compared to the major in Computer Science, it has a stronger focus on the foundations of algorithms, contains a research component and requires students to take advanced courses that cover subareas in more detail.
COURSE  CREDITS  TITLE 

REQUIRED:  4250  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 252 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 310 
3 
Operating Systems 
COMP 330 
3 
Theory of Computation 
COMP 350 
3 
Numerical Computing 
COMP 362 
3 
Honours Algorithm 
COMP 400 
3 
Technical Project and Report 
MATH 222 
3 
Calculus 3 
MATH 223 
3 
Linear Algebra 
MATH 240 
3 
Discrete Structures 1 
MATH 340 
3 
Discrete Structures 2 
COMPLIMENTARY:  30  (to be selected from the courses below) 
At least 3 credits selected from:  
COMP 303 
3 
Software Development 
COMP 304 
3 
Objectoriented Design 
6 credits selected from:  
MATH 318 
3 
Mathematical Logic 
MATH 323 
3 
Probability 
MATH 324 
3 
Statistics 
The remaining credits selected from COMP courses at the 300level or above
(except COMP 364, COMP 396, COMP 400, COMP 431) and ECSE 508. At least 12 credits must be at the 500level. 

NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202. 
This program provides a more challenging and researchoriented version of the Major in Software Engineering.
COURSE  CREDITS  TITLE 

REQUIRED:  3639  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 252 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 310 
3 
Operating Systems 
COMP 361D1, 361D2 
3, 3 
Software Engineering Project 
COMP 400 
3 
Technical Project and Report 
ECSE 429 
3 
Software Validation 
MATH 223 
3 
Linear Algebra 
MATH 240 
3 
Discrete Structures 1 
COMPLIMENTARY:  33  (to be selected from the courses below) 
At least 9 credits selected from Groups A and B, with at least 3 credits selected from each:  
Group A:  
MATH 222** 
3 
Calculus 3 
MATH 323 
3 
Probability 
MATH 324 
3 
Statistics 
Group B:  
COMP 330 
3 
Theory of Computation 
COMP 362 
3 
Honours Algorithm Design 
At least 18 credits selected from the following 2 lists:  
Software Engineering Specializations (at least 6 credits):  
COMP 409 
3 
Concurrent Programming 
COMP 523 
3 
Languagebased Security 
COMP 525 
4 
Formal Verification 
COMP 529 
4 
Software Architecture 
COMP 533 
3 
Objectoriented Software Development 
Applications Specialities (at least 9 credits):  
COMP 350 
3 
Numerical Computing 
COMP 417 
3 
Introduction to Robotics and Intelligent Systems 
COMP 421 
3 
Database Systems 
COMP 424 
3 
Artificial Intelligence 
COMP 512 
4 
Distributed Systems 
COMP 520 
4 
Compiler Design 
COMP 521 
4 
Modern Computer Games 
COMP 522 
4 
Modelling and Simulation 
COMP 535 
4 
Computer Networks 1 
COMP 557 
3 
Fundamentals of Computer Graphics 
COMP 558 
3 
Fundamentals of Computer Vision 
ECSE 424 
3 
HumanComputer Interaction 
At least 6 credits selected from any COMP courses at the 500level or above. These may include courses on the Software Engineering Specializations and Application Specialities lists. Of the 33 credits, at least 12 credits must be at the 500level or above. Courses at the 600 and 700levels require special permissions. 

NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202. **Students who have successfully completed MATH 150 and MATH 151 are not required to take MATH 222. 
Computer science and mathematics are a natural fit. Advanced computer science subjects ranging from machine learning to cryptography to internet searching are often highly mathematical, so the solid training our joint programs provide is an excellent preparation for graduate school or careers in industry.
COURSE  CREDITS  TITLE 

REQUIRED:  54  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 251 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 310 
3 
Operating Systems 
COMP 330 
3 
Theory of Computation 
COMP 360 
3 
Algorithm Design Techniques 
MATH 222 
3 
Calculus 3 
MATH 235 
3 
Algebra 1 
MATH 236 
3 
Algebra 2 
MATH 242 
3 
Analysis 1 
MATH 315 
3 
Ordinary Differential Equations 
MATH 317 
3 
Numerical Analysis 
MATH 318 
3 
Mathematical Logic 
MATH 323 
3 
Probability 
MATH 340 
3 
Discrete Structures 2 
COMPLIMENTARY:  18  (to be selected from the courses below) 
9 credits selected from COMP courses at the 300level or above (except COMP 364, COMP 396, COMP 400, COMP 431) and ECSE 508.  
9 credits from the set of courses recommended for a Major or Honours Program in Mathematics.  
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202, but it must be replaced with an additional COMP complementary course. Students entering the Joint Major are expected to have completed MATH 133, MATH 140, and MATH 141 or their equivalents. Otherwise they will be required to make up any deficiencies in these courses over and above the 72 credits of courses in the program specification. 
This program provides students with a solid training in both computer science and statistics together with the necessary mathematical background. As statistical endeavours involve ever increasing amounts of data, some students may want training in both disciplines.
COURSE  CREDITS  TITLE 

REQUIRED:  54  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 251 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 330 
3 
Theory of Computation 
MATH 317 
3 
Numerical Analysis 
COMP 360 
3 
Algorithm Design Techniques 
MATH 222 
3 
Calculus 3 
MATH 235 
3 
Algebra 1 
MATH 236 
3 
Algebra 2 
MATH 242 
3 
Analysis 1 
MATH 314 
3 
Advanced Calculus 
MATH 323 
3 
Probability 
MATH 324 
3 
Statistics 
MATH 423 
3 
Regression and Analysis of Variance 
COMPLIMENTARY:  21  (to be selected from the courses below) 
9 credits in Computer Science selected as follows:  
At least 6 credits selected from:  
COMP 423 
3 
Data Compression 
COMP 424 
3 
Artificial Intelligence 
COMP 462 
3 
Computational Biology Methods 
COMP 490 
3 
Introduction to Probabilistic Analysis of Algorithms 
COMP 526 
3 
Probabilistic Reasoning and AI 
COMP 540** 
3 
Matrix Computations 
COMP 547 
3 
Cryptography and Data security 
COMP 564 
3 
Computational Gene Regulation 
COMP 566 
3 
Discrete Optimization 1 
COMP 567 
3 
Discrete Optimization 2 
The remaining credits selected from COMP courses at the 300level or above (except COMP 396, COMP 400, COMP 431).  
12 credits in Mathematics selected from:  
MATH 327 
3 
Matrix Numerical Analysis 
MATH 340 
3 
Discrete Structures 2 
MATH 352 
1 
Problem Seminar 
MATH 410 
3 
Majors Project 
MATH 447 
3 
Stochastic Processes 
MATH 523 
4 
Generalized Linear Models 
MATH 524 
4 
Nonparametric Statistics 
MATH 525 
4 
Sampling Theory and Applications 
MATH 578** 
4 
Numerical Analysis 1 
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202, but it must be replaced with an additional COMP complementary course. **MATH 578 and COMP 540 cannot both be taken for program credit. Students entering the Joint Major are expected to have completed MATH 133, MATH 140, and MATH 141 or their equivalents. Otherwise they will be required to make up any deficiencies in these courses over and above the 72 credits of courses in the program specification. 
Physics provides an analytic problemsolving outlook and basic understanding of nature, while computer science enhances the ability to make practical and marketable applications, in addition to having its own theoretical interest. Graduates of this program may be able to present themselves as being more immediately useful than a pure physics major, but with more breadth than just a programmer.
COURSE  CREDITS  TITLE 

U1 REQUIRED COURSES:  21  
COMP 250 
3 
Introduction to Computer Science 
MATH 222 
3 
Calculus 3 
MATH 223 
3 
Linear Algebra 
MATH 240 
3 
Discrete Structure 1 
PHYS 230 
3 
Dynamics of Simple Systems 
PHYS 257 
3 
Experimental Methods 1 
PHYS 258 
3 
Experimental Methods 2 
U2 REQUIRED COURSES:  24  
COMP 206 
3 
Introduction to Software Systems 
COMP 251 
3 
Data Structures and Algorithms 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 350 
3 
Numerical Computing 
MATH 314 
3 
Advanced Calculus 
MATH 315 
3 
Ordinary Differential Equations 
PHYS 232 
3 
Heat and Waves 
PHYS 241 
3 
Signal Processing 
U3 REQUIRED COURSES:  21  
COMP 360 
3 
Algorithm Design Techniques 
MATH 323 
3 
Probability 
PHYS 331 
3 
Topics in Classical Mechanics 
PHYS 339 
3 
Measurements Laboratory in General Physics 
PHYS 340 
3 
Majors Electricity and Magnetism 
PHYS 446 
3 
Majors Quantum Physics 
PHYS 489 
3 
Special Project 
This program will train students in the fundamentals of biology  with a focus on molecular biology  and will give them computational and mathematical skills needed to manage, analyze, and model large biological datasets. The program includes three integrative features.
COURSE  CREDITS  TITLE 

REQUIRED MATH & STATS COURSES:  6  
MATH 222 
3 
Calculus 3 
MATH 223 
3 
Linear Algebra 
REQUIRED COMPUTER SCIENCE COURSES:  12, 15 or 16  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 251 
3 
Data Structures and Algorithms 
COMP 462 
3 
Computational Biology Methods 
REQUIRED BIOLOGY COURSES:  20  
BIOL 200 
3 
Molecular Biology 
BIOL 201 
3 
Cell Biology and Metabolism 
BIOL 202 
3 
Basic Genetics 
BIOL 215 
3 
Introduction to Ecology and Evolution 
BIOL 301 
3 
Cell and Molecular Laboratory 
CHEM 212 
4 
Introductory Organic Chemistry 1 
REQUIRED JOINT COURSES:  4  
COMP 401 
3 
Project in Biology and Computer Science 
COMP 499 
1 
Undergraduate Bioinformatics Seminar 
COMPLIMENTARY:  27  (to be selected from the courses below) 
6 credits selected from ONE of the following PAIRS of courses:  
MATH 203 
3 
Principles of Statistics 1 
MATH 323 
3 
Probability 
BIOL 309 
3 
Mathematical Models in Biology 
At least 21 credits selected from the following blocks with these three requirements:


COMPUTER SCIENCE BLOCK:  
MATH 240 
3 
Discrete Structures 1 
COMP 273 
3 
Introduction to Computer Systems 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 303 
3 
Software Development 
COMP 304 
3 
Objectoriented Design 
COMP 310 
3 
Operating Systems 
COMP 330 
3 
Theory of Computation 
COMP 335 
3 
Software Engineering Methods 
COMP 350 
3 
Numerical Computing 
COMP 360 
3 
Algorithm Design Techniques 
and all COMP courses at the 400level (except COMP 401, COMP 462 and COMP 499) and 500level (except COMP 561) 

BIOLOGY BLOCK:  
BIOL 300 
3 
Molecular Biology of the Gene 
BIOL 309 
3 
Mathematical Models in Biology 
BIOL 309 
3 
Mathematical Models in Biology 
BIOL 310 
3 
LargeScale Ecology 
BIOL 313 
3 
Eukaryotic Cell Biology 
BIOL 395 
1 
Quantitative Biology Seminar I 
BIOL 435 
3 
Natural Selection 
BIOL 495 
1 
Quantitative Biology Seminar II 
BIOL 518 
3 
Advanced Topics in Cell Biology 
BIOL 551 
3 
Cell Cycle 
BIOL 568 
3 
Topics on the Human Genome 
BIOL 569 
3 
Developmental Evolution 
BIOL 572 
3 
Molecular Evolution 
BIOL 583 
3 
Advanced Biometry 
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202. 
The joint honours programs are particularly challenging and, therefore, particularly rewarding. Many of our best students follow this option and go on to complete PhD s in their choice of computer science or mathematics at the best universities in the world.
COURSE  CREDITS  TITLE 

REQUIRED:  54  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 252 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 310 
3 
Operating Systems 
COMP 330 
3 
Theory of Computation 
COMP 362 
3 
Honours Algorithm Design 
MATH 235 
3 
Algebra 1 
MATH 242 
3 
Analysis 1 
MATH 248 
3 
Honours Advanced Calculus 
MATH 251 
3 
Honours Algebra 2 
MATH 255 
3 
Honours Analysis 2 
MATH 350 
3 
Graph Theory and Combinatorics 
COMPLIMENTARY:  30  (to be selected from the courses below) 
12 credits in Computer Science, selected from COMP courses at the 300level or above (except COMP 364, COMP 396, COMP 431) and ECSE 508.  
18 credits in Mathematics, selected as follows:  
At least 12 credits selected from:  
MATH 354 
3 
Honours Analysis 3 
MATH 355 
3 
Honours Analysis 4 
MATH 356 
3 
Honours Probability 
MATH 370 
3 
Honours Algebra 3 
MATH 371 
3 
Honours Algebra 4 
MATH 387 
3 
Honours Numerical Analysis 
The remaining credits to be selected from Honours courses given by the Department of Mathematics and Statistics.  
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202. Students entering the Joint Honours are expected to have completed MATH 133, MATH 140, and MATH 141 or their equivalents. Otherwise they will be required to make up any deficiencies in these courses over and above the 7275 credits of courses in the program specification. Students must consult an Honours advisor in both departments. 
This is a challenging program providing students with a solid training in both computer science and statistics suitable for entry into graduate school in either discipline.
COURSE  CREDITS  TITLE 

REQUIRED:  54  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 252 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 330 
3 
Theory of Computation 
COMP 362 
3 
Honours Algorithm Design 
MATH 235 
3 
Algebra 1 
MATH 242 
3 
Analysis 1 
MATH 248 
3 
Honours Advanced Calculus 
MATH 251 
3 
Honours Algebra 2 
MATH 255 
3 
Honours Analysis 2 
MATH 356 
3 
Honnours Probability 
MATH 357 
3 
Honnours Statistics 
MATH 533 
3 
Honours Regression and Analysis of Variance 
COMPLIMENTARY:  30  (to be selected from the courses below) 
15 credits in Computer Science selected as follows:  
At least 6 credits selected from:  
COMP 423 
3 
Data Compression 
COMP 424 
3 
Artificial Intelligence 
COMP 462 
3 
Computational Biology Methods 
COMP 490 
3 
Introduction to Probabilistic Analysis of Algorithms 
COMP 526 
3 
Probabilistic Reasoning and AI 
COMP 540** 
3 
Matrix Computations 
COMP 547 
3 
Cryptography and Data security 
COMP 552 
3 
Combinatorial Optimization 
COMP 564 
3 
Computational Gene Regulation 
COMP 566 
3 
Discrete Optimization 1 
COMP 567 
3 
Discrete Optimization 2 
The remaining credits selected from COMP courses at the 300level or above (except COMP 396, COMP 431).  
15 credits in Mathematics selected as follows:  
At least 3 credits selected from:  
MATH 387 
3 
Honours Numerical Analysis 
MATH 397 
3 
Honours Matrix Numerical Analysis 
At least 8 credits selected from:  
MATH 523 
4 
Generalized Linear Models 
MATH 524 
4 
Nonparametric Statistics 
MATH 525 
4 
Sampling Theory and Applications 
MATH 556 
4 
Mathematical Statistics 1 
MATH 557 
4 
Mathematical Statistics 2 
The remaining MATH credits are selected from:  
MATH 350 
3 
Graph Theory and Combinatorics 
MATH 352 
1 
Problem Seminar 
MATH 354 
3 
Honours Analysis 3 
MATH 355 
3 
Honours Analysis 4 
MATH 578** 
4 
Numerical Analysis 1 
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202. **MATH 578 and COMP 540 cannot both be taken for program credit. Students entering the Joint Major are expected to have completed MATH 133, MATH 140, and MATH 141 or their equivalents. Otherwise they will be required to make up any deficiencies in these courses over and above the 7679 credits of courses in the program specification. Students must consult an Honours advisor in both departments. 
The Minor Concentration in Computer Science is designed for students who want to gain a basic understanding of computer science principles. Basic computer science skills are important in many domains. Thus, the Minor Concentration in Computer Science is useful for students majoring in any discipline.
COURSE  CREDITS  TITLE 

REQUIRED:  9  
COMP 202*  3  Introduction to Computing 1 
COMP 203  3 
Introduction to Computing 2 
COMP 206 
3 
Introduction to Software Systems 
COMPLIMENTARY:  9  (to be selected from the courses below) 
COMP 230 
3 
Logic and Computability 
COMP 251 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 280 
3 
History and Philosophy of Computing 
MATH 222 
3 
Calculus 3 
MATH 240 
3 
Discrete Structures 1 
and COMP courses at the 300level or above (except COMP 364, COMP 396, COMP 400, COMP 431)  
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202, but it must be replaced with an additional COMP complementary course. Students must have completed MATH 133, MATH 140, MATH 141 or equivalents in order to begin taking courses in Computer science Programs. This Minor Concentration may be taken in conjunction with any program in the Faculty of Arts with the approval of the advisor of the student's main program and the School of Computer Science. At the time of registration in the penultimate year, students must declare their intent to receive the Minor. Students are strongly encouraged to talk to an advisor of the School before choosing the complementary courses. Approval must be given by the School for the particular sequence of courses the student wishes to use for the Minor Concentration. 
This Supplementary Minor Concentration may be taken only by students registered in the Major Concentration in Computer Science. There may be no overlap in credits taken for this Supplementary Minor Concentration and the Major Concentration in Computer Science. Taken together, these constitute a program very close to the Major in Computer Science offered by the Faculty of Science.
COURSE  CREDITS  TITLE 

COMPLIMENTARY:  18  (to be selected from the courses below) 
Selected from COMP courses at the 300level or above (except COMP 364, COMP 396, COMP 400, COMP 431).  
Students may also select courses from the list below with a maximum of 3 credits of MATH courses:  
ECSE 508 
3 
MultiAgent Systems 
MATH 223 
3 
Linear Algebra 
MATH 318 
3 
Mathematical Logic 
MATH 323 
3 
Probability 
MATH 324 
3 
Statistics 
MATH 340 
3 
Discrete Structures 2 
NOTES:  
This Supplementary Minor Concentration may be taken only by students registered in the Major Concentration in Computer Science. There may be no overlap in credits taken for this Supplementary Minor Concentration and Major Concentration in Computer Science. Taken together, these constitute a program very close to the Major in Computer Science offered by the Faculty of Science. Students with 2 programs in the same department must have a third in a different discipline to be eligible to graduate. 
The Major Concentration in Computer Science represents an indepth introduction to computer science and its subareas. Students interested in further study in Computer Science can consider taking the Supplementary Minor Concentration in Computer Science to constitute a program very close to the Major in Computer Science offered by the Faculty of Science.
COURSE  CREDITS  TITLE 

REQUIRED:  21  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 203 
3 
Introduction to Computing 2 
COMP 251 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
MATH 222 
3 
Calculus 3 
MATH 240 
3 
Discrete Structures 1 
COMPLIMENTARY:  15  (to be selected from the courses below) 
36 credits selected from:  
MATH 223 
3 
Linear Algebra 
MATH 318 
3 
Mathematical Logic 
MATH 323 
3 
Probability 
MATH 324 
3 
Statistics 
MATH 340 
3 
Discrete Structures 2 
At least 3 credits selected from:  
COMP 330 
3 
Theory of Computation 
COMP 350 
3 
Numerical Computing 
COMP 360 
3 
Algorithm Design Techniques 
At least 3 credits selected from:  
COMP 302 
3 
Programming Languages and Paradigms 
COMP 303 
3 
Software Development 
The remaining credits selected from COMP courses at the 300level or above (except COMP 364, COMP 396, COMP 400, COMP 431).  
The following courses may also be taken:  
COMP 230 
3 
Logic and Computability 
ECSE 508 
3 
Logic and Computability 
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202, but it must be replaced with an additional COMP complementary course. Students interested in further study in Computer Science can consider taking the Supplementary Minor Concentration in Computer Science. 
The Major Concentration in Software Engineering focuses on the techniques and methodology required to design and develop complex software systems. It may be used to satisfy part of the requirements for a B.A. degree. This program does not lead to certification as a Professional Engineer.
COURSE  CREDITS  TITLE 

REQUIRED:  30  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 251 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 303 
3 
Software Development 
COMP 421 
3 
Database Systems 
MATH 223 
3 
Linear Algebra 
MATH 240 
3 
Discrete Structures 1 
COMPLIMENTARY:  7  (to be selected from the courses below) 
67 credits selected from:  
COMP 322 
1 
Theory of Computation 
COMP 361D1, 361D2 
3,3 
Software Engineering Project 
COMP 529 
4 
Software Architecture 
COMP 533 
3 
Objectoriented Software Development 
and COMP courses at the 300level or above (except COMP 364, COMP 396, COMP 431).  
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202, but it must be replaced with an additional COMP complementary course. This program does not lead to certification as a Professional Engineer. 
The Minor Concentration in Computer Science is designed for students who want to gain a basic understanding of computer science principles. Basic computer science skills are important in many domains. Thus, the Minor Concentration in Computer Science is useful for students majoring in any discipline.
COURSE  CREDITS  TITLE 

REQUIRED:  9  
COMP 202*  3  Introduction to Computing 1 
COMP 203  3 
Introduction to Computing 2 
COMP 206 
3 
Introduction to Software Systems 
COMPLIMENTARY:  9  (to be selected from the courses below) 
COMP 230 
3 
Logic and Computability 
COMP 251 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 280 
3 
History and Philosophy of Computing 
MATH 222 
3 
Calculus 3 
MATH 240 
3 
Discrete Structures 1 
and COMP courses at the 300level or above (except COMP 364, COMP 396, COMP 400, COMP 431)  
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202, but it must be replaced with an additional COMP complementary course. Students are strongly encouraged to talk to an advisor of the School before choosing the complementary courses. Approval must be given by the School for the particular sequence of courses the student wishes to use for the Minor Concentration. This Minor Concentration in Computer Science program is considered a Science program in the B.A.&Sc. 
The Major Concentration in Computer Science represents an indepth introduction to computer science and its subareas.
COURSE  CREDITS  TITLE 

REQUIRED:  21  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 203 
3 
Introduction to Computing 2 
COMP 251 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
MATH 222 
3 
Calculus 3 
MATH 240 
3 
Discrete Structures 1 
COMPLIMENTARY:  15  (to be selected from the courses below) 
36 credits selected from:  
MATH 223 
3 
Linear Algebra 
MATH 318 
3 
Mathematical Logic 
MATH 323 
3 
Probability 
MATH 324 
3 
Statistics 
MATH 340 
3 
Discrete Structures 2 
At least 3 credits selected from:  
COMP 330 
3 
Theory of Computation 
COMP 350 
3 
Numerical Computing 
COMP 360 
3 
Algorithm Design Techniques 
At least 3 credits selected from:  
COMP 302 
3 
Programming Languages and Paradigms 
COMP 303 
3 
Software Development 
The remaining credits selected from COMP courses at the 300level or above (except COMP 364, COMP 396, COMP 400, COMP 431).  
The following courses may also be taken:  
COMP 230 
3 
Logic and Computability 
ECSE 508 
3 
Logic and Computability 
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202, but it must be replaced with an additional COMP complementary course. This Major Concentration in Computer Science program is considered a Science program in the B.A.&Sc. 
The Major Concentration in Software Engineering focuses on the techniques and methodology required to design and develop complex software systems. It may be used to satisfy part of the requirements for a B.A.&Sc. degree. This program does not lead to certification as a Professional Engineer.
COURSE  CREDITS  TITLE 

REQUIRED:  30  
COMP 202* 
3 
Introduction to Computing 1 
COMP 206 
3 
Introduction to Software Systems 
COMP 250 
3 
Introduction to Computer Science 
COMP 251 
3 
Data Structures and Algorithms 
COMP 273 
3 
Introduction to Computer Systems 
COMP 302 
3 
Programming Languages and Paradigms 
COMP 303 
3 
Software Development 
COMP 421 
3 
Database Systems 
MATH 223 
3 
Linear Algebra 
MATH 240 
3 
Discrete Structures 1 
COMPLIMENTARY:  7  (to be selected from the courses below) 
67 credits selected from:  
COMP 322 
1 
Theory of Computation 
COMP 361D1, 361D2 
3,3 
Software Engineering Project 
COMP 529 
4 
Software Architecture 
COMP 533 
3 
Objectoriented Software Development 
and COMP courses at the 300level or above (except COMP 364, COMP 396, COMP 431).  
NOTES:  
*Students who have sufficient knowledge in a programming language do not need to take COMP 202, but it must be replaced with an additional COMP complementary course. This program does not lead to certification as a Professional Engineer. This Major Concentration in Software Engineering program is considered a Science program in the B.A.&Sc. 