Step 2 - Select your computer science (CS) course

Students come to the University of Waterloo with widely varying backgrounds in computer science and with varying goals for their computer science education. We have a variety of introductory course streams to address your needs, as summarized in the following diagram:

chart indicating the prerequisites of CS first-year courses

  • 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 enriched Mathematics (MATH) courses (MATH 145 and MATH 147) may also be interested in CS 145.

Admission to CS 145

Students who have received 81+ in the Euclid Math Contest or a 58+ in the Canadian Computing Competition (CCC) will be able to automatically choose CS 145 during the course selection process between June 16-22, 2021.

Students who received below those scores or did not complete those contests should contact the instructor, Gord Cormack, with the following information:

  • Your full name and UW student number.
  • Your Grade 11 and 12 high school marks. This does not have to be an official transcript.
  • Your score on the Euclid contest, CCC, and other high-school academic contests you may have written.
  • Information about extracurricular activities and interests as you might have provided on your AIF (Admission Information Form) as part of your application to the Faculty of Mathematics.
  • Any other information that you think maybe pertinent to your case.

You can also review more information about CS 145 here

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

Any of the following combinations are acceptable:

  • CS 115 and CS 116
  • CS 115 and CS 136
  • CS 135 and CS 116
  • CS 135 and CS 136
  • CS 135 and CS 146
  • CS 145 and CS 116
  • CS 145 and CS 136
  • CS 145 and CS 146

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.)

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