Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.


Electrical and Computer Engineering - Systems Programming and Concurrency

University of Waterloo via YouTube


This course on Systems Programming and Concurrency aims to teach students the fundamentals of system programming and concurrency. By the end of the course, learners will be able to understand and implement processes, threads, interprocess communication, network communication, synchronization, and advanced concurrency problems. The course covers topics such as system calls, file systems, IPC mechanisms, deadlock handling, and various concurrency issues. The teaching method includes lectures and practical examples, with a focus on hands-on learning. This course is intended for students or professionals in the field of Electrical and Computer Engineering who want to deepen their understanding of systems programming and concurrency.


ECE 252: Introduction.
ECE 252 Gitlab Setup.
ECE 252 Lecture 1: Introduction.
ECE 252 Lecture 1: Our C Toolkit.
ECE 252 Lecture 2: Interrupts and System Calls.
ECE 252 Lecture 3: The File System.
ECE 252 Lecture 4: Processes.
ECE 252 Lecture 5: Processes in UNIX.
ECE 252 Lecture 6: Interprocess Communication (IPC).
ECE 252 Lecture 7: Sockets.
ECE 252 Lecture 8: Network Communication.
ECE 252 Lecture 9: Pipes and Shared Memory.
ECE 252 Lecture 10: Threads.
ECE 252 Lecture 11: Threads and Concurrency.
ECE 252 Lecture 12: Concurrency: Synchronization & Atomicity.
ECE 252 Lecture 13: Semaphores.
ECE 252 Lecture 14: Synchronization Patterns.
ECE 252 Lecture 15: The Producer-Consumer Problem.
ECE 252 Lecture 16: The Readers-Writers Problem.
ECE 252 Lecture 17: Deadlock.
ECE 252 Lecture 18: Deadlock Avoidance.
ECE 252 Lecture 19: Deadlock Detection and Recovery.
ECE 252 Lecture 20: Advanced Concurrency Problems.
ECE 252 Lecture 21: Condition Variables, Monitors, and Atomic Types.
ECE 252 Lecture 22: Of Asgard and Hel.
ECE 252 Lecture 23: The Byzantine Generals Problem.
ECE 252 Lecture 24: Concurrency in File Systems.
ECE 252 Lecture 25: More Concurrency in File Systems.
ECE 252 Lecture 26: Asynchronous I/O with select, poll.
ECE 252 Lecture 27: Asynchronous I/O with curl.
ECE 252 Lecture 28: Asynchronous I/O with AIO.
ECE 252 Lecture 29: Asynchronous I/O with libevent.
ECE 252 Lecture 30: Preparing for the Final.

Taught by

Jeff Zarnett


4.5 rating, based on 6 Class Central reviews

Start your review of Electrical and Computer Engineering - Systems Programming and Concurrency

  • I recently completed an online computer engineering course, and I must say it was a rewarding experience. The course was offered by [Course Provider], and here's my detailed review: Content (5/5): The course content was extensive and covered a wi…
  • Pearlin Sheeena R M
    Fine lecture hours . Easy to understand. Learned new concepts on Operating System functionality. Really its awesome.
  • Profile image for Satyam Singh
    Satyam Singh
    Nice understanding the content is good 👍😊👍😊 everyone should learn this very good for ece and other branches too love it
    Thanks a lot! Though I'm a CPA by profession...I am interested to explore engineering courses. For programs are challenging and a tool for real progress. Thus, I am delighted to have discovered this course at a prestigious university. Is there any certificate of completion?
  • Edward Zulu
    Engineering is one of the best courses one can ever take, I really enjoyed the study and I'm hoping to advance in my studies. Engineering is the course that has helped the world to be at the level its at. Because the the revolutions and technology are as a result of Engineering
  • Profile image for Abubakar Abdullahi
    Abubakar Abdullahi
    I am glad have this and I am very very appreciate it and I will be with you all the by the grace of God thank you very much

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.