CS 247Software Engineering Principles
- Units
- 0.50
- Faculty
- Mathematics
- Subject
- Computer Science
When it runs
- F24
- W25
- S25
- F25
- W26
- S26
- F26
- W27
- S27
Ran in 2 of the last 7 terms. Winter 2027: not on the schedule. Spring 2027: schedule not out yet.
Systematic methods for designing, coding, testing, and documenting medium-sized programs. Major topics include abstraction, modularity, software modelling, object-oriented programming and design, generic programming, testing and debugging.
Prerequisites
- Complete all of the following
- Must have completed at least 1 of the following:
- Enrolled in H-Software Engineering
Antirequisites
- Complete all of the following
- Not completed nor concurrently enrolled in any of the following:
- Not completed any of the following:
Leads to
Resources
Around the web
Found by uwloo’s link finder, which checks that each page names CS 247.
- CS 247: Home Course website · student.cs.uwaterloo.ca Remove
- Werner Dietl at the University of Waterloo Other · Spring 2021 · ece.uwaterloo.ca · from Werner Dietl’s site Remove
- Google C++ Style Guide Other · google.github.io · from UWaterloo Links (SE) Remove
- Tutorials Other · cplusplus.com · from UWaterloo Links (SE) Remove
Reviewed on UW Flow
44% liked it64% easy54% useful
From 229 ratings and 39 comments on UW Flow. The most helpful comments, quoted as written, without names. Read them all on UW Flow.
Useful course if you love outdated patterns and ambiguous assignments.
Jun 2016 · didn’t like it · 4 found this helpfulOn UW FlowRemove this
Now I can pass C++ interviews. TA was a menace
Aug 2022 · liked it · 2 found this helpfulOn UW FlowRemove this
It was a complete joke of a course. The assignments and professor made it terrible. The assignments took over 48 hours of work just because it was repetitive, mundane, unnecessary code. Have fun implementing literally every data structure you use again. Apparently we need to know how to implement a linked list again, even though we did it so often in CS 138.
Also have fun failing secret tests because of memory leaks, even though the memory leaks are 100% located in their test harness. I compared my executable to the sample executable they give to test your output against and my executable had half of the memory leaks. But you won't know that you'll failed secret tests until after the…May 2017 · didn’t like it · 2 found this helpfulOn UW FlowRemove this
Honestly the driest course ever, with the lectures focusing too much on C++ design and the assignments are horrendously long and unnecessarily complicated. There was absolutely no need to have the assignments be so repetitive, and no reason for the specs to be so ambiguous. Just felt like no one cared about the course -- marking was rather harsh and opinionated, too.
Jun 2016 · didn’t like it · 2 found this helpfulOn UW FlowRemove this
Great course, interesting and useful coverage of C++ and design patterns.
Aug 2022 · liked it · 1 found this helpfulOn UW FlowRemove this
Discussed on r/uwaterloo
41 posts and comments in 32 threads mention CS 247, August 2012 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.
Spring 2023
What are your core courses? 8 points, 11 comments
“Basically title - What are several courses that you think really define your program? Any thoughts on them, and how they went? Looking forward to the discussion (ノ◕ヮ◕)ノ\:・゚✧”
u/1000Ditto: “Might as well take a stab at my own discussion post: MSCI 342 (SWE | CS247 equiv) MSCI 253 (Stats 2 | STAT 231+STAT 332 equiv) MSCI 431 (Stochastics| STAT 333 equiv) MSCI 332 (opti despair) MSCI 334/434 (operations, inventory control, scm)”
Spring 2022
Important Correction from todays CS 247 Lecture - Hackman 567 points, 28 comments
Winter 2022
Very strange professor behaviour? 344 points, 32 comments
“Today my professor walked into class, took off his mask and announced he had COVID! He then ordered the entire class to line up single file where he then kissed us all on the mouth??? …”
u/backyardhooligan: “Was he cute 👀”
u/i_love_cra: “you clearly have not taken CS 247”
Fall 2021
[deleted by user] 33 points, 14 comments
u/tendstofortytwo: “Yes, and yes.”
u/ffrosteh: “… Software Development CS 246E Object-Oriented Software Development (Enriched) CS 247 Software Abstraction and Specification CS 251 Computer Organization and Design CS 330 Management Information Systems CS 335 Computational Methods in Business and Finance CS 338 Computer …”
Spring 2021
Prereq percentage requirements 0 points, 8 comments
u/UserNo9810: “I checked the uw flow for prerequisites for cs240 it says “one of cs241 cs246 cs247”. Does that mean that I just need atl least a 50% avg in cs246 or 60%”
I failed CS246 twice will I be kicked out of my program in CS?Can I reenroll for SE? 1 point, 7 comments
“I tried passing CS246 this winter semester but you need a 70% average in overall from all assignments to pass the course so I couldn't make it. …”
u/tendstofortytwo: “Anticipating complex inputs and preparing for edge cases is very much a software engineering thing. imo CS246 is the most SE-like class in second year. …”
u/RewardingGoblin: “they take CS247 which is functionally equivalent”
Winter 2020
CS 246 vs CS 247 4 points, 7 comments
u/fabulizer: “what are the differences?”
u/sexxiAndIKnowIt: “As far as I know CS247 is the CS246 alternative that SE students take. Since SE students have taken a C++ course (CS138) before, 247 barely touched on inheritance and writing C++ whiereas you learn C++ from scratch in 246. …”
Spring 2019
What is the difference between CS and Software Eng? 34 points, 19 comments
“I feel like I'm gonna get reamed for this since it seems most of you are CS, but I legit don't know. I'm just a Biology boy who knows nothing about computers”
u/pahgawk: “I know you're in biology and not actively deciding which to take between the two, but in case anyone reading this is in that situation, here's my SE graduate perspective on what I think the …”
u/pahgawk: “… There was a lot of lecture overlap with CS 247 content due to a misunderstanding between faculty that is now being changed. …”
Winter 2019
ECE alternative to CS 246? 8 points, 11 comments
“I'm trying to take either CS 246 or some course that is an anti req to it. What courses can ECE take that are similar to CS 246?”
u/marmoshet: “ECE 150 and ECE 250 together should cover the majority of CS 246. Otherwise you can try to get into CS 247, MSCI 342, or SYDE 322.”
Fall 2018
Workload in hrs per week for cs241 and cs241e? 8 points, 26 comments
u/Pinkeston: “… Trying to see if the higher workload justifies that If you could also comment your grades in cs136/cs138/cs246/cs247 along with how long you spent on the assignments I would greatly appreciate that so I can estimate much more accurately how long it would take for me to do them …”
Cs246 vs Cs247 2 points, 8 comments
u/unaverageN: “I get that SE students take one and CS the other. What are the differences in content learned? Is one better run? Everyone on uwflow seems to say cs247 was pretty waste, but says cs246 is amazing and super helpful. Looking for more insight in the differences”
how to study for ece 240 9 points, 9 comments
“halp me”
u/theFakeArtist: “Study for CS247 twice”
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