- Level Professional
- Duration 33 hours
- Course by École Polytechnique Fédérale de Lausanne
-
Offered by
About
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.Modules
Parallel Programming
- Example
- Parallel Box Blur Filter
- Parallel Box Blur Filter
9
Videos
- Course Overview
- Introduction to Parallel Computing
- Parallelism on the JVM I
- Parallelism on the JVM II
- Running Computations in Parallel
- Monte Carlo Method to Estimate Pi
- First-Class Tasks
- How Fast are Parallel Programs?
- Benchmarking Parallel Programs
5
Readings
- Working on Assignments
- Tools Setup (Please read)
- SBT tutorial and Submission of Assignments (Please read)
- Cheat Sheet
- Scala Style Guide
Basic Task Parallel Algorithms
- Reductions and Prefix Sums
- Reductions and Prefix Sums
6
Videos
- Parallel Sorting
- Data Operations and Parallel Mapping
- Parallel Fold (Reduce) Operation
- Associativity I
- Associativity II
- Parallel Scan (Prefix Sum) Operation
Data-Parallelism
- K-Means
- K-Means
5
Videos
- Data-Parallel Programming
- Data-Parallel Operations I
- Data-Parallel Operations II
- Scala Parallel Collections
- Splitters and Combiners
Data Structures for Parallel Computing
- Barnes-Hut Simulation
- Barnes-Hut Simulation
5
Videos
- Implementing Combiners
- Parallel Two-phase Construction
- Conc-tree Data Structure
- Amortized, Constant-time Append Operation
- Conc-Tree Combiners
Auto Summary
Discover the fundamentals of parallel programming in the "Parallel Programming" course, hosted by Coursera. Ideal for IT and computer science enthusiasts with at least a year of programming experience, this professional-level course delves into task and data parallelism using functional ideas. Instructor-led lessons and hands-on examples, including k-means clustering algorithms, will guide you in effectively parallelizing code and using Scala's parallel collections library. With a duration of 1980 minutes and available through Starter and Professional subscriptions, this course is perfect for those looking to enhance their parallel programming skills.

Prof. Viktor Kuncak

Dr. Aleksandar Prokopec