Parallel programming
When you enroll for courses through Coursera you get to choose for a paid plan or for a free plan .
- Free plan: No certicification and/or audit only. You will have access to all course materials except graded items.
- Paid plan: Commit to earning a Certificate—it's a trusted, shareable way to showcase your new skills.
About this course: 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 conc…

There are no frequently asked questions yet. If you have any more questions or need help, contact our customer service.
When you enroll for courses through Coursera you get to choose for a paid plan or for a free plan .
- Free plan: No certicification and/or audit only. You will have access to all course materials except graded items.
- Paid plan: Commit to earning a Certificate—it's a trusted, shareable way to showcase your new skills.
About this course: 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: https://www.coursera.org/learn/progfun2.
Created by: École Polytechnique Fédérale de Lausanne-
Taught by: Prof. Viktor Kuncak, Associate Professor
School of Computer and Communication Sciences -
Taught by: Dr. Aleksandar Prokopec, Principal Researcher
Oracle Labs
Each course is like an interactive textbook, featuring pre-recorded videos, quizzes and projects.
Help from your peersConnect with thousands of other learners and debate ideas, discuss course material, and get help mastering concepts.
CertificatesEarn official recognition for your work, and share your success with friends, colleagues, and employers.
École Polytechnique Fédérale de LausanneSyllabus
WEEK 1
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.
9 videos, 5 readings expand
- Video: Course Overview
- Video: Introduction to Parallel Computing
- Video: Parallelism on the JVM I
- Video: Parallelism on the JVM II
- Video: Running Computations in Parallel
- Video: Monte Carlo Method to Estimate Pi
- Video: First-Class Tasks
- Video: How Fast are Parallel Programs?
- Video: Benchmarking Parallel Programs
- Reading: Tools Setup
- Reading: Eclipse Tutorial
- Reading: IntelliJ IDEA Tutorial
- Reading: Sbt Tutorial
- Reading: Submitting Solutions
- Ungraded Programming: Example
- Ungraded Programming: Parallel Box Blur Filter
Graded: Parallel Box Blur Filter
WEEK 2
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.
6 videos expand
- Video: Parallel Sorting
- Video: Data Operations and Parallel Mapping
- Video: Parallel Fold (Reduce) Operation
- Video: Associativity I
- Video: Associativity II
- Video: Parallel Scan (Prefix Sum) Operation
- Ungraded Programming: Reductions and Prefix Sums
Graded: Reductions and Prefix Sums
WEEK 3
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.
5 videos expand
- Video: Data-Parallel Programming
- Video: Data-Parallel Operations I
- Video: Data-Parallel Operations II
- Video: Scala Parallel Collections
- Video: Splitters and Combiners
- Ungraded Programming: K-Means
Graded: K-Means
WEEK 4
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.
5 videos expand
- Video: Implementing Combiners
- Video: Parallel Two-phase Construction
- Video: Conc-tree Data Structure
- Video: Amortized, Constant-time Append Operation
- Video: Conc-Tree Combiners
- Ungraded Programming: Barnes-Hut Simulation
Graded: Barnes-Hut Simulation
There are no frequently asked questions yet. If you have any more questions or need help, contact our customer service.
