Parallel programming

  • 4.4
Approx. 33 hours to complete

Course Summary

Parallel programming is becoming increasingly important as computing power continues to grow. In this course, you will learn the fundamentals of parallel programming using the OpenMP (Open Multi-Processing) framework in C++, with an emphasis on practical applications.

Key Learning Points

  • Understand the basics of parallel programming and how it differs from sequential programming
  • Learn how to use OpenMP to write parallel programs in C++
  • Apply parallel programming to various tasks such as image processing and numerical simulations

Related Topics for further study


Learning Outcomes

  • Understand the basics of parallel programming and how to apply it to real-world problems
  • Learn how to use OpenMP to write parallel programs in C++
  • Gain experience with parallel programming through hands-on programming assignments

Prerequisites or good to have knowledge before taking this course

  • Proficiency in C++ programming
  • Familiarity with basic programming concepts such as loops and functions

Course Difficulty Level

Intermediate

Course Format

  • Online
  • Self-paced

Similar Courses

  • Heterogeneous Parallel Programming
  • Parallel, Concurrent, and Distributed Programming in Java
  • Introduction to Parallel Programming with MPI

Related Education Paths


Related Books

Description

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.

Outline

  • Parallel Programming
  • 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
  • Working on Assignments
  • Tools Setup (Please read)
  • SBT tutorial and Submission of Assignments (Please read)
  • Cheat Sheet
  • Scala Style Guide
  • Basic Task Parallel Algorithms
  • Parallel Sorting
  • Data Operations and Parallel Mapping
  • Parallel Fold (Reduce) Operation
  • Associativity I
  • Associativity II
  • Parallel Scan (Prefix Sum) Operation
  • Data-Parallelism
  • Data-Parallel Programming
  • Data-Parallel Operations I
  • Data-Parallel Operations II
  • Scala Parallel Collections
  • Splitters and Combiners
  • Data Structures for Parallel Computing
  • Implementing Combiners
  • Parallel Two-phase Construction
  • Conc-tree Data Structure
  • Amortized, Constant-time Append Operation
  • Conc-Tree Combiners

Summary of User Reviews

Discover the art of parallel programming and become an expert in this highly sought after skill with Coursera's ParProg1. This course has received high ratings and positive feedback from learners. Many users have praised the course for its practical approach to teaching parallel programming.

Key Aspect Users Liked About This Course

The practical approach to teaching parallel programming.

Pros from User Reviews

  • The course provides a great introduction to parallel programming.
  • The instructors are knowledgeable and engaging.
  • The assignments and quizzes are challenging and help solidify the concepts.
  • The course is well-structured and easy to follow.
  • The course materials are of high quality and well-presented.

Cons from User Reviews

  • Some users felt that the course was too challenging for beginners.
  • Some users felt that the course did not provide enough hands-on experience.
  • Some users felt that the course could benefit from more practical examples.
  • Some users felt that the course could benefit from more interactive elements.
  • Some users felt that the course was too theoretical and lacked real-world applications.
English
Available now
Approx. 33 hours to complete
Prof. Viktor Kuncak, Dr. Aleksandar Prokopec
École Polytechnique Fédérale de Lausanne
Coursera

Instructor

Prof. Viktor Kuncak

  • 4.4 Raiting
Share
Saved Course list
Cancel
Get Course Update
Computer Courses