Chevron Left
Back to Parallel programming

Learner Reviews & Feedback for Parallel programming by École Polytechnique Fédérale de Lausanne

4.4
stars
1,840 ratings

About the 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....

Top reviews

AL

Apr 23, 2018

The course is fairly advanced and you would need to review the materials many times to understand the concept. The assignments are definitely fun and not as straightforward as other courses.

RC

Aug 24, 2017

Superb study material. Learnt a lot during this course. I am not much into mathematical stuff, but got a hang of how to break problems and improve efficiency through parallelism.

Filter by:

1 - 25 of 274 Reviews for Parallel programming

By Kinshuk V

Dec 16, 2017

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 Marcin Z

Apr 16, 2019

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

By Vadim O

Apr 2, 2018

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 math

Build 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 Steve S

Nov 16, 2017

This course was okay, but I feel it could use some work. For starters:

-I feel some of the longer assignments should be split up into several weeks (the Barnes-Hut one for example, since there's a lot to implement and it took a while to understand conceptually).

-I feel that some parts of the assignment specs could be more clear. For example, in the K-means assignment, it was mentioned to use the "square distance" between the means to determine if the algorithm had converged or not and I feel it would be useful to provide a mathematical formula here (or at least give the name of the formula i.e., Pythagorean).

-I wish there was more focus on making the assignments practical instead of something that's more sophisticated. For example, it would've been nice to have an assignment for week 4 that allowed us to practice implementing a variety of parallelizable data structures and focus on making them as efficient as possible.

By Leitner C S E S

Nov 21, 2017

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 Samir S

Jul 19, 2020

This was a truly fascinating course! I'm so glad I decided to check out this course immediately after completing Professor Odersky's first 2 courses in the Scala Specialization track. I am an experienced Software developer with quite a bit of experience working with parallelism using imperative languages like Java. However, I must confess that after I've completed this course, I have learnt more than I ever imagined I could in the past 4 weeks. A whole new world has opened up before my very eyes. I have fallen in love with Parallelism in the Functional Programming world, and I feel like rewriting all the imperative code I've ever written using the FP paradigm. The lectures were really informative and there was never a boring moment, but what really stood out were the incredible assignments, which contributed immensely to all these ideas getting etched in my brain. This course definitely has something for newbies as well as experienced developers.

By Hessam S M

Feb 8, 2018

This is not a normal parallel programming about some API codes. In this course details of parallel algorithms and the mathematical part of it is covered like what kind of operation can be used in map reduce. All in all I enjoyed this course very much and learned a great deal from it. I strongly recommend this to everyone who wants to learn the details of parallel programming beyond scala or any other programming language.

By Li Z

Jul 18, 2017

Basically the lecture is more focused on the theoretical side of parallel programming, while the programming assignment on the more hands-on problem solving aspects.

I like that. Lectures shouldn't be too lengthy, the research and thinking are best left to the students themselves.

Some complain the programming assignments (especially the Barnes-Hut simulation) are too much trouble, I think it's OK.

Actually I wouldn't mind if it become even harder.

One suggestion, though. I think it would be helpful if the course can provide a summary of programming tips for Scala.

After all, many people come here with a mindset in imperative or OO programming. The conversion to FP can be a bit uneasy.

By Rishi K

Sep 12, 2016

Parallel Programming course in Scala will help you to program at a higher level, reason about task and data parallel programs, express common algorithms in a functional style and solve them in parallel, competently microbenchmark parallel code, and write programs that effectively use parallel collections to achieve performance. The course content was well organized and it had in - depth assignments which were relatively difficult for me to complete. I would recommend this course to everyone, and one should take it only after taking the 'Fundamental Programming Principles in Scala' and 'Functional Program Design in Scala' courses.

By murmelssonic

Aug 15, 2016

Good course. The only thing I would suggest to improve is in the Assignments, the error messages are not always sufficient information to recreate the bug that caused the error, so it is hard to correct the bug (since if you don't recreate the bug, you don't find the root cause). On the other hand it's understandable, that giving away too much info from the grader makes it easier to "workaround" the failed test without necessarily providing a good solution. Tricky trade-off.

Anyway, both the lecturers do a very good job of explaining fairly complex stuff in ways that non-computer-science students can understand.

By Xiongchu W

Dec 6, 2016

Force students to develop the assignment code by TDD, which is very good. All the assignments are not just toy problems, which is excellent as well. If you want to learn some parallel programming algorithms, you do choose this course. The drawbacks may be that some of the concepts or expression in the lectures are obscured. Although the assignments cover almost all the important algorithms and data structures, like UpSweep, DownSweep, reducing tree and combiners, the exercises on these things are not enough.

By Vital A

Feb 17, 2017

This is not a course about concurrency with Scala; it has very basic coverage of threads and synchronization towards the beginning, and that's it.

This is about parallelism, specifically about approaches to program design with the goal of leveraging parallelism. Yes, the assignments require immersing oneself in problems that have little to do with parallelism per se. But they are interesting, fun, and of course they nicely illustrate the concepts that are being imparted.

Another excellent course by EPFL.

By Joël V

Apr 22, 2019

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.

By Massimiliano D

Nov 9, 2018

This course analyse the parallel programming from both practical and theoretical point of view. It gives the instruments both to understand the Scala library in its completeness and expressiveness in parallel computing, and the theoretical knowledge to understand what's "under the hood", to allow the student to understand whether the parallelism could be effective or not.

I greatly suggest this course to anyone interested in parallel computing.

By Natalija I

Mar 16, 2018

This was a great course about parallel programming. I learned a lot and most importantly I learned how to write algorithms that are executed parallel. The topic is not easy and I scratch just the surface, but I have now basic understanding why we use parallel programs, how and when to use them. Thank you to both instructors. Their lectures were very well paced and cover some topic more theoretically in depth. Looking forward to learn more.

By Marek

Jun 29, 2016

Great introduction to parallel programming, excercises help to understand topics covered in the lectures. However, if you want to be an expert and understand every detail, you'll need to go further and look for implementations details of several constructs used in these lectures but I think adding all of the details for this short course would make it much less understandable and bad in overall effect.

By Roberto S

Jun 23, 2017

Quite advanced for someone with little background in parallel processing. The learning curve is not too steep, though, and the concepts sink in at a steady pace. The assignments are quite interesting as well; they manage to keep them enough real-life to make them interesting while simplifying them enough so learning the concept is not obscured by too much clutter.

By Victor A

Aug 11, 2018

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 Č

Mar 8, 2019

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 Ilya B

Jan 20, 2019

The tasks are not well designed for online education

By Yevhenii S

Apr 4, 2020

This course is quite hard to understand with tasks especially at the end of week 4. I'm not sure that this is very useful now, cause no examples and explanation of current libs in scala for parallel programming, just couple of main classes or methods. From time to time a lot of good examples reg parallelism and associativity, but I'm not sure that we need this kind of deep math and algorithms here in current tasks. This course has academy level of understanding and not adapted for all kind of Software Engineers, etc.

By Rachapong C

Jun 16, 2020

This course is interesting like the 1st and 2nd course.

However, don't expect to receive any feedback or help in the forum like the first 2 courses. There is none.

I've completed the course for 12 days and yet my questions in the week 1 and 2 forums still haven't been answered at all. The question on the final assignment still haven't been answered either, so I'm still in the dark of how a part of my program was wrong.

By Pishta Y

Nov 28, 2016

Everything is good. I like course. But I had trouble with finding reason of some failed tests. It is very annoying when test fails, you lost some points but reason is unknown - if test failed for some particular reason it doesn't mean that that particular check or part of implementation is incorrect: reason can be in some other place not covered with test at all. Hope more tests will be provided, and for each fail will be possible find particular incorrect function or even check in some function. Full coverage by tests for each tasks can make course learning much more efficient.

By Josh S

Nov 15, 2018

Like the other courses in this series, the lectures and exercises are excellent. Coming from a communications background, this course presented me with an opportunity to build on what I already knew but also offered new and interesting insights related to algorithm performance tuning. The course has a nice mix of theory and serviceable information. If you've never done any type of high-performance computing, this is a nice gentle introduction into the subject. The instructions took a lot of time to build fun and interesting exercises that are meticulously constructed.

By Tri N

Dec 12, 2016

Excellent course. There is no books about Scala that can teach Parallel Computing as well as this course. Code sample of exercises in lecture is supplied on GitHub. Excellent video quality, especially the overlay annotation by the teacher with nice hand drawing. The assignments are very interesting, showing real world concrete problems, add a nice application to the concepts we learnt in the course.