- Level Professional
- المدة 33 ساعات hours
- الطبع بواسطة École Polytechnique Fédérale de Lausanne
-
Offered by
عن
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.الوحدات
Parallel Programming
- Example
- Parallel Box Blur Filter
- Parallel Box Blur Filter
9
Videos
- Course Overview
- Introduction to Parallel Computing
- Parallelism on the JVM I
- Parallelism on the JVM II
- Running Computations in Parallel
- Monte Carlo Method to Estimate Pi
- First-Class Tasks
- How Fast are Parallel Programs?
- Benchmarking Parallel Programs
4
Readings
- Tools Setup (Please read)
- IntelliJ IDEA Tutorial
- Sbt Tutorial
- Submitting Solutions
Basic Task Parallel Algorithms
- Reductions and Prefix Sums
- Reductions and Prefix Sums
6
Videos
- Parallel Sorting
- Data Operations and Parallel Mapping
- Parallel Fold (Reduce) Operation
- Associativity I
- Associativity II
- Parallel Scan (Prefix Sum) Operation
Data-Parallelism
- K-Means
- K-Means
5
Videos
- Data-Parallel Programming
- Data-Parallel Operations I
- Data-Parallel Operations II
- Scala Parallel Collections
- Splitters and Combiners
Data Structures for Parallel Computing
- Barnes-Hut Simulation
- Barnes-Hut Simulation
5
Videos
- Implementing Combiners
- Parallel Two-phase Construction
- Conc-tree Data Structure
- Amortized, Constant-time Append Operation
- Conc-Tree Combiners
Auto Summary
Discover the essentials of parallel programming with Scala 2 in this engaging course designed for IT and Computer Science professionals. Led by expert instructors, you'll explore task and data parallelism, leveraging functional programming concepts. Through hands-on examples and real-world data analysis, master parallel collections and enhance performance. Ideal for those with a year of programming experience and familiarity with Java, C#, or other languages. This professional-level course spans 1980 minutes and offers a Starter subscription option. Join now to elevate your parallel programming skills!

Prof. Viktor Kuncak

Dr. Aleksandar Prokopec