uwloo

CS 146Elementary Algorithm Design and Data Abstraction (Advanced Level)

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 2 of the last 7 terms. Winter 2027: scheduled, 3 lecture sections. Spring 2027: schedule not out yet.

CS 146 is an advanced-level version of CS 136.

Prerequisites

  • Earned a minimum grade of 75% in each of the following:
    • CS145 - Designing Functional Programs (Advanced Level) (0.50)

Corequisites

  • Completed or concurrently enrolled in:
    • CS136L - Tools and Techniques for Software Development (0.25)

Antirequisites

  • Not completed nor concurrently enrolled in any of the following:
    • CS116 - Introduction to Computer Science 2 (0.50)
    • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
    • CS137 - Programming Principles (0.50)
    • CS138 - Introduction to Data Abstraction and Implementation (0.50)

Leads to

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 00158160 / 100TTh 14:30–15:50
LEC 00260230 / 100TTh 16:00–17:20
LEC 7012286135 / 9999Online or by arrangement
TUT 10158350 / 100W 11:30–12:20
TUT 10260240 / 100W 13:30–14:20
TST 20158180 / 200Mar 8 19:00–20:50

Resources

Around the web

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

Suggest a resource.

Reviewed on UW Flow

91% liked it43% easy89% useful

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

  • My thoughts on the course play on both sides of the good and bad spectrum. Keep in mind, my perspective is subjective, and I'm not a CCO or extremely gifted at coding, I'm a pretty average CS student. (WARNING: this review will be long as I want to give an honest and clear overview of the course)
    The course split is about 70/30 Racket and C, but BE WARNED, the Racket part is not what you may expect it to be (which is what happened to me).
    C:
    The C part of the course pretty much teaches everything that is taught in CS136, with the addition of some interesting facts here and there, and more enjoyable assignments. Some of them will have you working on them for hours at a time, but I…

    Apr 2023 · liked it · 6 found this helpfulOn UW FlowRemove this

  • Praise Haskell Curry

    Mar 2016 · 3 found this helpfulOn UW FlowRemove this

  • ===TL;DR: If you came from CS 135 and are thinking of upgrading, know that it'll be a big and hard commitment, but IT WILL WORTH YOUR TIME!!!===
    I came from CS 135, which in terms of difficulty was a BIG jump. I'm not particularly bright and smart myself compared to the CS geniuses here, and I often have somewhat of an impostor syndrome, being surrounded by so many people that are obviously way smarter than me - I couldn't understand a concept during lectures, and there will be students asking Brad questions already, and of course I couldn't even understand what they were asking lol...
    Buuut I have to say, the contents are very very useful and fun, although I need to spend extra time…

    Apr 2025 · liked it · 2 found this helpfulOn UW FlowRemove this

  • CS 146 is a challenging course, and truly grasping its content is no small feat if you haven't encountered the material before. Instead of assignments, you are given 25 "Assignment Questions" of vastly varying difficulty. The course begins relatively ~~SIMPL~~ simple and adjacent to 136 assignment (but not lecture) wise, but then deviates dramatically to compiler/interpreter creation, advanced memory management in C and fantasy languages. Due to the extra content, mandatory weekly tutorials that served as extra lectures were added, effectively giving the course 4+ hours of lecture per week. If you put the time and effort in, you will come out with a much better understanding of low-level…

    Apr 2023 · liked it · 2 found this helpfulOn UW FlowRemove this

  • The course in my opinion was all over the place. It covered C memory management and writing interpreters and compilers for racket and a few made up languages. I wish they clarified this in the course description since this has nothing to do with what I want to go into, and in my opinion is fairly impractical unless you go into security research or research into formal languages. I also hate how the profs keep writing code on paper, since there were many typos in the code. The ending was also fairly all over the place since it covered many different unrelated topics at a very shallow level, such as garbage collection, continuations, trampolining, Hoare logic etc. Also, a lot of the concepts…

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

Discussed on r/uwaterloo

341 posts and comments in 265 threads mention CS 146, 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

How cooked am I next term 33 points, 27 comments

“https://preview.redd.it/sja2uyioa4ae1.png?width=652&format=png&auto=webp&s=da6f9cb5427cd275561128caa48f6851333be88b I am probably going to regret this. Is this too big of a course load?”

u/shitfartpissballs: “148 is absolutely fucked”

u/Outside_Buddy6449: “… Also, if you're into CS, you should take CS 146, it's a lot of fun and imo a lot better than CS 145. MATH 146 is usually okay but I heard Spiro can be hard if you have him. …”

u/MapleKerman: “I know a guy who's doing this next term except CS 146 instead of 136 and ENGL 101B instead of PHYS 175. He had a 95 this term. You'll be fine.”

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/ApocalypseCalculator: “this isn’t the greatest example, but in CS146, we did compilers, which for reference is something covered in the latter half of second year for UofT CS. …”

u/mreifslp: “… For CS 146, the first half covers imperative programming in C, which is pretty typical, covering basics of C, pointers, arrays, strings, and so on. We also covered Haskell and building an interpreter in it (talking about things like environments and closures). …”

View on RedditRemove this

Should I drop to CS146 1B 1 point, 7 comments

u/Master-Personality26: “I really like working on personal projects, so I want to ask if CS136 will take less time for me to complete and get similar marks to CS146. I am in CS145 right now, and I think it's fine (I got \85 on midterm). Assignments for CS145 normally take around 2 to 3 hours. Thanks!”

View on RedditRemove this

CS 1B courses 1 point, 3 comments

u/anonim0791: “How doable (with good grades) would be CS 2B: || || |CS 136L, CS 146, MATH 146, MATH 148, STAT 230, ECON 201?| | |”

u/amongus44: “I didn't do math 14 but ik the cs146 + math146 + math148 combo is not uncommon, you'll have plenty of people going through the exact same thing I think if you're taking all 14X and you feel somewhat confident if you took 14X this term you'll find stat230 pretty easy Econ201 also …”

View on RedditRemove this

Spring 2024

Is it possible to take CS 241E during co-op? 5 points, 5 comments

“My coop term is in the fall, and my coop is hybrid in Toronto, so I can only attend one lecture per week in person (rather than both), and I cannot attend the tutorial. …”

u/TheAllAwesome: “I remember the notes were really good and you could learn purely off of that. (Source: skipped every class and did fine)”

u/Time_Technology_1938: “Thanks. How about skipping tutorials, would they provide notes for this too? Since I remember CS146's tutorial covered some stuff that not in lectures”

View on RedditRemove this

CS135 vs CS145 1 point, 3 comments

“What are the main differences between the classes. Is CS145 more theoretical and is it worth taking”

u/Upset-Feeling4109: “I took both CS145 and CS146 this past year, and I think 145 was alright but 146 was not worth it. Both have significantly harder material than CS135 and CS136, and it takes up much more time when time is precious for preparing and applying for co-ops. …”

View on RedditRemove this

cs126 1 point, 18 comments

u/CSplays: “Don't go into math with the hope to transfer. If you want to study CS, you should consider another university. If you do not care, then go for it. Also you need a high avg overall (good math course grades and stellar CS 136 or CS 146 performance).”

View on RedditRemove this

Check it elsewhere for Fall 2026

Calendar versions

Undergraduate Calendar