icon
Quality Score

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

Overall Score : 86 / 100

icon
Live Chat with CourseDuck's Co-Founder for Help

Need help deciding on a javascript course? Or looking for more detail on Prof. Viktor Kuncak and Dr. Aleksandar Prokopec's Parallel programming? Feel free to chat below.
Join CourseDuck's Online Learning Discord Community

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

103 total reviews

5 star 4 star 3 star 2 star 1 star
% Complete
% Complete
% Complete
% Complete
% Complete

By VICTOR A on 11-Aug-18

All but the last assignment are interesting. A fair amount of the lectures are also good, even though some of them are too theoretical - the bad lectures are the ones that focus too much into proving mathematical properties, but thankfully there is just a few of those.The last assignment is considerably larger than the other ones and requires a physics background (or interest to do research on your own). I think they could improve it by approaching the material independently with smaller exercises before applying them again into the larger application that is built as part of the assignment today.

By ejla on 8-Mar-19

Plus: Very in-depth lectures, challenging assignments. Minus: The actual parallel code somewhat remains a black-box, assignments sometimes focus more on figuring out the algorithm logic which may not have anything to do with the course. Still I enjoyed it and learned a great deal.

By Leitner C S E S on 21-Nov-17

Some of the practical examples are a bit tedious, because the bigger issues you sometimes need to solve seem to be implementing a random algorithm, instead of implementing its parallelization per se. That is, the support classes for parallelizing the algorithms are pre-coded for you, while you at times spend more time figuring out how the algorithm itself needs to be implemented with that rather than coming up with these parallelization semaphores (which I would have considered more interesting, at least). But the content covered is highly relevant and first class (the authors being world-leading experts on the topic), so if you are interested in parallel programming, this is course is a great choice.

By Marcin Z on 16-Apr-19

First 3 weeks were cool, but the last week was somehow rushed and the assignment did not involve any parallel programming.

By Ilya B on 20-Jan-19

The tasks are not well designed for online education

By Kinshuk V on 16-Dec-17

Although the course is taught well and covers a lot of ground, it is my opinion that the course content is not relevant to what I and majority of other Scala developers were looking for in terms of parallel programming. The instructor has been upfront in differentiating parallel programming (the objective of this course) from concurrency programming. However, I was more interested in learning about concurrency, especially about Akka actors, etc. I wish there was a course of Akka, which is what most Scala developers use for concurrent applications.

By Oliinyk V on 2-Apr-18

General idea of the course is very good. There are a few things to improve though:Focus more on intuition behind algorithms rather than formal mathBuild a solid foundation that would allow students to develop parallel algorithms themselves. Practical assignments should focus exactly on this, rather than filling in missing pieces of code that are only tangentially related to the algorithm itself. It would be helpful if the course provided minimal but solid basics and intuition behind parallel computations. The basics that would allow students to learn more advanced concepts themselves.In any case, the course has a lot of value and the instructors are awesome.

By Denys L on 10-Dec-18

Nice and complicated

By Christoph K on 27-Nov-18

Very interesting material, especially the prefix sum algorithms about, how to transform a sequential problem into a parallel problem.

By Bruno M on 3-Dec-18

Very good introductory theoretical foundation for parallell algorithms, and background for the Big Data Analysis with Scala and Spark course.

By Sviridenko K on 26-Mar-19

Amazing practice assignments! It was very interesting to solve them.

By Paulo R d O C on 13-Sep-18

Hard course, but gives good insights about the challenges and solutions for parallel programming.