CS 343Concurrent and Parallel Programming
- Units
- 0.50
- Faculty
- Mathematics
- Subject
- Computer Science
When it runs
- F24
- W25
- S25
- F25
- W26
- S26
- F26
- W27
- S27
Ran in 6 of the last 7 terms. Winter 2027: scheduled, 2 lecture sections. Spring 2027: schedule not out yet.
An introduction to concurrent and parallel programming, with an emphasis on language constructs. Major topics include exceptions, coroutines, atomic operations, critical sections, mutual exclusion, semaphores, high-level concurrency, deadlock, interprocess communication, process structuring, shared memory, and distributed architectures. Students will learn how to structure, implement, and debug concurrent programs.
Prerequisites
- Complete all of the following
- Must have completed at least 1 of the following:
- 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
Antirequisites
None listed.
Leads to
No course lists it as a requisite.
Fall 2026 sections
| Section | Class | Enrolled | Meets |
|---|---|---|---|
| LEC 001 | 6098 | 84 / 100 | TTh 13:00–14:20 |
| LEC 002 | 6171 | 78 / 100 | TTh 14:30–15:50 |
| TST 101 | 5928 | 162 / 200 | Nov 4 19:00–20:50 |
Winter 2027 sections
| Section | Class | Enrolled | Meets |
|---|---|---|---|
| LEC 001 | 5696 | 0 / 90 | TTh 10:00–11:20 |
| LEC 701 | 2186 | 44 / 9999 | Online or by arrangement |
| TST 101 | 6233 | 0 / 90 | Mar 3 19:00–20:50 |
Resources
Around the web
Found by uwloo’s link finder, which checks that each page names CS 343.
- CS 343 - Concurrent and Parallel Programming Course website · student.cs.uwaterloo.ca Remove
- CS 343 | SCS Course website · cs.uwaterloo.ca · from Martin Karsten’s site Remove
- Course Highlight (EPFL: CS-206) Course notes · david-duan.me · posted on r/uwaterloo Mar 2022 Remove
- cs343 notes Course notes · richardwu.ca · posted on r/uwaterloo Feb 2020 Remove
- TIOBE Index - TIOBE Other · tiobe.com · from UWaterloo Links (SE) Remove
- uSystem, uC++ Other · plg.uwaterloo.ca · from UWaterloo Links (SE) Remove
- Department Consent Removed - CS343 and 330 Other · csatuwaterloo.blogspot.com · posted on r/uwaterloo Jan 2019 Remove
Reviewed on UW Flow
65% liked it40% easy67% useful
From 266 ratings and 58 comments on UW Flow. The most helpful comments, quoted as written, without names. Read them all on UW Flow.
This course has ruined how I feel about queues, bathrooms, sodas, and so much more. My friends think I am slightly deranged now. I walk up to the William's in the Plaza and someone lets me go ahead and I back off at the same time and I go "holy shit this is just like livelocks from CS343". Then someone walks in front of both of us and I go "holy shit this just like barging from CS343". Then I talk to my friends and they stop saying what they were saying to talk to me and I'm like "holy shit this is just like raising an exception to another task in"
10/10 would recommend.Dec 2022 · liked it · 19 found this helpfulOn UW FlowRemove this
Peter Buhr is an engaging lecturer whose explanations of concurrency fundamentals are memorable. His enthusiasm for the subject keeps lectures lively and accessible. Unfortunately, the rest of CS 343 does not share this polish. The assignments and course structure often feel disconnected from his teaching quality, leaving students frustrated by the workload rather than deepened in understanding.
Over the last four assignments, much of my time has been spent on boilerplate code rather than on concurrency itself. Instead of focusing on synchronization, mutual exclusion, and task coordination, I’ve spent hours wiring up parsing logic, argument handling, and I/O scaffolding. The conceptual…Sep 2025 · didn’t like it · 13 found this helpfulOn UW FlowRemove this
A challenging, useful, and interesting course in concurrency and control flow.
The assignments are some of the hardest in the CS department (biweekly and easily 20-30 hours each, if you make no mistakes and understand all the content perfectly).
A lot of people complain about uC++. However, this course is taught in uC++ because no other language has all the concurrency mechanisms that uC++ has (uC++ is just a teaching language). After taking this course, you're able to write concurrent programs in a number of different languages (C++, Go, Rust, Java, ...) because of all the different mechanisms used.
This course also requires a high level of attention to detail in the code itself (both…Dec 2022 · liked it · 9 found this helpfulOn UW FlowRemove this
ragebait course
Nov 2025 · didn’t like it · 4 found this helpfulOn UW FlowRemove this
Long assignments, only spent 1% of the time thinking about concurrency, the rest of the time was spent debugging obscure micro c++ details. The course also spent a great deal of time discussing some of the less relevant parts of concurrency, at least in terms of how most people will use it. That's fine and all, but it's only useful-ish. Pretty much everything was already covered in the operating systems course, so basically this course only adds a couple new concurrency styles (ex. actors) and goes deeper into locks.
Oct 2019 · didn’t like it · 4 found this helpfulOn UW FlowRemove this
Discussed on r/uwaterloo
342 posts and comments in 253 threads mention CS 343, February 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
CS 349 vs 348 vs 370 vs 442 vs 365 2 points, 6 comments
“Which one should I take for the most useful course alongside other courses (one which adds the most value to my degree)? …”
u/shrimpFriedRice49: “… Quick aside, my personal favorite from 300 level cs courses is cs343 - concurrent and parallel programming. Its hard, but extremely useful. …”
CS courses to take over COOP? 6 points, 3 comments
“What are some good cs courses to take over coop? Specifically looking for CS 3xx and 4xx ones”
u/Organic_Midnight1999: “I did CS 456 (good idea), CS 343 (bad idea), and CS 454 (doable if ur not a lazy fuck like me and if ur comfortable with C++)”
Racket and uCplusplus on resume 2 points, 6 comments
u/Upbeat_State_8122: “Guys my friend showed me her resume and she has racket and ucplusplus (cs343 language made by Peter buhr) on her resume can u guys pls tell her in the comments that's not a good idea pls she won't listen to me”
u/Dazzling-Deer-9689: “Racket and cplusplus are valid languages??? Ur friend is unlucky to have such an ignorant fool like you as an acquaintance!”
u/Upbeat_State_8122: “Read the post properly before you call others ignorant fools, i said ucplusplus, NOT c++, an esoteric language known only to the ones who take cs 343”
CS 343 Video Lectures & Midterm Advice 3 points, 0 comments
u/S3132: “Hi everyone! I’m taking CS 343 this term and finding it pretty challenging. I missed a few lectures, so I’m wondering if anyone could share the video lectures if they don't mind, thanks a lot! (Also, any tips for the midterm would be really appreciated! Thanks in advance! 🌷”
Most interesting upper-year CS classes 13 points, 8 comments
“Rising 4B CS here. Currently on my schedule I have 488 (Graphics) since I’ve been meaning to take that since like 2nd year and CS 492 since I feel like it’d be fun to talk about the social …”
u/Josh-Jo1: “CS 343 with Peter Buhr”
CS 343 2 points, 0 comments
u/Organic_Midnight1999: “Does anyone know where I can find the course notes? I tried looking for them but couldn’t find anything. Also, is there any textbook that is followed for the course (non-UW author).”
u/breakbake: “https://student.cs.uwaterloo.ca/cs343/F24/notes.pdf The course website also has relevant textbooks and videos”
CS343 1 point, 1 comment
u/breakbake: “Anyone taking CS343 this term and wanna work together?”
Spring 2024
Interesting courses for CS upper year (3A+) 13 points, 14 comments
“I am in CS, and I am just (after exams) done with with 2B. I only have CS 341 and CS 350 left in the mandatory courses for CS, and I will be on my 3A term in the coming Winter term. …”
u/james_dev_123: “… CS 343 was also good. Concurrency is very useful. You also shouldn't graduate without knowing anything about networking. It's kind of embarrassing if you have a CS degree but you don't even know how DNS or TCP works. So, CS 454 seems like an obvious choice. But... …”
u/james_dev_123: “… CS 343, on the other hand, is quite a hard course. The assignments were extremely difficult, as far as I remember. It is comparable to MATH 239 or CS 241. But... it's definitely useful. …”
CS499T 2 points, 0 comments
u/imokipullup: “Anyone have experience taking 499T? What's the workload like compared to other courses - CS350, CS 343, CS 452 Also it would be cool to see some examples of old CS499 theses, I remember finding some on the internet but I lost the link 😂😂😂😂😂”
Is this course load a bad idea? 1 point, 5 comments
u/JustinToft: “CS 350 is a prerequisite for CS 343 so I don’t know how you can do this. Apart from that I feel like it’s doable but will be lots of grinding”
Is doing CS 456, CS 458, 3x bird courses + 20hr/week job difficult? 8 points, 13 comments
“Do you think this is doable for my 3B term? Not sure how difficult CS 456 and CS 458 are, especially if taking them in the same term, so any insight would be appreciated. …”
u/dave7364: “Is doing CS 452, CS 444, CS 488, CS 343, PMATH 450 and a full time job, and a design team (Waterloop btw) doable? (I have a CAV of 94).”
Winter 2024
IMPORTANT CS courses 8 points, 15 comments
“Hey: I finished all my mandatory CS courses and now I need to consider what upper year classes are USEFUL. I don't care if the course is "fun" or not. …”
u/rngpenguin: “CS 343 - concurrent programming is a great skill to have in many swe areas”
u/rngpenguin: “… ive spent two coop terms at one of {tesla, apple, nvidia} (dont want to doxx myself) working on runtime / systems level software and knowledge from cs 343 has been helpful in a lot of my work. …”
u/Fatdayuu: “CS 343, this is very important in industry based on my coop experience as a math student”
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