uwloo

ECE 252Systems Programming and Concurrency

Units
0.50
Faculty
Engineering
Subject
Electrical and Computer Engineering

When it runs

  1. F24
  2. W25
  3. S25
  4. F25
  5. W26
  6. S26
  7. F26
  8. W27
  9. S27

Ran in 5 of the last 7 terms. Winter 2027: not on the schedule. Spring 2027: schedule not out yet.

Processes and threads (pthreads); system calls; concurrency (semaphore, mutex, monitors, and barrier synchronization); user-level memory management. Performance and correctness of concurrent systems. Deadlock detection and recovery; file systems.

Prerequisites

  • Complete all of the following
    • Complete 1 of the following
      • Must have completed at least 1 of the following:
        • BME122 - Data Structures and Algorithms (0.50)
        • ECE250 - Algorithms and Data Structures (0.50)
        • MSE240 - Algorithms and Data Structures (0.50)
        • MTE140 - Algorithms and Data Structures (0.50)
        • SYDE223 - Data Structures and Algorithms (0.50)
      • Must have completed the following:
    • Students must be in level 2B or higher
    • Complete 1 of the following

Antirequisites

  • Not completed nor concurrently enrolled in any of the following:
    • CS343 - Concurrent and Parallel Programming (0.50)
    • CS350 - Operating Systems (0.50)
    • SE350 - Operating Systems (0.50)

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 0015012142 / 148MF 08:30–09:50
Sep 10 11:30–12:20
Sep 24 11:30–12:20
Oct 8 11:30–12:20
Oct 29 11:30–12:20
Nov 12 11:30–12:20
Nov 26 11:30–12:20
LAB 201501441 / 42Sep 17 13:30–16:20
Oct 1 13:30–16:20
Oct 22 13:30–16:20
Nov 12 13:30–16:20
Nov 26 13:30–16:20
LAB 202508738 / 42Sep 14 13:30–16:20
Sep 28 13:30–16:20
Oct 19 13:30–16:20
Nov 9 13:30–16:20
Nov 23 13:30–16:20
LAB 203527237 / 38Sep 15 13:30–16:20
Sep 29 13:30–16:20
Oct 20 13:30–16:20
Nov 10 13:30–16:20
Nov 24 13:30–16:20
LAB 204527326 / 26Sep 16 13:30–16:20
Sep 30 13:30–16:20
Oct 21 13:30–16:20
Nov 11 13:30–16:20
Nov 25 13:30–16:20
TUT 1015013142 / 148T 16:30–17:20

Resources

Around the web

Found by uwloo’s link finder, which checks that each page names ECE 252.

Suggest a resource.

Reviewed on UW Flow

93% liked it33% easy94% useful

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

  • I'm a Management Engineering student and I love this course. It is quite time consuming and the labs are no walk in the park, especially since this is my first time programming in a low-level language. That being said, one can definitely finish this course with a mark they desire, even if it's a 90+.
    Expect to put in a lot of time, but it'll be worth it as you'll come out a better programmer.

    Nov 2020 · liked it · 1 found this helpfulOn UW FlowRemove this

  • Very interesting and useful (I was asked a lot of questions about concurrency in interviews and this course let me answer them). But the labs took a VERY long time to do. Make sure you do a good job on Lab 1 (catpng) because that is used a lot in the later labs.

    Jul 2019 · liked it · 1 found this helpfulOn UW FlowRemove this

  • This course is amazing, and not hard to learn because Professor Zarnett has all the materials well organized.

    Oct 2026 · liked itOn UW FlowRemove this

  • The most useful course for computer engineering students so far. The labs are long but are useful and relevant to the content learned in lectures. However the lab tests are brutal, they require you to have additional coding knowledge beyond the scope of ECE150, 250 and 252.

    Dec 2025 · liked itOn UW FlowRemove this

  • Extremely useful course with cool concepts. Enjoyed it. Labs were a bit tedious at times.

    Dec 2025 · liked itOn UW FlowRemove this

Discussed on r/uwaterloo

49 posts and comments in 44 threads mention ECE 252, February 2018 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

ECE 252 3 points, 1 comment

u/bomankleinn01: “I’ll be taking this course in the upcoming Fall, wanted to know what I should brush up on for this course (outside of basic C). Since the prerequisite is ECE 250: Data Structures and Algorithms, which common dsa concept(s) should I expect and hone in from this to best prepare. …”

View on RedditRemove this

Winter 2024

ECE 2B S24 1 point, 2 comments

u/Tight_Document_1513: “Has anyone been taught by these professors during their 2B term? ECE298 - Pope ECE207 - Dabbagh ECE224 - Pellizoni R ECE208 - Harris ECE203 - Yang E-H ECE252 - Zarnett Any advice/tips would be appreciated.”

View on RedditRemove this

Fall 2023

Winter 2023

Fall 2022

how hard is Comp Eng 2B? 21 points, 16 comments

“How hard is 2B compared to 2A for comp eng? Which courses tend to be the hardest or most time consuming? Have the courses changed at all after COVID?”

u/_Burgr: “ece252 labs and ece224 labs were the most time consuming”

View on RedditRemove this

Spring 2022

Do you regret your engineering major choice? 18 points, 41 comments

“If so, why?”

u/SoundsLikeSomeHoopla: “Imo MGME is the easiest engineering program you can go through to still end up with a very good chance at big tech”

u/EquivalentParsnip319: “… Many MGTE students have taken ECE 252, for example. If you like the OR/IE courses, load up on them with your TEs: 433, 435, 452, 531, 551, 555. By the way, if you weren't in MGTE, you'd have to take CSEs in place of 211, 311, 263 and not other TEs. 261 is required econ by CEAB. …”

View on RedditRemove this

What are the top 2 most useful software courses? 2 points, 9 comments

“I am pursuing a computing option and I need to pick 2 software courses. Excluding the introductory Programming courses and a introductory data structures and algorithms course, what in your opinion …”

u/cormack_gv: “You say, "Excluding the introductory Programming courses and a introductory data structures and algorithms course" so I had no idea what courses you have already taken or meet the prerequisites for. …”

u/marcbisp: “… Right now I’m considering trying to take ECE 454 (Distributed Computing) which would mean I would also need to take either ECE 252 (Systems Programming and Concurrency) or SE 350 (Operating Systems) before that to fulfill prerequisite requirements. …”

View on RedditRemove this

CE vs math 20 points, 46 comments

“Iam planning to pursue SWE. I dont like physics, hardware. Iam only interested in software things. Sadly i got rejected from cs and se so i need to choose between math and ce. Iam a math lover”

u/TheRealArjun: “… Don't count on being able to do this but what I did was take interesting CE courses as electives for fun just by asking the course instructor (ECE 252, 350, 351, 454, 459), so maybe thats an option if you take the math offer. …”

View on RedditRemove this

Check it elsewhere for Fall 2026

Calendar versions

Undergraduate Calendar