uwloo

CS 138Introduction to Data Abstraction and Implementation

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, 2 lecture sections. Spring 2027: schedule not out yet.

Software abstractions via elementary data structures and their implementation; encapsulation and modularity; class and interface definitions; object instantiation; recursion; elementary abstract data types, including sequences, stacks, queues, and trees; implementation using linked structures and arrays; vectors and strings; memory models; automatic vs. dynamic memory management.

Prerequisites

  • Must have completed the following:
    • CS137 - Programming Principles (0.50)

Antirequisites

None listed.

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 00157520 / 147TTh 10:00–11:20
TTh 10:00–11:20
Jan 18 15:30–16:20
Feb 1 15:30–16:20
Mar 15 15:30–16:20
LEC 7012176124 / 9999Online or by arrangement
TUT 10157530 / 73F 11:30–12:20
F 11:30–12:20
TUT 10261840 / 74F 12:30–13:20
F 12:30–13:20
TST 20162560 / 147Feb 25 10:30–12:20

Resources

Around the web

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

Suggest a resource.

Reviewed on UW Flow

89% liked it85% easy93% useful

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

  • The course is somewhat useful and a good intro to C++ and Unix. I tried my best to listen to lectures but often ended up doing something else because much of the early content (e.g., heap and stack) was already covered in CS137. However, the later parts (trees, Unix, OOP, inheritance, friendship) were kind of new. Also pay attention to code design. I lost many marks on the exam because of this (e.g., preferring null == variable over variable == null). Assignment instructions are ambiguous and too lengthy. I wish they shortened the instructions and provided test cases and expected results like in CS137.

    Apr 2026 · didn’t like it · 1 found this helpfulOn UW FlowRemove this

  • I found the data structures content a little dry and repetitive but the OOP content pretty interesting for someone with no prior C++ experience. Assignments were prepared well, involved interesting topics, and were great exposure to real test-driven development (tests using gtest and gcov were a marked portion of each assignment). The course also covers some Unix topics (file systems and permissions, shells and common commands); this constituted 16 out of 90 marks on the midterm exam.

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

  • don't really like the slides

    Jul 2024 · didn’t like it · 1 found this helpfulOn UW FlowRemove this

  • As long as you don't leave assignments until the last minute, they really aren't that bad. The content is super important and interesting, although sometimes the lectures are a bit hard to follow.
    The exams aren't the most fair, but definitely doable. Just make sure you listen to the prof and pay attention to EVERY DETAIL in the slides bc he will ask you about it.

    Jun 2026 · liked itOn UW FlowRemove this

  • This course had amazing assignments. They were interesting, fun, useful, and were much better in length than the cs 137 assignments. Having two weeks to do each assignment and a focus on testing made them feel easier than cs 137. However, the exams for this course were harder than cs 137, as a lot more definition-type knowledge was required and questions were ambiguous. It was normal for a student's mark to increase 10% after a midterm regrade.

    May 2024 · liked itOn UW FlowRemove this

Discussed on r/uwaterloo

65 posts and comments in 53 threads mention CS 138, May 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.

Fall 2024

Spring 2024

Fall 2023

Winter 2023

Waterloo Software Engineering 13 points, 12 comments

“So I got into waterloo se today. I honestly think I'm underqualified (when it comes to coding experience). …”

u/SerMacster: “Your first two terms will only have CS137 and CS138 from the programming courses. They don't expect you to have experience, but I guess some familiarity would help. Theses courses cover C/C++. …”

View on RedditRemove this

Spring 2022

Winter 2022

software engineering with no programming experience 88 points, 56 comments

“Hey everyone, I recently got accepted to Software Engineering at Waterloo. I'm concerned about whether or not studying SE would be excessively difficult since I have little to no experience with …”

u/TechnicalSpread7368: “… CS 137 and 138 are probably the easiest courses in first year (maybe except Calculus?). Although it takes a while to get used to the university learning pace, you will struggle a lot more with engineering and physics courses. …”

View on RedditRemove this

Fall 2021

[deleted by user] 33 points, 14 comments

u/tendstofortytwo: “Yes, and yes.”

u/ffrosteh: “… Software Development Course Description CS 137 Programming Principles Course Description CS 138 Introduction to Data Abstraction and Implementation CS 145 Design, Abstraction and Implementation CS 146 Elementary Algorithm Design and Data Abstraction (advanced version) CS 200 …”

View on RedditRemove this

Spring 2021

Fall 2020

Winter 2020

CS 246 vs CS 247 4 points, 7 comments

“what are the differences?”

u/sexxiAndIKnowIt: “… 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. …”

View on RedditRemove this

Check it elsewhere for Fall 2026

Calendar versions

Undergraduate Calendar