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

Online Course

Parallel programming

École Polytechnique Fédérale de Lausanne via Coursera

  • Provider Coursera
  • Cost Free Online Course (Audit)
  • Session In progress
  • Language English
  • Certificate Paid Certificate Available
  • Duration 4 weeks long
  • Learn more about MOOCs

Taken this course? Share your experience with other students. Write review


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.

Learning Outcomes. By the end of this course you will be able to:

- reason about task and data parallel programs,
- express common algorithms in a functional style and solve them in parallel,
- competently microbenchmark parallel code,
- write programs that effectively use parallel collections to achieve performance

Recommended background: You should have at least one year programming experience. Proficiency with Java or C# is ideal, but experience with other languages such as C/C++, Python, Javascript or Ruby is also sufficient. You should have some familiarity using the command line. This course is intended to be taken after Functional Program Design in Scala:


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.

-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.

Taught by

Prof. Viktor Kuncak, Dr. Aleksandar Prokopec and Heather Miller

Help Center

Most commonly asked questions about Coursera

Reviews for Coursera's Parallel programming Based on 6 reviews

  • 5 stars 33%
  • 4 stars 33%
  • 3 star 17%
  • 2 star 0%
  • 1 star 17%

Did you take this course? Share your experience with other students.

Write a review
  • 1
Anonymous completed this course.
The first week gives an Okay introduction to the subject, even with half the lessons being about calculating limits of parallelism. I have nothing against those, but the intructors never use that again in the course. Instead, they just go trying differente numbers of threads to see which perform best.

The second week has the worst lessons. It's about one hour to explain, very slowly, the concept of Associativity. Again, I have nothing against taking time to explain something carefully. However, all that "good care" and attention to detail is thrown in the garbage on the last week, that have little more than a half hour of lessons, and an assignment that is not well constructed, explained, and worst: has absolutely NOTHING to do with parallelism.

Taking this course, the third one on the Scala Specialization, made me want my money back.
1 person found
this review helpful
Was this review helpful to you? Yes
Borowis B
by Borowis completed this course, spending 5 hours a week on it and found the course difficulty to be medium.
This course disappointed me a bit after first two courses of "programming in scala" specialization: turns out good old for loop with mutable vars is much much faster than for expressions and that we threw check style out of the door and our code is much less pretty after all. Well, I guess that was a good lesson: there's functional programming, there are times when we can use it, and there are times when we need all the performance we can get out of our hardware.

In terms of lectures and assignments they were average in my opinion, I would actually rate lectures higher than in the…
Was this review helpful to you? Yes
Luiz C
Luiz completed this course, spending 8 hours a week on it and found the course difficulty to be hard.
3rd Course of the Specialization " Functional Programming In Scala": clearly down in quality compared to 2 first ones.

(+) subject

(+) good and challenging assignments

(-) videos are too long

(-) presentation not engaging

(-) MOOC needs a refresh
Was this review helpful to you? Yes
Chema C
by Chema completed this course.
Was this review helpful to you? Yes
Panayiotis T
by Panayiotis completed this course.
Was this review helpful to you? Yes
Juan C
Juan completed this course.
Was this review helpful to you? Yes
  • 1

Class Central

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

Sign up for free

Never stop learning Never Stop Learning!

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

Sign up for free