Parallel programming

Location type
Logo Coursera (CC)
Provider rating: starstarstarstar_borderstar_border 6.3 Coursera (CC) has an average rating of 6.3 (out of 4 reviews)

Need more information? Get more details on the site of the provider.

Description

When you enroll for courses through Coursera you get to choose for a paid plan or for a free plan

  • Free plan: No certicification and/or audit only. You will have access to all course materials except graded items.
  • Paid plan: Commit to earning a Certificate—it's a trusted, shareable way to showcase your new skills.

About this 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 conc…

Read the complete description

Frequently asked questions

There are no frequently asked questions yet. Send an Email to info@springest.com

Didn't find what you were looking for? See also: Algorithms, Programming, Ruby on Rails, Ruby, and Hour of Code.

When you enroll for courses through Coursera you get to choose for a paid plan or for a free plan

  • Free plan: No certicification and/or audit only. You will have access to all course materials except graded items.
  • Paid plan: Commit to earning a Certificate—it's a trusted, shareable way to showcase your new skills.

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

Created by:  École Polytechnique Fédérale de Lausanne
  • Taught by:  Prof. Viktor Kuncak, Associate Professor

    School of Computer and Communication Sciences
  • Taught by:  Dr. Aleksandar Prokopec, Principal Researcher

    Oracle Labs
Basic Info Course 3 of 5 in the Functional Programming in Scala Specialization Level Intermediate Language English How To Pass Pass all graded assignments to complete the course. User Ratings 4.4 stars Average User Rating 4.4See what learners said Coursework

Each course is like an interactive textbook, featuring pre-recorded videos, quizzes and projects.

Help from your peers

Connect with thousands of other learners and debate ideas, discuss course material, and get help mastering concepts.

Certificates

Earn official recognition for your work, and share your success with friends, colleagues, and employers.

École Polytechnique Fédérale de Lausanne

Syllabus


WEEK 1


Parallel Programming



We motivate parallel programming and introduce the basic constructs for building parallel programs on JVM and Scala. Examples such as array norm and Monte Carlo computations illustrate these concepts. We show how to estimate work and depth of parallel programs as well as how to benchmark the implementations.


9 videos, 5 readings expand


  1. Video: Course Overview
  2. Video: Introduction to Parallel Computing
  3. Video: Parallelism on the JVM I
  4. Video: Parallelism on the JVM II
  5. Video: Running Computations in Parallel
  6. Video: Monte Carlo Method to Estimate Pi
  7. Video: First-Class Tasks
  8. Video: How Fast are Parallel Programs?
  9. Video: Benchmarking Parallel Programs
  10. Reading: Tools Setup
  11. Reading: Eclipse Tutorial
  12. Reading: IntelliJ IDEA Tutorial
  13. Reading: Sbt Tutorial
  14. Reading: Submitting Solutions
  15. Ungraded Programming: Example
  16. Ungraded Programming: Parallel Box Blur Filter

Graded: Parallel Box Blur Filter

WEEK 2


Basic Task Parallel Algorithms



We continue with examples of parallel algorithms by presenting a parallel merge sort. We then explain how operations such as map, reduce, and scan can be computed in parallel. We present associativity as the key condition enabling parallel implementation of reduce and scan.


6 videos expand


  1. Video: Parallel Sorting
  2. Video: Data Operations and Parallel Mapping
  3. Video: Parallel Fold (Reduce) Operation
  4. Video: Associativity I
  5. Video: Associativity II
  6. Video: Parallel Scan (Prefix Sum) Operation
  7. Ungraded Programming: Reductions and Prefix Sums

Graded: Reductions and Prefix Sums

WEEK 3


Data-Parallelism



We show how data parallel operations enable the development of elegant data-parallel code in Scala. We give an overview of the parallel collections hierarchy, including the traits of splitters and combiners that complement iterators and builders from the sequential case.


5 videos expand


  1. Video: Data-Parallel Programming
  2. Video: Data-Parallel Operations I
  3. Video: Data-Parallel Operations II
  4. Video: Scala Parallel Collections
  5. Video: Splitters and Combiners
  6. Ungraded Programming: K-Means

Graded: K-Means

WEEK 4


Data Structures for Parallel Computing
We give a glimpse of the internals of data structures for parallel computing, which helps us understand what is happening under the hood of parallel collections.


5 videos expand


  1. Video: Implementing Combiners
  2. Video: Parallel Two-phase Construction
  3. Video: Conc-tree Data Structure
  4. Video: Amortized, Constant-time Append Operation
  5. Video: Conc-Tree Combiners
  6. Ungraded Programming: Barnes-Hut Simulation

Graded: Barnes-Hut Simulation
There are no reviews yet.

Share your review

Do you have experience with this course? Submit your review and help other people make the right choice. As a thank you for your effort we will donate $1.- to Stichting Edukans.

There are no frequently asked questions yet. Send an Email to info@springest.com