Computer Science


Computer science is concerned in the broadest sense with the study of computation and applications of computing. Its development has been stimulated by collaborations with many areas including engineering, the physical and life sciences, mathematics and statistics and commerce.

Course offerings in the Computer Science program are intended to serve a wide variety of students, ranging from those whose primary interest is in information processing to those interested in applying computing to other fields.



The 2019-20 Academic Calendar contains the requirements for entry into all CS programs. The CS minor is open to any student. The CS major and specialist, information security specialist, and bioinformatics specialist are all restricted enrollment programs that require minimum marks in particular courses (CSC148 and MAT102) and a minimum CGPA.

The CGPA and minimum mark requirements will be set in May and in August 2020, once applications are received for each round of admissions. The requirements may change between the two application periods.

We guarantee that the requirements for either period will not exceed a 3.3 CGPA, 80 in CSC148, and 80 in MAT102. If you meet these requirements, you will be admitted into any CS program to which you apply.

In addition, the 2020 admissions rounds will include several changes as compared to previous years:

1) The requirements for the specialist and major programs may differ.

2) We will only consider marks earned in MAT102H5 (not CSCA67H3 or CSC165H1) when evaluating whether a student has earned the required minimum mark for entry to a program.



Here are common alternate majors to consider that pair well with a CS major or minor:

   * Applied Statistics

   * Communication, Culture Information and Technology (CCIT)

   * Economics

   * Geographical Information Systems (GIS)

   * Mathematics

   * Professional Writing and Communication

If you do not meet the requirements for entry to a CS program in your first year, the department strongly recommends that you plan as if you will graduate with a CS minor. The programs above would pair well with CS and can be completed in three years, meaning that you will stay on schedule to graduate. 


New Robotics Offerings in 2019-20

The MCS department is offering a series of new robotics courses in 2019-20. The first two courses will be held in the fall. Since they are new and students have not had a chance to enroll in prerequisites, we are providing a summary of the expected preparation for both courses.

The two fall courses are:

*CSC376H5: Fundamentals of Robot Design (Instructor: Burgner-Kahrs)*
CSC376 is an introduction to robotics. You'll work with robot systems in the lab while exploring the fundamentals of robotics in terms of design, kinematics, dynamics, motion planning, and control in the lecture.

We will be enforcing CSC209 and CSC258 as prerequisites. CSC338 is required in the calendar, but we will review applications (automatically, with no need for a waiver form) and admit students with permission of the instructor. In lieu of CSC338, MAT224 and MAT232 are recommended.

*CSC477H5: Introduction to Mobile Robotics (Instructor: Shkurti)*
CSC477 is an introduction to mobile robotic systems from a computational perspective. The focus is on core problems in robotics and their theoretical and practical solutions.

We will enforce CSC209, STA256, and CSC373 as prerequisites. MAT244 and CSC338 are also required, according to the calendar, but we will review applications (automatically, with no need for a waiver form) and admit students with permission of the instructor. MAT224, CSC384, and CSC411 are also recommended but will not be required.

In addition, we are anticipating offering a third course, CSC375H5 "Programming Mechatronic Systems", in winter 2020. The calendar prerequisites are CSC209 and CSC258.

We are also offering CSC498H5 in the Winter 20201 (Instructor: Vincent Maccio) which will focus on the analysis of stochastic computing systems via simulation and mathematical modelling. Topics covered include but may not be limited to:

  • Properties of random variables and their implications on system performance
  • Operational laws for stochastic systems
  • Developing and analyzing continuous and discrete time Markov chains
  • How to properly construct, interpret and understand the limitations of a computer simulation
  • Basic queueing models (M/M/1, M/M/c, M/G/1 queues etc.) and their applications.
  • Modelling and analysis of computing systems as a network of queues (Jackson networks, mean value analysis, etc.)

If you have any advising questions, send email to Yvette Ye ( or Andrew Petersen (  Have a great summer!



All CS majors and specialists contain a half-credit writing requirement. The recommended course to satisfy this requirement is CSC290H5, students can also satisfy the writing requirement with any of CCT110H5, ENG100H5, ENG110Y5, HSC200H5, HSC300H5, LIN204H5, WRI203H5.

If a student wishes to substitute another course to satisfy the writing requirement, the student should draft a formal letter naming the replacement course and describing how it meets the desired outcome of familiarity with technical and professional modes of communication. Submit this letter to the Faculty Advisor. If your petition is approved, then the course you propose will be accepted in lieu of CSC290H5 when you are assessed for graduation.

The writing requirement for the program and a CSC290 prerequisite for a course are separate issues. It is possible that an instructor could request that CSC290 be strictly enforced as a prerequisite for their course, but in almost all cases, a course accepted as satisfying the department's writing requirement will also satisfy a course prerequisite 
of CSC290.



Students not enrolled in a computer science major or specialist program are restricted to completing a maximum of three 3rd or 4th year computer science courses. Every term, the department removes students from courses who exceed this limit to give all students a fair chance to enroll in upper year courses.

We typically remove non-program students by the beginning of the second week of the academic term. After the removals are complete, all students are permitted to enroll in as many CS courses as they would like, as long as there is space in the course. We believe this strikes a fair balance between (a) providing access to courses for students in the specialist and major, (b) providing access to courses for students in the minor who have not yet completed three upper year courses, and (c) providing access to extra courses for students in the minor.