REW

What Is The Difference Between CS 115 And CS 135?

Published Aug 29, 2025 4 min read
On this page

At the University of Waterloo, CS 115 and CS 135 are introductory computer science courses designed for first-year mathematics students, but they differ significantly in audience, depth, and the path they provide for future studies.

Both courses teach foundational programming and design principles using the functional language Racket and assume no prior programming experience. However, CS 135 is a more rigorous and intensive version of the material, intended for computer science majors and highly motivated students, while CS 115 is a slightly slower-paced, less demanding course suitable for non-majors or students with only a minor interest in CS.

Audience and difficulty

The most crucial distinction between CS 115 and CS 135 is their target audience and the expected level of difficulty.

CS 115: For a broader audience

  • Target students: This course is recommended for most students in the Faculty of Mathematics who do not plan to major in computer science.
  • Difficulty: It is a more foundational course with less material, making it a more manageable introduction to computer science for those with less interest or aptitude in the subject.
  • Goal: The course is designed to provide skills applicable to other areas of study where computational thinking is useful.

CS 135: For majors and high-achievers

  • Target students: CS 135 is suitable for computer science majors, computational mathematics students, and other motivated students who want a more in-depth study of the material.
  • Difficulty: The course is more demanding and time-intensive than CS 115, even for students with no prior programming experience, who are expected to work hard to succeed.
  • Goal: The additional rigor prepares students for advanced studies and the higher-level courses required for a Computer Science major.

Curriculum and course depth

While both courses cover the fundamental principles of program design using functional programming and the Racket language, CS 135 goes into greater depth and covers more advanced topics.

Shared foundationsBoth CS 115 and CS 135 focus on:

  • Functional programming concepts.
  • Algorithmic thinking and program design.
  • Recursion and recursive data definitions (lists and trees).
  • Abstraction and encapsulation.

CS 135's additional depthCS 135 delves deeper into these topics and includes more advanced concepts not covered in CS 115, such as:

  • Generative recursion: In addition to structural recursion, which is based on the shape of the data, CS 135 explores generative recursion, which generates new problems.
  • Advanced abstraction: Students work with more complex functional abstractions, including higher-order functions (functions that produce other functions).
  • Accumulative recursion: This technique is used for optimizing certain recursive processes.
  • Historical context: The course also provides a brief history of computer science, touching on key figures like Turing and Godel.

Pathways and course sequences

Your choice between CS 115 and CS 135 determines your path through the subsequent introductory computer science courses.

The CS 115 path

  • First course: CS 115.
  • Successor: After completing CS 115, students can take CS 116, which continues to explore programming fundamentals.
  • Progression: This sequence provides a solid foundation for those pursuing a minor in CS or using programming skills in other disciplines.

The CS 135 path

  • First course: CS 135.
  • Successor: Following CS 135, students are prepared to take CS 136, a more advanced course that transitions to imperative programming concepts.
  • Progression: This is the standard sequence for computer science majors and students in computationally intensive programs.

Flexibility and switching between courses

Recognizing that students may find their initial course selection doesn't match their skills or motivation, the University of Waterloo allows for transferring between the two courses.

  • Switching down: Students in CS 135 who find the workload or material too challenging can transfer to CS 115 within the first few weeks of the term.
  • Switching up: While not as common, some students who excel in CS 115 may be able to transition to a CS 135/136 sequence, though they should consult an academic advisor.

Deciding which course to take

When choosing between CS 115 and CS 135, consider the following factors:

Feature CS 115 CS 135
Pace Slower and less demanding. Faster and more rigorous.
Depth Focuses on core, foundational concepts. Covers additional, more advanced topics.
Future path Leads to CS 116. Good for minors and general interest. Leads to CS 136. Required for CS majors.
Workload Manageable, even for students new to programming. More time-intensive, requires dedication.
Prior experience No experience necessary; caters to true beginners. No experience necessary, but pace is fast.

Ultimately, prospective students should consider their program requirements, academic goals, and personal interest in computer science when making their decision. If you are a CS major, a computationally-focused math student, or want a challenge, CS 135 is the appropriate choice. If you are a math student looking for a less-intensive programming introduction or are considering a minor, CS 115 is a perfectly suitable option.

Enjoyed this article? Share it with a friend.