Step 2

Step 2 - Select your computer science (CS) course

Students come to the University of Waterloo with widely varying backgrounds in computer science and with different goals for their computer science education. We have a selection of introductory course streams to address your needs. The CS course you select in your 1A term will depend on your programming experience prior to arriving:

  • CS 115 is the first course in programming for students with little or no programming experience. It covers most of the material from the first eight weeks of CS 135.

  • CS 135 is the most commonly taken first computer science course for computer science majors. It has been designed to provide challenges for students with prior programming experience while remaining accessible to those who lack such experience. It uses the programming language Racket, which allows students to focus on fundamental concepts of computer science and their relationship to mathematics while laying foundations for future study in the field.
  • CS 145 is an enriched computer science course intended for 5-10% of incoming students. It covers the content of CS 135 and additional topics. Students must be self-motivated, have a strong interest in learning computer science, and have a strong aptitude in mathematics and logical reasoning. Prior experience is not necessarily an asset; flexibility and adaptability are more important. Students who are considering the advanced Mathematics (MATH) courses (MATH 145 and MATH 147) may also be interested in CS 145.

If you have specific questions about which CS course to choose, please contact Sandy Graham, our high school liaison for computer science.

Which Computer Science course should I take?

CS Background

  1. I don’t have any computing background.
  2. I can write computer programs using functions I’ve designed.
  3. I can write programs using arrays or lists and avoiding global variables.
  4. I have written complex programs like a game or using a graphical UI.


  1. I’m interested in non-CS programs like Stats, FARM, Math&Bus, etc. 
    The thought of programming a computer intimidates me a bit.
    I want my CS course to allow time for other activities.
  2. I’m headed for a career that requires computing skills.
    I enjoy the challenge and reward of getting something to work and am willing to put in the time required to do that.
  3. If there are three different ways to do something, I want to master them all and am willing to put in the time required to do that.
    I find computers and computing intrinsically interesting.
Infograph of three computer science courses: CS115, CS135, CS145

Each student in the Mathematics faculty is required to take two computer science courses

Any of the following combinations are acceptable:

Computer science majors (including Bachelor of Business Administration (BBA)/Bachelor of Computer Science (BCS) and Bachelor of Computing and Financial Management (BCFM) students) should start in CS 135 or CS 145. Most computer science majors will take CS 135 and CS 136, which are designed to accommodate incoming students regardless of previous programming experience. Students who want to become computer science majors after taking CS 115 will need to take CS 116 and CS 136. Any of the introductory computer science course combinations provides suitable preparation for the computing minor.

Students starting with CS 115 must complete CS 116 and CS 136 if they wish to take subsequent computer science major courses. (Those starting with CS 135 or CS 145 may need to complete a supplementary learning unit to become familiar with the Python programming language before taking second-year computer science minor courses.)

Admission to CS 145

Admission to CS 145 will be based on your scores in the Euclid Math Contest or the Canadian Computing Competition (CCC). Scores for admission for Fall 2024 are 50+ in the senior Canadian Computing Competition (CCC) or 80+ in the Euclid contest.

If none of the above criteria applies to you then you can choose to be added to the CS 145 waiting list during the course selection process. After course selection the MUO will email an information package to all students who select advanced CS. The package will include some example questions similar to what would be covered in the course. You will then be asked to confirm your choice of CS courses using a webform that will be included in the email.

You can also review more information about CS 145 here