Parallel programming

Created by: Prof. Viktor Kuncak and Dr. Aleksandar Prokopec

Course Description

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 functiol 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 Functiol Program Design in Scala:

Instructor Details

Prof. Viktor Kuncak and Dr. Aleksandar Prokopec

Viktor Kuncak is an associate professor in the EPFL School of Computer and Communication Sciences, where, since 2007, he leads the Laboratory for Automated Reasoning and Analysis ( He works in formal methods with emphasis on algorithms and tools, such as Leon tool for verification and synthesis of Scala programs ( His community service include co-chairing CAV 2017, SYNT 2015, FMCAD 2014, and VMCAI 2012. He also co-led an international COST Action to establish standardized formats for verification and synthesis (Rich Model Toolkit). His proposal on Implicit Programming, aiming to bridge the gap between human goals and their computational realizations, was funded in 2012 by a European Research Council (ERC) starting grant. Viktor Kuncak received a PhD degree from the Massachusetts Institute of Technology (MIT) in 2007.

Read More



465 total reviews

5 star 4 star 3 star 2 star 1 star
50% Complete
32% Complete
10% Complete
3% Complete
2% Complete
50% 32% 10% 3% 2%