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.
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.
by Kinshuk V•
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•
First 3 weeks were cool, but the last week was somehow rushed and the assignment did not involve any parallel programming.
by Oliinyk V•
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 Leitner C S E S•
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•
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•
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 Steve S•
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 Zhu L•
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•
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.
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•
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•
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•
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•
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•
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.
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•
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•
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 Č•
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•
The tasks are not well designed for online education
by Pishta Y•
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 Joshua S•
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•
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.
by Ivan S•
I was tearing apart between 4 and 5. Still I liked the course very much asit provides great insight into parallel programming and algorithms. The problem are the assignments that feels a little unbalanced: week3 is just a few lines of code and feels more like quiz while others are quite challenging, but still it seems that a lot of work in assignments is already done by the teaching stuff.
by Vikram B•
The assignments are tougher than expected. I was stuck on Barnes-Hut Simulation and Reductions assignment for more than weeks individually. The explanations are clear, but I wish the week 4 is explained with more clarity. It felt we just rushed into ConcTrees without enough context, and it would better to spend more time on the ConcTree topics and combiners.