Rice University

Parallel Programming in Java

This course is part of Parallel, Concurrent, and Distributed Programming in Java Specialization

Taught in English

Some content may not be translated

Vivek Sarkar

Instructor: Vivek Sarkar

45,582 already enrolled

Included with Coursera Plus

Course

Gain insight into a topic and learn the fundamentals

4.6

(1,191 reviews)

|

94%

Intermediate level
Some related experience required
19 hours (approximately)
Flexible schedule
Learn at your own pace

Details to know

Shareable certificate

Add to your LinkedIn profile

Assessments

4 quizzes

Course

Gain insight into a topic and learn the fundamentals

4.6

(1,191 reviews)

|

94%

Intermediate level
Some related experience required
19 hours (approximately)
Flexible schedule
Learn at your own pace

See how employees at top companies are mastering in-demand skills

Placeholder

Build your subject-matter expertise

This course is part of the Parallel, Concurrent, and Distributed Programming in Java Specialization
When you enroll in this course, you'll also be enrolled in this Specialization.
  • Learn new concepts from industry experts
  • Gain a foundational understanding of a subject or tool
  • Develop job-relevant skills with hands-on projects
  • Earn a shareable career certificate
Placeholder
Placeholder

Earn a career certificate

Add this credential to your LinkedIn profile, resume, or CV

Share it on social media and in your performance review

Placeholder

There are 7 modules in this course

Welcome to Parallel Programming in Java! This course is designed as a three-part series and covers a theme or body of knowledge through various video lectures, demonstrations, and coding projects.

What's included

1 video5 readings1 programming assignment1 discussion prompt

In this module, we will learn the fundamentals of task parallelism. Tasks are the most basic unit of parallel programming. An increasing number of programming languages (including Java and C++) are moving from older thread-based approaches to more modern task-based approaches for parallel programming. We will learn about task creation, task termination, and the “computation graph” theoretical model for understanding various properties of task-parallel programs. These properties include work, span, ideal parallelism, parallel speedup, and Amdahl’s Law. We will also learn popular Java APIs for task parallelism, most notably the Fork/Join framework.

What's included

7 videos6 readings1 quiz1 programming assignment

Welcome to Module 2! In this module, we will learn about approaches to parallelism that have been inspired by functional programming. Advocates of parallel functional programming have argued for decades that functional parallelism can eliminate many hard-to-detect bugs that can occur with imperative parallelism. We will learn about futures, memoization, and streams, as well as data races, a notorious class of bugs that can be avoided with functional parallelism. We will also learn Java APIs for functional parallelism, including the Fork/Join framework and the Stream API’s.

What's included

7 videos6 readings1 quiz1 programming assignment

Join Professor Vivek Sarkar as he talks with Two Sigma Managing Director, Jim Ward, and Software Engineers, Margaret Kelley and Jake Kornblau, at their downtown Houston, Texas office about the importance of parallel programming.

What's included

2 videos1 reading

Welcome to Module 3, and congratulations on reaching the midpoint of this course! It is well known that many applications spend a majority of their execution time in loops, so there is a strong motivation to learn how loops can be sped up through the use of parallelism, which is the focus of this module. We will start by learning how parallel counted-for loops can be conveniently expressed using forall and stream APIs in Java, and how these APIs can be used to parallelize a simple matrix multiplication program. We will also learn about the barrier construct for parallel loops, and illustrate its use with a simple iterative averaging program example. Finally, we will learn the importance of grouping/chunking parallel iterations to reduce overhead.

What's included

7 videos6 readings1 quiz1 programming assignment

Welcome to the last module of the course! In this module, we will wrap up our introduction to parallel programming by learning how data flow principles can be used to increase the amount of parallelism in a program. We will learn how Java’s Phaser API can be used to implement “fuzzy” barriers, and also “point-to-point” synchronizations as an optimization of regular barriers by revisiting the iterative averaging example. Finally, we will also learn how pipeline parallelism and data flow models can be expressed using Java APIs.

What's included

7 videos7 readings1 quiz1 programming assignment

The next two videos will showcase the importance of learning about Concurrent Programming and Distributed Programming in Java. Professor Vivek Sarkar will speak with industry professionals at Two Sigma about how the topics of our other two courses are utilized in the field.

What's included

2 videos1 reading

Instructor

Instructor ratings
4.8 (117 ratings)
Vivek Sarkar
Rice University
3 Courses60,073 learners

Offered by

Rice University

Recommended if you're interested in Software Development

Why people choose Coursera for their career

Felipe M.
Learner since 2018
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."
Jennifer J.
Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
Larry W.
Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."
Chaitanya A.
"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."

Learner reviews

Showing 3 of 1191

4.6

1,191 reviews

  • 5 stars

    69.10%

  • 4 stars

    22.92%

  • 3 stars

    6.38%

  • 2 stars

    1.17%

  • 1 star

    0.41%

SR
4

Reviewed on Aug 29, 2017

KK
4

Reviewed on Jun 18, 2018

YE
4

Reviewed on Feb 27, 2019

New to Software Development? Start here.

Placeholder

Open new doors with Coursera Plus

Unlimited access to 7,000+ world-class courses, hands-on projects, and job-ready certificate programs - all included in your subscription

Advance your career with an online degree

Earn a degree from world-class universities - 100% online

Join over 3,400 global companies that choose Coursera for Business

Upskill your employees to excel in the digital economy

Frequently asked questions