CS 446Software Design and Architectures
- Units
- 0.50
- Faculty
- Mathematics
- Subject
- Computer Science
- Cross-listed
- ECE 452
When it runs
- F24
- W25
- S25
- F25
- W26
- S26
- F26
- W27
- S27
Ran in 6 of the last 7 terms. Winter 2027: scheduled, 3 lecture sections. Spring 2027: schedule not out yet.
Introduces students to the design, implementation, and evolution phases of software development. Software design processes, methods, and notation. Implementation of designs. Evolution of designs and implementations. Management of design activities.
Prerequisites
- Complete all of the following
- Must have completed the following:
- CS350 - Operating Systems (0.50)
- Enrolled in H-BBA & BCS Double Degree, H-Computer Science (BCS), H-Computer Science (BMath), JH-Computer Science (BCS), JH-Computer Science (BMath), H-Computing & Financial Management, H-Data Science (BCS), or H-Software Engineering
- Must have completed the following:
Antirequisites
Leads to
No course lists it as a requisite.
Winter 2027 sections
| Section | Class | Enrolled | Meets |
|---|---|---|---|
| LEC 001 | 6028 | 0 / 75 | MW 11:30–12:50 |
| LEC 002 | 6187 | 0 / 75 | MW 10:00–11:20 |
| LEC 701 | 2363 | 28 / 9999 | Online or by arrangement |
Resources
Around the web
Found by uwloo’s link finder, which checks that each page names CS 446.
- Software Design and Architectures Course website · student.cs.uwaterloo.ca Remove
- Werner Dietl at the University of Waterloo Other · Spring 2014 · ece.uwaterloo.ca · from Werner Dietl’s site Remove
- SE2: Software Design and Architecture - CS 446, CS 646, ECE 452: Sec 001, 002 Other · Winter 2023 · m4alfadel.github.io · posted on r/uwaterloo Jan 2023 Remove
- SE2: Software Design and Architecture - CS 446, CS 646, ECE 452: Sec 001, 002 Other · Spring 2022 · cs.uwaterloo.ca · posted on r/uwaterloo Jan 2023 Remove
- SE2: Software Design and Architecture - CS 446, CS 646, ECE 452: Sec 001, 002 Other · Spring 2020 · cs.uwaterloo.ca · posted on r/uwaterloo Aug 2020 Remove
- SE2: Software Design & Architecture Other · Spring 2017 · cs.uwaterloo.ca · posted on r/uwaterloo May 2017 Remove
1 page from this site
Reviewed on UW Flow
62% liked it72% easy68% useful
From 39 ratings and 11 comments on UW Flow. The most helpful comments, quoted as written, without names. Read them all on UW Flow.
All my other courses are steaming garbage, but this prof was just like "go build your android apps" and i was like "☺️"
The other courses on uwflow *say* they're useful... but I don't think they really *are*. This course was on par for usefulness with a lot of other courses rated 100% useful... so I'm giving it 100% due to the inflation (to be clear, I think everything is equally not-useful).Mar 2023 · liked it · 1 found this helpfulOn UW FlowRemove this
It's a great course content-wise, but was terribly managed when I took it. Professor was very disorganized & kept changing assignment requirements and deadlines randomly. TAs were useless as well. The course teaches some important concepts like design patterns & architecture styles. However, I think they waste a lot of time on boring stuff and so have to rush through the interesting and important concept. There's one big group project (Android App) that you're building towards throughout the term with 6-7 deliverables every 2-3 weeks. Be sure to pick a solid group, because there's quite a lot of work (~400 hrs). Final was pretty easy.
Sep 2025 · liked itOn UW FlowRemove this
They teach the architectural designs like it's a business course. Memorize a bunch of random information but never apply any of them. They never motivate any real examples for why these architecture patterns are valuable aside from extremely abstract real world examples. You never get into the actual implementation details to actually understand why certain patterns do anything at all. If you enjoy doing business, then this is the perfect course for you. Yap and say a whole lot of nothing to feel like you know something. 20% of your grade comes from creating real-world analogies to the architecture/design patterns you learn, which tells you everything you need to know about this pathetic…
Jun 2025 · didn’t like itOn UW FlowRemove this
The content of this course teaches core design patterns in programming. The content and deliverables are pretty easy in a group setting and the project can be anything (don't make it more complex that it needs to be).
The exam was also very straightforward with reviewing the slide content being sufficient.
Side note: I basically did this entire course remotely and showed up just for the 2 presentations and final exam.Sep 2024 · liked itOn UW FlowRemove this
This course consists of a 6 person term-long Android development project. If you get a good group you can really do well on the project portion of the class, and to be honest even if you don't you can probably pull through with a pretty good mark anyways. Our offering was a flipped format that required us to watch video lectures before class then show up to class and contribute via in-class exercises. This format didn't really work because the in-class exercises were kind of redundant considering we had a whole project we were working on. I rarely attended class, and from what I can tell class attendance was especially low, as you might expect for a project-based course.
May 2024 · liked itOn UW FlowRemove this
Discussed on r/uwaterloo
138 posts and comments in 120 threads mention CS 446, October 2010 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
Does anyone want to swap CS479 with CS446? 1 point, 0 comments
CS446 or CS447 or CS454 3 points, 2 comments
u/Agitated-Heron-4420: “… What course should I take CS 446, CS447, or CS 454? I wanna take the least workload and least amount of programming. I just wanna chill in my last term and not worry about academia. …”
Spring 2024
Business Specialization for CS 2 points, 1 comment
u/Miserable-Package-38: “… In my last term, I was supposed to have 3 courses and only 1 CS (CS 446) with 2 electives. Doing the business specialization means I take 2 CS courses (2 out of: 348, 490 and 454) and 2 business courses out of the given selections. Is this a valid trade off? …”
16GB vs 32 GB RAM for CS 6 points, 30 comments
“Hi, I am an incoming computer science student, and I am looking to buy a new laptop. I am currently debating between two models: that are identical except one is 16GB RAM (currently on sale) and the …”
u/FishRaider: “I'm in second year cs and so far nothing I've done required a laptop with more than 8 gbs of ram (I have 16). The only recommendation I will give is don't buy a gaming laptop. …”
u/Jaffe240: “Some upper year courses are more demanding. I teaching Kotlin/Android in CS 346, and CS 446 uses the same tech stack. 8 GB isn't really enough for building mobile apps; 16 GB is recommended. If you're not taking those courses, you might be ok with 8 GB.”
easy vs usefulelectives for first years? 10 points, 4 comments
“I'm conflicted between choosing an elective that is actually useful to me versus a bird course that will lighten up my workload. …”
u/ConsequenceNo3618: “… People say bad things about CS 446 but I personally found it helpful. …”
easy upper year cs courses 14 points, 12 comments
“pls recommend ez course for aimless hoeless jobless soon-to-be-homeless brainrotted individuals like me tysm!”
u/the-scream-i-scrumpt: “cs 446 🖖”
Winter 2024
Anyways of getting into mobile development within the school? 1 point, 7 comments
“When it comes to web development or AI/ML, there's a bunch of design teams that are available for people to join and get experience. Is there anything like that for mobile developerment?”
u/nyephe: “… ECE452/CS446/SE464 used to teach mobile development, and I think CS 346 still does There's something called 'progressive web applications' (PWA) which are cross-platform applications that are typically created using a web-based tech stack. …”
CS446 outline 2 points, 1 comment
u/proteinbananas: “Does anyone have the CS446 outline for this term? And why is it department consent only? Is it too late to join/groups are already settled?”
should I drop math 239 and take it in 3a? 1 point, 7 comments
“hi! i'm going into 2b cs for winter 2024 and am planning on taking cs 240, cs 241, cs 251 and math 239 along with coop search. …”
u/Optical-Illusion-10: “… take CS 348, CS 349, CS 370, CS 456, CO 487, CS 446; none require CS 341) although I wouldn’t recommend that”
Fall 2023
cs course selection 11 points, 8 comments
“which of these 3 cs courses is the easiest? do any of them require you to attend mandatory classes in person?”
u/suiyui: “446 < 445 < 447 imo”
u/NeighborhoodDizzy831: “Sorry, to clarify, CS 446 being the easiest or the hardest out of the 3?”
CS445 or CS446 1 point, 0 comments
u/uwexcess: “Anyone who has taken these courses recently, how were they in terms of workload? Did you have a in-person final with your professor? Thanks!”
Spring 2023
Bird CS courses 5 points, 8 comments
“What are the easiest, most brain-dead CS courses offered in summer? Tryna coast this term. I'm looking at CS 492. Seems brain-dead. Can anyone attest?”
u/clean_mint_mouthwash: “… I've heard good things about CS445 & CS446, but I'm taking them now so I can't really say too much -- so far they seem bird though (assuming you have a good group for the projects) If 3xx courses are okay, then 348, 349, 346 are all good options.”
u/Fuzzy-Implement-7230: “How were CS445 and CS446?”
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