Save

Parallel programming

This course is part of a Specialization (series of courses) called Functional Programming in Scala.

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.

Get Details Enroll Now

OpenCourser is an affiliate partner of Coursera.

Coursera

&

École polytechnique fédérale de Lausanne

Rating 4.2 based on 202 ratings
Length 5 weeks
Starts Nov 19 (4 weeks ago)
Cost $79
From École polytechnique fédérale de Lausanne via Coursera
Instructors Prof. Viktor Kuncak, Dr. Aleksandar Prokopec
Free Limited Content
Language English
Subjects Programming
Tags Computer Science Software Development

Create an Alert

Not ready to take this course yet? Sign up for a one-time email reminder with a link to this course.

What people are saying

We analyzed reviews for this course to surface learners' thoughts about it

parallel programming in 36 reviews

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

This was a great course about parallel programming.

Still I liked the course very much asit provides great insight into parallel programming and algorithms.

This is not a normal parallel programming about some API codes.

I strongly recommend this to everyone who wants to learn the details of parallel programming beyond scala or any other programming language.

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.

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.

too much in 10 reviews

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.

Good course, though there is sometimes too much mathematics, what distracts from the purpose to learn parallel paradigm in Scala.

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.

Akka version was better :( Too much imperative technics in this "functional" parallel programming course.

Lesson emphasis too much on specific implementation tricks, and are sometimes hard to follow.

The course was ok, but at times too much theoretical when it comes to proofs of some methods are working as expected.

As result figuring out what the assignment steps are all about takes too much time.

I learned very useful programming techniques, but I'm a bit lost as to whether these techniques are "good practices" or if they are "existing parallel programming features in Java, transposed as-is in Scala" The course achieves its objectives, but the assignments require too much effort for solving general problems, and relatively little for parallelism-related tasks.

rather than in 8 reviews

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.

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

The assignment could be optimized and avoid to be more academic since it may make student lost focus and spend too much time on the question itself rather than the parallel programming Neat , fun, easy going, course Great course I have one issue about week 4 "Append" tree.

I felt myself involved deeply in understanding the problem statement, rather than practicing the concepts explained in the course.

It requires more effort on undestanding the algorithms involved in the problems, rather than paralelism and its techniques.

Assignments are focused on problem-solving rather than the importance of parallelism, missing the point of the lecture.

As someone with zero experience in parallelism, I felt I could've absorbed a lot more if the topics were not completely new to me.As mentioned in other reviews, the last assignment, Barnes Hut Simulation, was very time consuming and I found myself spending more time trying to understand the problem rather than implementing it.

very good course in 7 reviews

Very good course.

A very good course which teaches the techniques of Parallel Programming.

Its a very good course!

very good course.

Very good course overall on the basics of parallel programming in scala.

Pro: A very good course for those who are already experienced in ScalaCon: Only 4 weeks long :) Insightful, though I am not sure if in non R&D/Academia settings the knowledge here can easily be applied.

A very good course, the theories are explained well in the lectures and the assignments cover the learned information without being too difficult Excellent lectures, let down by the difficulty of the assignments.

last assignment in 6 reviews

I am, however, taking one star out for the last assignment which was rather muddy in terms of explanation, long and not easy to debug due to it's size and parallel aspects.

I didn't like the last assignment.

The first two lectures were nearly intolerable to listen to, and the last assignment was very poorly designed and documented.

The last assignment seemed needlessly complex with not enough focus on the parallel programming aspect.

Examples and programming exercises were very good, although last assignment was visibly less polished than earlier ones.

data structures in 5 reviews

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.

Very basic overview of parallel programming algorithms and data structures in scala.

Problems of data structures for parallel computation are explained very well in this course.

Would be good to introduce more about Scala native solutions like Futures, parallel data structures and best ways of using them on practice, cases and best practices how to work with shared data, avoid deadlocks, how to work best when you have to process large data or when you have massive calculations.

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.

Careers

An overview of related careers and their average salaries in the US. Bars indicate income percentile (33rd - 99th).

WHOLESALE DATA ENTRY COORDINATOR $28k

Data Architects $72k

Clinical Data Specialist 3 $78k

Data Management Specialist 3 $78k

Data Management Study Coordinator Manager $88k

Systems Data Analyst $92k

BI Data Architect Manager $101k

Team Data Specialist Lead $105k

Data Consultant Lead $125k

Data Architect Expert $132k

Senior Supervisor Data Science Manager $135k

Enterprise Data Warehouse Architect $143k

Write a review

Your opinion matters. Tell us what you think.

Coursera

&

École polytechnique fédérale de Lausanne

Rating 4.2 based on 202 ratings
Length 5 weeks
Starts Nov 19 (4 weeks ago)
Cost $79
From École polytechnique fédérale de Lausanne via Coursera
Instructors Prof. Viktor Kuncak, Dr. Aleksandar Prokopec
Free Limited Content
Language English
Subjects Programming
Tags Computer Science Software Development