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 total reviews

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

By Luiz C on 4 months ago

3rd Course of the Specialization Functional Programming In Scala: clearly down in quality compared to 2 first ones. () subject () good and challenging assignments (-) videos are too long (-) presentation not engaging (-) MOOC needs a refresh

By Borowis B on 10 months ago

This course disappointed me a bit after first two courses of programming in scala specialization: turns out good old for loop with mutable vars is much much faster than for expressions and that we threw check style out of the door and our code is much less pretty after all. Well, I guess that was a good lesson: there's functional programming, there are times when we can use it, and there are times when we need all the performance we can get out of our hardware. In terms of lectures and assignments they were average in my opinion, I would actually rate lectures higher than in the Read more This course disappointed me a bit after first two courses of programming in scala specialization: turns out good old for loop with mutable vars is much much faster than for expressions and that we threw check style out of the door and our code is much less pretty after all. Well, I guess that was a good lesson: there's functional programming, there are times when we can use it, and there are times when we need all the performance we can get out of our hardware. In terms of lectures and assignments they were average in my opinion, I would actually rate lectures higher than in the previous courses and assignments lower. I especially liked lego analogies to explain how different types combine together, material on parallel collections and combiners (though this last lecture was a bit hard to understand and assignment was lengthy and didn't re-enforce material enough, so by the time I finished the assignment I already forgot much of what was taught in lecture). Overall, my engagement was average but I appreciate an ability to use an autograder for the assignments without purchasing the course.

By Anonymous on 3 years ago

The first week gives an Okay introduction to the subject, even with half the lessons being about calculating limits of parallelism. I have nothing against those, but the intructors never use that again in the course. Instead, they just go trying differente numbers of threads to see which perform best. The second week has the worst lessons. It's about one hour to explain, very slowly, the concept of Associativity. Again, I have nothing against taking time to explain something carefully. However, all that good care and attention to detail is thrown in the garbage on the last week, that have little more than a half hour of lessons, and an assignment that is not well constructed, explained, and worst: has absolutely NOTHING to do with parallelism. Taking this course, the third one on the Scala Specialization, made me want my money back.

By Tanya C on 22-Apr-18

The course provides a deep dive into Parallel Programming with Scala, and is well worth the time invested.

By Maximiano E S A on 27-Jun-17

great insights

By Twinkal K R on 20-Jan-18

Great course.

By Akash L on 28-May-16

Super!

By HEMACHANDRAN K on 29-Sep-16

hard, weird but awesome

By Mohammad H on 26-Jun-18

The topic is well explained in the videos and the assignments are challenging and fun. I really enjoyed how they (the assignments) are usually put in a context, e.g. they are part of some project and you can see some outcome.

By Rajalakshmi on 28-Nov-16

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 Mohammad A on 23-Jun-16

I've got something new for myself. So I am happy :)

By Calebe M d O C on 25-Oct-16

Pro: A very good course for those who are already experienced in ScalaCon: Only 4 weeks long :)