Information for CS major students


The David R. Cheriton School of Computer Science is part of North America’s only dedicated Faculty of Mathematics. As a CS major student (BCS or BMath CS), you have the opportunity to build a strong foundation in computer science and math. In addition to the CS programs, there are many other fields of study you can explore. 

This page will guide you through your academic journey as a CS major student. It includes how, when, and what courses to take; the programs available and its requirements; how to enhance your degree, etc. Click on the links below to quickly access major sections of this page:


How to enrol into courses

You can use Quest to enrol into courses. If you have difficulty enrolling into CS courses, then please review our course selection and enrolment pages.

For non-CS courses, you will need to go to the appropriate person/office to enrol: 

  • For first year Math courses, go to the Math Undergrad Office or to the First Year Advising Office (MC 4023).
  • For other Math courses, go to either the instructor or the advisor of the department offering the course.
  • For courses in other Faculties, you'll most likely need to see the instructor. Some courses may require you to see their advisor instead.

Course selection

Step one

Course selection for a future term: Participating in course selection/pre-enrollment is vital to better your chances of enrolling into your preferred courses

Course enrollment

Step two

Enrolling into CS courses during the add/drop period: Information and process about how to enrol into CS courses during the add/drop period and policy on CS courses


 Course Planning

Below are links that will guide you on which courses to take and when. The top three links will direct you to which courses are typically taken together in the first two or three years in CS and includes a visual map of the CS and Math courses you need to progress in your academic career. The last three links below provide you a list of courses available here at UW, including their description and terms of offering, to help you find courses and plan you degree. 

    Suggested course sequence

    Suggested Course Schedule: Term-by-term list of courses most students should take

    CS prerequ chart

    CS prerequisite chart: Shows you the prerequisite course(s) you must pass before you can take the next CS course

    Math prerequ chart

    Math prerequisite chart: Shows you the prerequisite course(s) you must pass before you can take the next Math course


    University Course CalendarCS course - calendar description: Contains brief descriptions of CS courses and may help you determine whether a course is interesting to you

    Course descriptionCS course - detailed description: Provides more detailed description, learning objectives, and links to course website for each CS course

    CoursesAll courses: Not sure what to take for your electives? Explore the University Calendar which contains brief descriptions of all the courses offered at UW



    The official degree requirements are in the University Calendar, but can also be found as checklists.


    CS checklists: A easy-to-fill checklist that summarizes the requirements for your degree and help you figure out which courses you need to take

    University Calendar

    University calendar plan requirements: Official description of each degree's requirements


    BCS vs Bmath CS 

    Download "What is the difference between a BCS and a BMath (CS) degree?"

    As a CS major student, you can easily change your program from BCS to BMath CS (and vice versa); both are excellent degrees. Choosing BCS or BMath CS is based on how you see your future unfold, which depends on your interests and the courses you decide to take.

    This table highlights the difference in program requirements:

    BCS vs Bmath CS

    Courses BCS BMath CS
    Computer Science

    15 CS courses required (two from CS 340-398; 440-489)

    15 CS courses required (must take CS 360/365 and CS 370/371

    Math 7 math courses 12 math courses (requires Math 235, Math 237, and 3 other math courses)
    Non-Math Electives 10 non-math electives 10 non-math electives
    Electives 8 electives 3 electives

    Can not be combined with other Math major programs

    More flexible

    Can be combined with other Math majors programs

    Provides a stronger background in Math

    If you'd like to have the flexibility of combining CS with another area of study (for example, by taking one or two minors) or you'd like to broaden your knowledge by taking courses in interesting subject areas, consider a BCS. With a BCS degree, you also have the freedom to take extra CS courses to increase your CS knowledge even more. If you believe your future will include lots of math (graphics of any sort, crunching numbers, probability, stats, etc.) or grad school in a wide range of subject areas, then consider a BMath CS degree.

    To switch from BCS to BMath CS and vice versa, complete and submit a Math plan modification form to a CS Advisor for approval.

    How can I add an option, minor, joint, or double major to my CS major?

    To add an option, minor, joint or double major program in Math to your CS program, you'll need to fill out a Math plan modification form. You must have the advisor from each department/school sign off on the form. Note that you must be in the BMath CS program to add a second Math major. 

    If the option, minor, joint program is not offered by the Faculty of Math, then you will need to complete the Registrar's plan modification form. You must have the advisor from each department/school sign off on the form. 

    How to add a specialization

    Specializations (previously "options") are special designations attached to a specific degree. In CS, we have seven different specializations that you can add to either your BCS or your BMath CS. Adding specializations is an option and not a requirement for you to graduate from either BCS or BMath CS. 

    If you do decide to pursue a specialization, then you should should carefully review courses, their prerequisites, and when courses are offered to ensure that you are able to meet the requirements for the specialization in a timely manner. You may find the list of specific courses required for each specialization on our plan requirement checklists page (or the undergraduate calendar).

    Note below that some specializations have limited capacity and may be competitive (please see below).

    Artificial Intelligence, Bioinformatics, Business, Human Computer Interaction, and Software Engineering

    To add a specialization, complete a plan modification form and send the form to a CS advisor to sign off. You can add a specialization any time from when you start in CS until you are ready to graduate. However, we only recommend adding a specialization once you are committed to completing it and second year is usually a good time to declare your plans.

    In some cases, there are courses needed for the specialization that requires you to take its prerequisites, but the prerequisite is not noted on the checklist. For this reason, you may be required to take more courses beyond what is noted on the checklist.  As an example, if you decide to take ECE380 and SE380 for the AI specialization, then you may want to take MATH213 which is an acceptable alternative for its noted prerequisites.

    Computational Fine Arts

    To enrol in the Computational Fine Arts specialization, you need to complete a first year art studio course (either FINE 100 or FINE 130) and a portfolio review with a Fine Arts advisor. Complete a Math plan modification form, have the Fine Arts advisor sign off after your portfolio review, and then bring it to a CS advisor for final sign-off.

    Digital Hardware 

    If you want to add the Digital Hardware specialization, then you will need to apply during your 1A term in the Fall and have a minimum cumulative average of 75%. Enrolment is limited and competitive. 

    BCS Data science

    Beginning in September 2017, the University of Waterloo introduced two Data Science programs: the BCS (Data Science) and the BMath (Data Science). The BCS (Data Science) is administered by the School of Computer Science. The BMath (Data Science) is administered by Statistics and any questions about this program should be referred to the Statistics advisors.

    The BCS DS is a stand alone program and cannot be combined with any of the specializations offered to the BCS or BMath CS programs.

    How to apply for BCS DS

    To be eligible to apply to the BCS (Data Science), students must be 1) already enrolled in a Computer Science program and 2) have completed or be in the process of taking STAT 231.

    Applications must be submitted here. Late applications will not be accepted. Students are not able to combine the BCS Data Science plan with the AI option/specialization.

    Related plans