uwloo

CS 135Designing Functional Programs

Units
0.50
Faculty
Mathematics
Subject
Computer Science

When it runs

  1. F24
  2. W25
  3. S25
  4. F25
  5. W26
  6. S26
  7. F26
  8. W27
  9. S27

Ran in 5 of the last 7 terms. Winter 2027: scheduled, 2 lecture sections. Spring 2027: schedule not out yet.

An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional style of programming. Syntax and semantics of a functional programming language. Tracing via substitution. Design, testing, and documentation. Linear and nonlinear data structures. Recursive data definitions. Abstraction and encapsulation. Generative and structural recursion. Historical context.

Prerequisites

None listed.

Antirequisites

  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • AE121 - Computational Methods (0.50)
      • BME121 - Digital Computation (0.50)
      • CIVE121 - Computational Methods (0.50)
      • CS115 - Introduction to Computer Science 1 (0.50)
      • CS137 - Programming Principles (0.50)
      • CS138 - Introduction to Data Abstraction and Implementation (0.50)
      • CS145 - Designing Functional Programs (Advanced Level) (0.50)
      • ECE150 - Fundamentals of Programming (0.50)
      • ME101 - Introduction to Mechanical Engineering Practice 2 (0.75)
      • MSE121 - Introduction to Computer Programming (0.50)
      • SYDE121 - Digital Computation (0.50)
    • Not completed any of the following:

Leads to

Fall 2026 sections

Enrolment from UW Open Data, which can trail Quest by up to two days. Instructors and rooms: Schedule of Classes.
SectionClassEnrolledMeets
LEC 001611263 / 90TTh 08:30–09:50
LEC 002613089 / 90TTh 10:00–11:20
LEC 003610477 / 90TTh 10:00–11:20
LEC 004610589 / 90TTh 11:30–12:50
LEC 005611382 / 90TTh 11:30–12:50
LEC 006611476 / 90TTh 11:30–12:50
LEC 007613183 / 90TTh 13:00–14:20
LEC 008613672 / 90TTh 13:00–14:20
LEC 009613771 / 90TTh 14:30–15:50
LEC 010643082 / 90TTh 14:30–15:50
LEC 011890682 / 90TTh 11:30–12:50
TUT 101656966 / 75F 09:30–10:20
TUT 102657084 / 75F 10:30–11:20
TUT 103657167 / 75F 10:30–11:20
TUT 104657280 / 75F 11:30–12:20
TUT 105657371 / 75F 11:30–12:20
TUT 106657420 / 75F 12:30–13:20
TUT 107657579 / 75F 13:30–14:20
TUT 108657683 / 75F 13:30–14:20
TUT 109657782 / 75F 14:30–15:20
TUT 110657876 / 75F 14:30–15:20
TUT 111657959 / 75F 15:30–16:20
TUT 112658071 / 75F 15:30–16:20
TUT 113890728 / 90F 14:30–15:20
TST 2016455866 / 990Oct 8 19:00–20:50
Nov 9 19:00–20:50

Winter 2027 sections

Enrolment from UW Open Data, which can trail Quest by up to two days. Instructors and rooms: Schedule of Classes.
SectionClassEnrolledMeets
LEC 00157570 / 125TTh 11:30–12:50
LEC 701217432 / 9999Online or by arrangement
TUT 10157580 / 65F 12:30–13:20
TUT 10257590 / 60F 13:30–14:20
TST 20157600 / 125Feb 3 19:00–20:50
Mar 9 16:30–18:20

Resources

Around the web

Found by uwloo’s link finder, which checks that each page names CS 135.

Suggest a resource.

Reviewed on UW Flow

86% liked it67% easy84% useful

From 1,154 ratings and 260 comments on UW Flow. The most helpful comments, quoted as written, without names. Read them all on UW Flow.

  • https://pastebin.com/F4FdfZGQ

    Dec 2022 · liked it · 4 found this helpfulOn UW FlowRemove this

  • It is hard for me to believe that Racket is useful.

    Sep 2025 · didn’t like it · 3 found this helpfulOn UW FlowRemove this

  • Good for improving critical thinking in programming if you are a beginner.
    The course goes from walking baby steps to running 100m in Olympics after they introduce recursion.

    Dec 2022 · didn’t like it · 3 found this helpfulOn UW FlowRemove this

  • First half of the course was pretty chill, and then the weekly assignments got gradually more time-consuming after the second midterm. Lectures tend to be very straightforward and clear. It is a very well-structured course. Racket is not as bad as some other described to be, it is great for teaching the contents of this course, which is to design programs methodically. Requires grave commitment if you are new to programming.

    Nov 2022 · liked it · 2 found this helpfulOn UW FlowRemove this

  • Not a fan of Racket, but don't blame Racket if you do bad. I ended up with 74%, which for a CS major is not really good and I blamed Racket. Racket is possibly one of the best languages for learning recursion so enjoy this course. Extremely useful course, but was difficult for me.

    Apr 2017 · didn’t like it · 2 found this helpfulOn UW FlowRemove this

Discussed on r/uwaterloo

3,109 posts and comments in 1,846 threads mention CS 135, April 2011 to December 2024. Quoted word for word, newest first; each reply sits under the post and the comment that started its branch. Search r/uwaterloo for newer posts.

Fall 2024

Failed 1 course with 2 withdrawal out of 5 during 1A, 25 points, 7 comments

u/Herrscher_void5637: “Honours Math student, failed an elective course, withdrawal Math137 and CS135, and also a Math135 that’s between 50% and 60%. Probably retaking the whole term in 1B. …”

u/Interesting_Bed6243: “Happens to most of us. I got a 50 in Math 135, a 60 something in Math 137, and withdrawal from cs 135. Try to find out what you did wrong. Going to a different university may not be better.”

View on RedditRemove this

compsci program 1 point, 16 comments

“could anyone tell me what sets apart waterloo's comp sci program from other comp sci programs in other universities? would be greatly appreciated :)”

u/Opening_Kiwi6441: “as far as the actual academics go, i’d say it’s on par with most other unis, like UofT, UBC, McGill, Mac, etc. …”

u/mreifslp: “… For CS 145 (and I think CS 135), it covers functional programming, which I'm pretty sure the only other Canadian uni that starts with it is UBC. CMU also has a similar course. Other unis might teach some of the content in third year and above. …”

View on RedditRemove this

Are there participation/bonus marks in MATH 136 or 138 3 points, 10 comments

“Title. Just wondering because if it weren't for the bonuses my GPA for 1A would've dropped.”

u/Virtual-Violinist-54: “blud wants marks for participating in math courses💀”

u/TempAccJune: “MATH 135, 137, CS 135”

u/TempAccJune: “For CS 135 it is the iClicker multiple choice questions. For MATH 137 it is a daily mathematize problem, and excuse me there are no participation marks for MATH 135”

View on RedditRemove this

Failed a CS course, feeling lost. 18 points, 6 comments

u/happylogicgate: “fwiw iirc CS 135 is a fairly commonly failed course. You can't do anything about your failed course or your program of choice at this point, so just accept it and enjoy your winter break. Your profs/TAs think you deserve that mark. …”

u/RealMrG005e: “Cs135/racket is just a big pile of shit(forgive me), it’s an awkward language. Getting a low mark doesn’t mean anything. Racket is completely different from python and c. You can still do well in next term cs116/136. I got 70ish in 135 and a high 90 in 136.”

u/Interesting_Bed6243: “You can do it, just take birdy electives like from AFM and Econ. Trust me it will compensate. A lot of guys mess up on CS 135, when you take it again you will do much better since you already know the content.”

u/rgtb123: “I made a similar post about me failing cs135. I got a 53 on the midterm but a 46 final which means i definitely bombed the final. The parents part is so relatable. They think I’m super smart and im acing uni rn but i really fucked cs up and i dont know how to tell them. …”

View on RedditRemove this

Math 128 or math 138? 9 points, 16 comments

“Just finished 1A honours math and got a 75 in math 137 which I'm pretty happy abt considering the fact that i struggled a lot with it 😭😭😭 i noticed that I struggled the most with writing calc proofs …”

u/fasdfsads: “Just take 138, if you got a 75 in 137 you aren't by any means lacking or unprepared for 138. In fact, I believe a 75 would put you above the class average.”

u/fasdfsads: “Well for 137 it was 69 last year and low 70s for math 135 and cs 135.”

View on RedditRemove this

Failed CS 135 54 points, 28 comments

u/rgtb123: “Grades just came out and I got like a 46 final on CS 135. I’m extremely disappointed and lowkey considering switching out of CS. Came into 1A with high 90s in highschool. Leaving 1A failing the course im supposed to major in. …”

u/Intelligent-Show-815: “… CS 135 is the backbone of ur cs courses and if you failed I would go into why you failed? Dropping from advanced defn had an effect but look at ur assignements how did they go? Your option now is to just retake cs 135 and move on. …”

u/rgtb123: “… And as for retaking cs 135, I’m in stream 2 for co-op and my co-op term is in the spring. So I would be going into my co-op term without cs136. How would all this affect my co-op? …”

u/Correct-Following374: “Don’t worry your not the only one there’s many people that failed CS135 I know many of them personally in CS as well don’t overthink it just work hard next term and try and understand what your writing and try and do it on paper and don’t like fix ur code based on the feedback …”

u/opportune_pasta: “… You should retake CS 135 immediately, and you’re probably gonna have to take a course on your co-op to make up ground. …”

u/nickphys: “13 years ago, I also failed CS135. I was in my 1A term of Honours Physics, and had taken it as an option. Coming out of high school, I was used to getting grades in the 90s, so it was a huge shock to me, and it seemed like the end of the world. …”

u/CSplays: “Don't transfer out, that'll be a mistake you will certainly regret. Many people struggle with CS 135 because it's different to the typical background students have coming in, so just talk to your prof and see how you can improve the second time around.”

u/Fancy_Bear_8352: “i failed cs135 first year by 1.2 marks. they dont care abt u in first year so they didnt bump me even after pointing out where i could get more marks in the final exam. …”

u/soothinglove02: “retake cs135!!! exact same thing happened to me lol trust me, just retake 135, ur gna be fine”

u/rgtb123: “Im not worried about retaking cs135 and failing it. Im just concerned how me failing is gonna affect my other semesters and co-op and stuff. If i take cs135 a 2nd time, im definitely gonna put more work and try to get a good grade”

View on RedditRemove this

Check it elsewhere for Fall 2026

Calendar versions

Undergraduate Calendar