uwloo

CS 246Object-Oriented Software Development

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

Introduction to object-oriented programming and to tools and techniques for software development. Designing, coding, debugging, testing, and documenting medium-sized programs: reading specifications and designing software to implement them; selecting appropriate data structures and control structures; writing reusable code; reusing existing code; basic performance issues; debuggers; test suites.

Prerequisites

  • Complete all of the following
    • Complete 1 of the following
      • Must have completed the following:
        • CS136L - Tools and Techniques for Software Development (0.25)
        • CS146 - Elementary Algorithm Design and Data Abstraction (Advanced Level) (0.50)
      • Earned a minimum grade of 60% in each of the following:
        • CS138 - Introduction to Data Abstraction and Implementation (0.50)
      • Complete all of the following
        • Must have completed the following:
          • CS136L - Tools and Techniques for Software Development (0.25)
        • Earned a minimum grade of 60% in each of the following:
          • CS136 - Elementary Algorithm Design and Data Abstraction (0.50)
    • Enrolled in an Honours Mathematics program

Antirequisites

  • Complete all of the following
    • Not completed nor concurrently enrolled in any of the following:
      • CS246E - Object-Oriented Software Development (Enriched) (0.50)
      • CS247 - Software Engineering Principles (0.50)
      • MSE342 - Principles of Software Engineering (0.50)
      • SYDE322 - Software Design (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 001599977 / 90TTh 10:00–11:20
LEC 002616986 / 90TTh 11:30–12:50
LEC 003653676 / 90TTh 14:30–15:50
LEC 004653768 / 90TTh 13:00–14:20
TUT 101602948 / 60W 08:30–09:20
TUT 102603057 / 60W 09:30–10:20
TUT 103617057 / 60W 10:30–11:20
TUT 104619151 / 60W 11:30–12:20
TUT 105593357 / 60W 12:30–13:20
TUT 106654137 / 60W 13:30–14:20
TST 2016543307 / 360Nov 10 16:30–18:20

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 00156020 / 120TTh 10:00–11:20
LEC 7012181102 / 9999Online or by arrangement
TUT 10156030 / 60W 13:30–14:20
TUT 10258390 / 60W 14:30–15:20
TST 20156810 / 120Mar 9 16:30–18:20

Resources

Around the web

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

19 more links

Suggest a resource.

Reviewed on UW Flow

67% liked it57% easy69% useful

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

  • Start Assignments early.

    May 2015 · liked it · 3 found this helpfulOn UW FlowRemove this

  • Best CS course as of 2B. You'll learn OOP and C++, two of the most coveted skills for programming jobs (you used to learn Linux as well, but I pushed that part to CS 136L, which you hopefully enjoyed). At the end of the course there's a final group project. Make sure you get good groupmates who will put in their share of the work. There's also design stuff for this, which involves UML diagrams and a lot of writing. The way I sorted it with my groupmates was I'll do all the coding and they handle the writing. I'm a neat freak when it comes to coding and I'll document everything extensively and use constants etc, so I found it nice to look back and go "cool, I wrote that in good style." Use…

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

  • By far the best CS course up to 2A. The concepts are extremely useful and interesting and the way that the course is structured really helps students to well thanks to the 40% assignments. Midterm (20%) was tricky and many failed or got low 50s but the final (40%) was definitely fair. The course isn't necessarily hard in itself, it's rather the amount of work for the assignments that make it very time-consuming. Take it with Nomair!!

    Jan 2018 · liked it · 2 found this helpfulOn UW FlowRemove this

  • Definitely the hardest course in terms of workload at the point where you have to take it. Nothing is particularly conceptually hard. In fact, before and up to assignment 2, the course is very trivial - don't let that fool you, because the course quickly becomes hectic as the workload exponentially increases and you will probably have to pull at least one all-nighter to keep up with the deadlines. The final project is fun if you and your group have a good sense of time management and absolute hell if you don't. If you're here, though, you probably have to take this course anyway, so just do it. If you put the time in you'll learn a lot.
    Midterm was absolutely brutal and filled with trivia,…

    Sep 2016 · liked it · 2 found this helpfulOn UW FlowRemove this

  • I can now use smart pointers! And ranged-based for loop! And lambda functions! Wow the world is a whole new place.

    Jul 2016 · liked it · 2 found this helpfulOn UW FlowRemove this

Discussed on r/uwaterloo

3,066 posts and comments in 1,928 threads mention CS 246, 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

Can't look at numbers the same 141 points, 6 comments

“Watching squid game and all the numbers remind me of course codes. Has anyone else experienced something like this? You see 135 and bam you are back in first year proofs”

u/Surprised-Egg: “I saw player 246 and remembered cs246 LOL glad I'm not alone”

View on RedditRemove this

2B CS course selection 2 points, 3 comments

u/Standard-Lecture-950: “As of now, these are the classes I am enrolled into: \- CS 245, 246, Math 239, Stat 231 and an elective Could someone walk me through how the term would look like if i go ahead with this option? …”

u/iamanaybaid555: “Your best combination would be: • CS 246 (pre-requisite for CS 241 and CS 240) • CS 251 (pre-requisite for CS 350) • MATH 239 (pre-requisite for CS 341) • CS 245 (pre-requisite for CS 240) • One elective Two reasons for not taking 231 with this would be a heavier workload and no …”

View on RedditRemove this

CS135 Withdrawing 4 points, 5 comments

“I barely passed the CS135 midterm and I need a 50% in the final exam to pass the course. Is it doable to get a 50% in the final or should I consider withdrawing?”

u/iamanaybaid555: “… If this ever happens to you again while you're doing CS 136, 246, 240, 341; you'll face it with some experience rather than going in blind. …”

View on RedditRemove this

Second year slump? 2A 28 points, 17 comments

u/SpyCommander13: “Relating super heavily to this, I feel like my study habits were strong enough to carry me through first year but 2A is starting to show me the cracks and I’ve realized that my current approach to …”

u/EarningZekrom: “Indeed, my study habits were already badly cracking in 1B, so I switched them up - only to get hit real bad by CS246 in particular lol Hope you figure it out my dude!”

View on RedditRemove this

how to succeed in cs246 8 points, 3 comments

u/Ok_Macaroon_8323: “What was your routine to really ingrain the concepts in your head? It's not the worst to understand, but when it comes time to actually apply it I'm completely lost. What are some tips you guys have for doing well in this course? Thanks!!”

View on RedditRemove this

Check it elsewhere for Fall 2026

Calendar versions

Undergraduate Calendar