With every smartphone and computer now boasting multiple processors, the use of functional ideas to facilitate parallel programming is becoming increasingly widespread. In this course, you'll learn the fundamentals of parallel programming, from task parallelism to data parallelism. In particular, you'll see how many familiar ideas from functional programming map perfectly to to the data parallel paradigm. We'll start the nuts and bolts how to effectively parallelize familiar collections operations, and we'll build up to parallel collections, a production-ready data parallel collections library available in the Scala standard library. Throughout, we'll apply these concepts through several hands-on examples that analyze real-world data, such as popular algorithms like k-means clustering.
This course is part of the Functional Programming in Scala Specialization
Offered By


About this Course
Skills you will gain
- Data Structure
- Parallel Computing
- Data Parallelism
- Parallel Algorithm
Offered by
Syllabus - What you will learn from this course
Parallel Programming
We motivate parallel programming and introduce the basic constructs for building parallel programs on JVM and Scala. Examples such as array norm and Monte Carlo computations illustrate these concepts. We show how to estimate work and depth of parallel programs as well as how to benchmark the implementations.
Basic Task Parallel Algorithms
We continue with examples of parallel algorithms by presenting a parallel merge sort. We then explain how operations such as map, reduce, and scan can be computed in parallel. We present associativity as the key condition enabling parallel implementation of reduce and scan.
Data-Parallelism
We show how data parallel operations enable the development of elegant data-parallel code in Scala. We give an overview of the parallel collections hierarchy, including the traits of splitters and combiners that complement iterators and builders from the sequential case.
Data Structures for Parallel Computing
We give a glimpse of the internals of data structures for parallel computing, which helps us understand what is happening under the hood of parallel collections.
Reviews
- 5 stars59.79%
- 4 stars28.38%
- 3 stars9.18%
- 2 stars1.92%
- 1 star0.71%
TOP REVIEWS FROM PARALLEL PROGRAMMING
excellent course, a good way to showcase how scala is well suited to patallel programming. The course itself is very practical and the instructors are very knowledgeable
The course was really good. Got to learn so much about parallel programming with that course. The explanation level is very basic and any Computer Science related person can easily grasp the concepts
Assignments are focused on problem-solving rather than the importance of parallelism, missing the point of the lecture. It is a Scala course, so it is always fun!
Very good introduction to the topic. Examples and programming exercises were very good, although last assignment was visibly less polished than earlier ones.
About the Functional Programming in Scala Specialization
Discover how to write elegant code that works the first time it is run.

Frequently Asked Questions
When will I have access to the lectures and assignments?
What will I get if I subscribe to this Specialization?
Is financial aid available?
More questions? Visit the Learner Help Center.