CS 135Designing Functional Programs
- Units
- 0.50
- Faculty
- Mathematics
- Subject
- Computer Science
When it runs
- F24
- W25
- S25
- F25
- W26
- S26
- F26
- W27
- 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:
- Not completed nor concurrently enrolled in any of the following:
Leads to
Fall 2026 sections
| Section | Class | Enrolled | Meets |
|---|---|---|---|
| LEC 001 | 6112 | 63 / 90 | TTh 08:30–09:50 |
| LEC 002 | 6130 | 89 / 90 | TTh 10:00–11:20 |
| LEC 003 | 6104 | 77 / 90 | TTh 10:00–11:20 |
| LEC 004 | 6105 | 89 / 90 | TTh 11:30–12:50 |
| LEC 005 | 6113 | 82 / 90 | TTh 11:30–12:50 |
| LEC 006 | 6114 | 76 / 90 | TTh 11:30–12:50 |
| LEC 007 | 6131 | 83 / 90 | TTh 13:00–14:20 |
| LEC 008 | 6136 | 72 / 90 | TTh 13:00–14:20 |
| LEC 009 | 6137 | 71 / 90 | TTh 14:30–15:50 |
| LEC 010 | 6430 | 82 / 90 | TTh 14:30–15:50 |
| LEC 011 | 8906 | 82 / 90 | TTh 11:30–12:50 |
| TUT 101 | 6569 | 66 / 75 | F 09:30–10:20 |
| TUT 102 | 6570 | 84 / 75 | F 10:30–11:20 |
| TUT 103 | 6571 | 67 / 75 | F 10:30–11:20 |
| TUT 104 | 6572 | 80 / 75 | F 11:30–12:20 |
| TUT 105 | 6573 | 71 / 75 | F 11:30–12:20 |
| TUT 106 | 6574 | 20 / 75 | F 12:30–13:20 |
| TUT 107 | 6575 | 79 / 75 | F 13:30–14:20 |
| TUT 108 | 6576 | 83 / 75 | F 13:30–14:20 |
| TUT 109 | 6577 | 82 / 75 | F 14:30–15:20 |
| TUT 110 | 6578 | 76 / 75 | F 14:30–15:20 |
| TUT 111 | 6579 | 59 / 75 | F 15:30–16:20 |
| TUT 112 | 6580 | 71 / 75 | F 15:30–16:20 |
| TUT 113 | 8907 | 28 / 90 | F 14:30–15:20 |
| TST 201 | 6455 | 866 / 990 | Oct 8 19:00–20:50 Nov 9 19:00–20:50 |
Winter 2027 sections
| Section | Class | Enrolled | Meets |
|---|---|---|---|
| LEC 001 | 5757 | 0 / 125 | TTh 11:30–12:50 |
| LEC 701 | 2174 | 32 / 9999 | Online or by arrangement |
| TUT 101 | 5758 | 0 / 65 | F 12:30–13:20 |
| TUT 102 | 5759 | 0 / 60 | F 13:30–14:20 |
| TST 201 | 5760 | 0 / 125 | Feb 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.
- CS135 Course website · student.cs.uwaterloo.ca Remove
- CS135 Course Notes Course notes · jaidenratti.com · from Jaiden Ratti’s site, CS webring Remove
- CS135 | Anthony Zhang Course notes · anthony-zhang.me · posted on r/uwaterloo May 2021 Remove
- CS 135 | SCS Other · cs.uwaterloo.ca · posted on r/uwaterloo Jul 2016 Remove
- CS 135: Course Materials and DrRacket Other · web.archive.org · posted on r/uwaterloo Jun 2016 Remove
- Redirect Notice Other · google.ca · posted on r/uwaterloo Feb 2021 Remove
- https://cs135.ml Other · cs135.ml · posted on r/uwaterloo Oct 2020 · gone now; archived copy from Oct 2020 Remove
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
chat am i cooked 6 points, 5 comments
“honours math student - got a 46 on cs 115 and a 54 on math 137. what are my options/next steps for 1b?”
u/davidnguyen55535: “Retake cs135, take math 128 and 136 with 2 electives”
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.”
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. …”
sort of failed cs135 but im enrolled in 136 so what happens? 11 points, 6 comments
u/Ok_Music_9008: “Did you get above 50 but below 60 in CS135? You can also take CS116 and try to get above a 70 average to take CS136 as well if that's what you meant by sort of failed, otherwise you'll prob have to retake 135 next term yea”
u/grinds06: “no i failed cs135, so below a 50”
Failed 1A term (Honors Math Co-op) Need Advice 37 points, 17 comments
u/ThinSatisfaction544: “… I WD'd CS 135 and failed Math 135 (37%) and 137 (25%). My communication and elective bought up my average to this. As I do not have access to the advisors during winter break, I request and am open to any advice. …”
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”
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. …”
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.”
Is it possible to get CS135 exam re-marked? 3 points, 1 comment
Failed CS135, seriously feeling lost. 1 point, 1 comment
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”
Advice on 1B CS course schedule 5 points, 5 comments
u/Ok_Music_9008: “… got high 80's to 90's in all of their courses, and ngl I was kind of struggling with CS135 and MATH 135 and 137, and I ended the term at around the high 60's to low 70's for these courses. …”
Check it elsewhere for Fall 2026
- Undergraduate Calendar, 2026–27The official entry
- Requirements for Fall 2026Waterloo’s requisite checker
- Schedule of Classes, Fall 2026Instructors, rooms, live seats
- Quest Class SearchWhere you enrol
- Course outlinesSyllabi from past terms (UW login)
- UW FlowStudent ratings and reviews
- WClassesPast sections back to 2004, and who taught them