Save for later

Parallel programming

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:

Get Details and Enroll Now

OpenCourser is an affiliate partner of Coursera and may earn a commission when you buy through our links.

Get a Reminder

Send to:
Rating 4.2 based on 261 ratings
Length 5 weeks
Starts Dec 14 (6 weeks ago)
Cost $79
From École polytechnique fédérale de Lausanne via Coursera
Instructors Prof. Viktor Kuncak, Dr. Aleksandar Prokopec
Download Videos On all desktop and mobile devices
Language English
Subjects Programming
Tags Computer Science Software Development

Get a Reminder

Send to:

Similar Courses

What people are saying

parallel programming

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.

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.

Really good course covering some of the fundamentals of parallel programming, though for me I was hoping it would go into some of the Scala specifics a little more Nice course.

They show applications of parallel programming very well.

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

Классный курс 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.

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

Anyone wishing to upgrade their knowledge about Parallel Programming, should take this course.

Interesting course, very useful to get to know concepts of parallel programming.

Read more

too much

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.

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.

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.

Read more

very good course

Very good course.

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

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.

Read more

last assignment

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

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

Thanks The course, especially the last assignment is too overloaded with math that is not really needed during everyday engineering.

I wasn't able to max out the last assignment (I did 9/10) due to another obscure assertion message - "body not found in right sector" and have no idea what was wrong and which body were not in which sector.

Read more

rather than

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.

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.

Good learning materials, however the assignments are designed for compute science students rather than professional software developers as the most important part of the assignments is not parallel code, but it is algorithms.

Read more

data structures

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.

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

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.

Otherwise a great course More emphasis on Parallel Data Structures is needed, course is relatively simple as compared to previous courses from same specialisation Really cool course.

Read more

my opinion

Thank you so much about this course This course could have been better in my opinion, if we could have exercise that would deal with the concepts in more detail.

One case, this is my opinion but it's nice if students learn how scala solves "The dining philosophers" issue.

A must take in my opinion for a better and deep understanding of parallel programming.

Read more

test cases

Wish we could have more assignments and test cases!

:-) unhelpful assignment instructions and test cases.

I wasn't sure what I was doing for a while, and the test cases don't cover the code in a way that progresses naturally.

More test cases in assignments would help in testing and verifying the code After a rather confusing and dissatisfying first week, the course picked up pace nicely in the latter weeks.

Read more

little bit

very good, but need to focus a little bit on how to create tasks and threads Good course and good level on the assignments but needs a lot of improvement on the lectures, specially in the two last weeks.

Course feel a little bit hacked together although not as bad as the Functional Program Design one.Course should be more in depth.

Assignments could be a little bit simpler but involving more programming from scratch, not just filling in methods bodies.

The content in the lecture is a little bit hard to understand.

Read more

parallel computing

This course is an introduction to the challenges of big data sets and the parallel computing solutions available to tackle it.

There is no books about Scala that can teach Parallel Computing as well as this course.

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.

This course is a must for those who are looking to work in depth with data parallel intensive applications like Spark and want to understand the mathematics underlying the parallel computing.

Read more


An overview of related careers and their average salaries in the US. Bars indicate income percentile.

Data Steward/Analyst $52k

Foundation Data Analyst $58k

Data Coordinator 2 3 $65k

Market Data Analyst 2 $65k

Data Quality Steward $71k

Sn Data Analyst $75k

Data Review Scientist $81k

Data Intelligence $86k

Mobile Data Analyst $92k

Data Manager - Marketing $123k

FPGA/ASIC Design Engineer u2013 Accelerated Parallel Computing $131k

HANA Data Architect $140k

Write a review

Your opinion matters. Tell us what you think.

Rating 4.2 based on 261 ratings
Length 5 weeks
Starts Dec 14 (6 weeks ago)
Cost $79
From École polytechnique fédérale de Lausanne via Coursera
Instructors Prof. Viktor Kuncak, Dr. Aleksandar Prokopec
Download Videos On all desktop and mobile devices
Language English
Subjects Programming
Tags Computer Science Software Development

Similar Courses

Sorted by relevance

Like this course?

Here's what to do next:

  • Save this course for later
  • Get more details from the course provider
  • Enroll in this course
Enroll Now