Coursera

Catalog
  • Browse
  • Search
  • For Enterprise
  • Log In
  • Sign Up
  • Explore
  • For Enterprise
  • Sign Up
  • Log In
Coursera

Parallel programming

OverviewSyllabusFAQsCreatorsPricingRatings and Reviews

HomeComputer ScienceSoftware Development

Parallel programming

École Polytechnique Fédérale de Lausanne

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
É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
LevelIntermediate
Language
English
How To PassPass all graded assignments to complete the course.
User Ratings
4.4 stars
Average User Rating 4.4See what learners said
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
  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
  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
  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
  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

FAQs
How It Works
Coursework
Coursework

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

Help from Your Peers
Help from Your Peers

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

Certificates
Certificates

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

Creators
École Polytechnique Fédérale de Lausanne
Pricing
Purchase Course
Access to course materials

Available

Access to graded materials

Available

Receive a final grade

Available

Earn a shareable Course Certificate

Available

Ratings and Reviews
Rated 4.4 out of 5 of 1,325 ratings
VICTOR ARIAS

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.

manuel Bello Lopez

Excelente curso...

Yiran Wang

just one point to improve: some lib in Scala are not be told to install and use

ST

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.



You May Also Like
École Polytechnique Fédérale de Lausanne
Functional Program Design in Scala
1 course
École Polytechnique Fédérale de Lausanne
Functional Program Design in Scala
View course
École Polytechnique Fédérale de Lausanne
Big Data Analysis with Scala and Spark
1 course
École Polytechnique Fédérale de Lausanne
Big Data Analysis with Scala and Spark
View course
University of California San Diego
Big Data Integration and Processing
1 course
University of California San Diego
Big Data Integration and Processing
View course
University of California San Diego
Big Data Modeling and Management Systems
1 course
University of California San Diego
Big Data Modeling and Management Systems
View course
École Polytechnique Fédérale de Lausanne
Functional Programming Principles in Scala
1 course
École Polytechnique Fédérale de Lausanne
Functional Programming Principles in Scala
View course
Coursera
Coursera provides universal access to the world’s best education, partnering with top universities and organizations to offer courses online.
© 2018 Coursera Inc. All rights reserved.
Download on the App StoreGet it on Google Play
  • Coursera
  • About
  • Leadership
  • Careers
  • Catalog
  • Certificates
  • Degrees
  • For Business
  • For Government
  • Community
  • Partners
  • Mentors
  • Translators
  • Developers
  • Beta Testers
  • Connect
  • Blog
  • Facebook
  • LinkedIn
  • Twitter
  • Google+
  • Tech Blog
  • More
  • Terms
  • Privacy
  • Help
  • Accessibility
  • Press
  • Contact
  • Directory
  • Affiliates