Parallel and Concurrent Programming with Java 2
2h 14mAdvanced2019-07-30
Authors

Barron Stone
Electrical Engineer

Olivia Chiu Stone
Programmer, Engineer
Course details
With parallel computing, you can leverage multiple compute resources to tackle larger problems in a shorter amount of time. In this course, the second in the Parallel and Concurrent Programming with Java series, take a deeper dive into the key mechanisms for writing concurrent and parallel programs. Instructors Olivia and Barron Stone make these (often abstract) concepts down-to-earth, demonstrating key ideas using common kitchen activities. Learn all about synchronization, thread pools, asynchronous tasks, evaluating parallel performance, designing parallel programs, and more. Upon wrapping up this course, you'll have a solid understanding of how to parallelize a sequential program.
Learning objectives
Using a condition variable
Using a semaphore
Preventing a race condition
Use cases for a Barrier vs. a CountDownLatch
Drawing a directed acyclic graph
Using a future
Steps in a divide-and-conquer algorithm
Evaluating parallel performance
Designing parallel programs
Learning objectives
Using a condition variable
Using a semaphore
Preventing a race condition
Use cases for a Barrier vs. a CountDownLatch
Drawing a directed acyclic graph
Using a future
Steps in a divide-and-conquer algorithm
Evaluating parallel performance
Designing parallel programs
Skills covered
JavaProgramming FoundationsOracleProgramming LanguagesSoftware DevelopmentDeep Dive (X:Y)
Concepts
0. Introduction
- 01 - Learn parallel programming basics
- 02 - What you should know
- 03 - Exercise files
1. Synchronization
- 04 - Condition variable
- 05 - Condition variable - Java demo
- 06 - Producer consumer
- 07 - Producer consumer - Java demo
- 08 - Semaphore
- 09 - Semaphore - Java demo
2. Barriers
- 10 - Race condition
- 11 - Race condition - Java demo
- 12 - Barrier
- 13 - Barrier - Java demo
- 14 - CountDownLatch - Java demo
3. Asynchronous Tasks
- 15 - Computational graph
- 16 - Thread pool
- 17 - Thread pool - Java demo
- 18 - Future
- 19 - Future - Java demo
- 20 - Divide and conquer
- 21 - Divide and conquer - Java demo
4. Evaluating Parallel Performance
- 22 - Speedup, latency, and throughput
- 23 - Amdahl's law
- 24 - Measure speedup
- 25 - Measure speedup - Java demo
5. Designing Parallel Programs
- 26 - Partitioning
- 27 - Communication
- 28 - Agglomeration
- 29 - Mapping
6. Challenge Problems
- 30 - Welcome to the challenges
- 31 - Challenge - Matrix multiply in Java
- 32 - Solution - Matrix multiply in Java
- 33 - Challenge - Merge sort in Java
- 34 - Solution - Merge sort in Java
- 35 - Challenge - Download images in Java
- 36 - Solution - Download images in Java
Conclusion
- 37 - Next steps
- 38 - Additional resources