Complete Guide to Parallel and Concurrent Programming with C++
4h 4mIntermediate2025-01-24
Authors

Barron Stone
Electrical Engineer
Course details
Parallel programming unlocks a program’s ability to execute multiple instructions simultaneously, increases the overall processing throughput, and is key to writing faster and more efficient applications. In this course, join instructors Barron and Olivia Chiu Stone as they introduce the basics of parallel and concurrent programming in C++, providing the foundational knowledge you need to write more efficient, performant code. Barron and Olivia explain concepts like threading and mutual exclusion in a fun and informative way, relating them to everyday activities you perform in the kitchen. To cement the ideas, they demo them in action using C++. Each lesson is short and practical, driving home the theory with hands-on techniques. By the end of this course, you'll be prepared to analyze the performance impact of parallel and concurrent programming techniques, evaluating the trade-offs and applying the appropriate programming patterns to optimize the throughput and efficiency of their C++ applications.
Skills covered
C++Programming FoundationsProgramming LanguagesOpen SourceSoftware DevelopmentOne-Off
Concepts
0. Introduction
- 01 - Learn parallel programming basics
- 02 - What you should know
- 03 - Installing Cygwin and Visual Studio Code
1. Parallel Computing Hardware
- 04 - Sequential vs. parallel computing
- 05 - Parallel computing architectures
- 06 - Shared versus distributed memory
2. Threads and Processes
- 07 - Thread versus process
- 08 - Thread versus process - C++ demo
- 09 - Concurrent versus parallel execution
- 10 - Execution scheduling
- 11 - Execution scheduling - C++ demo
- 12 - Thread life cycle
- 13 - Thread life cycle - C++ demo
- 14 - Detached thread
- 15 - Detached thread - C++ demo
3. Mutual Exclusion
- 16 - Data race
- 17 - Data race - C++ demo
- 18 - Mutual exclusion
- 19 - Mutual exclusion - C++ demo
- 20 - Atomic objects - C++ demo
4. Locks
- 21 - Recursive mutex
- 22 - Recursive mutex - C++ demo
- 23 - Try lock
- 24 - Try lock - C++ demo
- 25 - Shared mutex
- 26 - Shared mutex - C++ demo
5. Liveness
- 27 - Deadlock
- 28 - Deadlock - C++ demo
- 29 - Abandoned lock
- 30 - Abandoned lock - C++ demo
- 31 - Starvation
- 32 - Starvation - C++ demo
- 33 - Livelock
- 34 - Livelock - C++ demo
6. Synchronization
- 35 - Condition variable
- 36 - Condition variable - C++ demo
- 37 - Producer-consumer - C++ demo
- 38 - Semaphore
- 39 - Semaphore - C++ demo
7. Barriers
- 40 - Race condition
- 41 - Race condition - C++ demo
- 42 - Barrier
- 43 - Barrier - C++ demo
- 44 - Latch - C++ demo
8. Asynchronous Tasks
- 45 - Computational graph
- 46 - Thread pool
- 47 - Thread pool - C++ demo
- 48 - Future
- 49 - Future - C++ demo
- 50 - Divide and conquer
- 51 - Divide and conquer - C++ demo
9. Evaluating Parallel Performance
- 52 - Speedup, latency, and throughput
- 53 - Amdahl's law
- 54 - Measure speedup
- 55 - Measure speedup - C++ demo
10. Designing Parallel Programs
- 56 - Partitioning
- 57 - Communication
- 58 - Agglomeration
- 59 - Mapping
11. Challenge Problems
- 60 - Welcome to the challenges
- 61 - Challenge - Matrix multiply
- 62 - Solution - Matrix multiply
- 63 - Challenge - Merge sort
- 64 - Solution - Merge sort
- 65 - Challenge - Download images
- 66 - Solution - Download images
Conclusion
- 67 - Next steps
Related courses
- Complete Guide to Parallel and Concurrent Programming with Java
- Complete Guide to Parallel and Concurrent Programming in Python
- Complete Guide to Apache Kafka for Beginners
- Complete Guide to AI and Data Science for SQL: From Beginner to Advanced
- Complete Guide to Power BI for Data Analysts by Microsoft Press (2024)
- Complete Guide to R: Wrangling, Visualizing, and Modeling Data
- Complete Guide to C Programming Foundations
- Complete Guide to Java Design Patterns: Creational, Behavioral, and Structural
Related learn paths
- Explore Music Production
- Explore a Career in Data Engineering
- Introduction to Fundamental Skills for Data Work: Data Strategy and Planning
- Introduction to Fundamental Skills for Data Work: Data Collection
- Introduction to Fundamental Skills for Data Work: Data Storage
- Advance Your Skills in R
- Explore a Career as a Power BI Specialist
- Introduction to Fundamental Skills for Data Work: Data Analysis and Interpretation