Skip to content

icon
Quality Score

Content Quality
/
Video Quality
/
Qualified Instructor
/
Course Pace
/
Course Depth & Coverage
/

Overall Score : 84 / 100

icon
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 performanceRecommended 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: https://www.coursera.org/learn/progfun2.

icon
Instructor Details

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 (https://lara.epfl.ch). He works in formal methods with emphasis on algorithms and tools, such as Leon tool for verification and synthesis of Scala programs (https://leon.epfl.ch). 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.

icon
Reviews

4.2

230 reviews in total

Select a bar to show only those reviews.Select the bar again to show every rating.

By Gabriele A on 30-Oct-19

Really cool course. I'm enjoying scala as a language as it has many simple methods to achieve complex goals, including parallelization, however this course also presents parallelism in a rawer fashion explaining in depth some of the techniques to parallelize seemingly sequential-only tasks.Last week's exercise is quite long, and albeit being a truly beautiful project, most of the implementation is not strictly related to parallel programming.In any case a totally good course!

By Daniel B on 10-Oct-19

Good course with a lot of interesting ideas and explanations. The reason I gave it a 4 and not a 5 is that I think it would have been better without involving instructors' own library on top of Scala instead of teaching Scala-level constructs directly. While I appreciate the notion of teaching general parallel programming ideas, introducing one's own constructs to promote it seems unnecessary - at the very least, these constructs' implementation should have been thoroughly explained in the course.

By Alan A C on 6-Oct-19

Interesting course but math part is too academic and boring. It'll be more useful if focused only in real use cases.

By Shi Y on 13-Sep-19

Some instruction is pretty confusing

By Alexey P on 13-Sep-19

It would be great to have some tests for understanding algorithms (like in algorithms course), not only practice programming assignments. Assignments are really interesting but can't verify your understand material or not. Also it is possible to pass assignment event if you have mistakes in the code.

By Sanjeev R on 26-Aug-19

Excellent

By G. U M on 25-Aug-19

best course

By Santiago A on 30-Jul-19

Unbelievable. This course is a must for those who are looking to work in depth with data parallel intensive applications like Spark and want to understand the mathematics underlying the parallel computing. Thank you very much Viktor and Aleksandar!

By Leonardo L e C on 21-Jun-19

Very good!

By Artem B on 23-May-19

Great course with very entertaining exercises!

By 李帅鹏 on 30-Apr-19

Perfect! Learning Parallel Programming, I can learn more about Spark and Flink. Thanks

By Joël V on 22-Apr-19

This course introduces an elegant and practical alternative to purely lock based parallelism by exploiting data & task parallelism intrinsic to many problems. It also emphasizes the mathematical requirements to use such tooling. The course slides/videos provide an good theoretical introduction with short code examples. The (fun ;-) )ctional exercises greatly echo the theoretical course with problems which appear almost effortless to parallelize.

Showing 12 of 230 reviews