Parallel Programming in Java

  • 4.6
Approx. 19 hours to complete

Course Summary

Learn how to write parallel programs in Java using threads and the java.util.concurrent package. This course covers the basic concepts of parallel programming and teaches you how to use them in practice.

Key Learning Points

  • Understand the fundamentals of parallel programming and how to apply them in Java
  • Learn how to use threads and synchronization to write efficient and scalable parallel programs
  • Explore different approaches for parallelization, such as fork-join and map-reduce

Job Positions & Salaries of people who have taken this course might have

  • Java Developer
    • USA: $85,000 - $135,000
    • India: INR 6,00,000 - INR 12,00,000
    • Spain: €30,000 - €45,000
  • Parallel Computing Specialist
    • USA: $120,000 - $175,000
    • India: INR 12,00,000 - INR 20,00,000
    • Spain: €40,000 - €60,000
  • Software Engineer (Parallel Programming)
    • USA: $100,000 - $150,000
    • India: INR 8,00,000 - INR 14,00,000
    • Spain: €35,000 - €50,000

Related Topics for further study


Learning Outcomes

  • Understand the basic concepts of parallel programming
  • Be able to write efficient and scalable parallel programs using Java
  • Explore different approaches for parallelization and understand their trade-offs

Prerequisites or good to have knowledge before taking this course

  • Basic knowledge of Java programming
  • Familiarity with object-oriented programming concepts

Course Difficulty Level

Intermediate

Course Format

  • Online self-paced course
  • Video lectures
  • Quizzes and assignments

Similar Courses

  • Parallel Computing
  • Advanced Data Structures in Java
  • Distributed Systems

Related Education Paths


Notable People in This Field

  • Brian Goetz
  • Doug Lea
  • Joshua Bloch

Related Books

Description

This course teaches learners (industry professionals and students) the fundamental concepts of parallel programming in the context of Java 8. Parallel programming enables developers to use multicore computers to make their applications run faster by using multiple processors at the same time. By the end of this course, you will learn how to use popular parallel Java frameworks (such as ForkJoin, Stream, and Phaser) to write parallel programs for a wide range of multicore platforms including servers, desktops, or mobile devices, while also learning about their theoretical foundations including computation graphs, ideal parallelism, parallel speedup, Amdahl's Law, data races, and determinism.

Outline

  • Welcome to the Course!
  • Course Welcome
  • General Course Info
  • Course Icon Legend
  • Discussion Forum Guidelines
  • Pre-Course Survey
  • Mini Project 0: Setup
  • Task Parallelism
  • 1.1 Task Creation and Termination (Async, Finish)
  • 1.2 Tasks in Java's Fork/Join Framework
  • 1.3 Computation Graphs, Work, Span
  • 1.4 Multiprocessor Scheduling, Parallel Speedup
  • 1.5 Amdahl's Law
  • ReciprocalArraySum using Async-Finish (Demo)
  • ReciprocalArraySum using RecursiveAction's in Java's Fork/Join Framework (Demo)
  • 1.1 Lecture Summary
  • 1.2 Lecture Summary
  • 1.3 Lecture Summary
  • 1.4 Lecture Summary
  • 1.5 Lecture Summary
  • Mini Project 1: Reciprocal-Array-Sum using the Java Fork/Join Framework
  • Module 1 Quiz
  • Functional Parallelism
  • 2.1 Futures: Tasks with Return Values
  • 2.2 Futures in Java's Fork/Join Framework
  • 2.3 Memoization
  • 2.4 Java Streams
  • 2.5 Data Races and Determinism
  • ReciprocalArraySum using RecursiveTask's in Java's Fork/Join Framework (Demo)
  • Parallel List Processing Using Java Streams (Demo)
  • 2.1 Lecture Summary
  • 2.2 Lecture Summary
  • 2.3 Lecture Summary
  • 2.4 Lecture Summary
  • 2.5 Lecture Summary
  • Mini Project 2: Analyzing Student Statistics Using Java Parallel Streams
  • Module 2 Quiz
  • Talking to Two Sigma: Using it in the Field
  • Industry Professional on Parallel, Concurrent, and Distributed Programming in Java - Jim Ward, Managing Director
  • Industry Professionals on Parallelism - Jake Kornblau and Margaret Kelley, Software Engineers
  • About these Talks
  • Loop Parallelism
  • 3.1 Parallel Loops
  • 3.2 Parallel Matrix Multiplication
  • 3.3 Barriers in Parallel Loops
  • 3.4 Parallel One-Dimensional Iterative Averaging
  • 3.5 Iteration Grouping/Chunking in Parallel Loops
  • Parallel Matrix Multiplication (Demo)
  • Parallel One-Dimensional Iterative Averaging (Demo)
  • 3.1 Lecture Summary
  • 3.2 Lecture Summary
  • 3.3 Lecture Summary
  • 3.4 Lecture Summary
  • 3.5 Lecture Summary
  • Mini Project 3: Parallelizing Matrix-Matrix Multiply Using Loop Parallelism
  • Module 3 Quiz
  • Data flow Synchronization and Pipelining
  • 4.1 Split-phase Barriers with Java Phasers
  • 4.2 Point-to-Point Sychronization with Phasers
  • 4.3 One-Dimensional Iterative Averaging with Phasers
  • 4.4 Pipeline Parallelism
  • 4.5 Data Flow Parallelism
  • Phaser Examples
  • Pipeline & Data Flow Parallelism
  • 4.1 Lecture Summary
  • 4.2 Lecture Summary
  • 4.3 Lecture Summary
  • 4.4 Lecture Summary
  • 4.5 Lecture Summary
  • Mini Project 4: Using Phasers to Optimize Data-Parallel Applications
  • Exit Survey
  • Module 4 Quiz
  • Continue Your Journey with the Specialization "Parallel, Concurrent, and Distributed Programming in Java"
  • Industry Professional on Concurrency - Dr. Shams Imam, Software Engineer, Two Sigma
  • Industry Professional on Distribution - Dr. Eric Allen, Senior Vice President, Two Sigma
  • Our Other Course Offerings

Summary of User Reviews

Key Aspect Users Liked About This Course

The course provides a comprehensive introduction to parallel programming in Java

Pros from User Reviews

  • In-depth coverage of parallel programming concepts and techniques
  • Hands-on programming assignments that reinforce learning
  • Engaging and knowledgeable instructors
  • Flexible schedule allows for self-paced learning
  • Excellent resources and support from the course staff

Cons from User Reviews

  • Some users found the programming assignments challenging
  • The course may be overwhelming for beginners with no prior programming experience
  • The course requires a significant time commitment
  • The course material may be too technical for some users
  • The course does not cover parallel programming in other programming languages
English
Available now
Approx. 19 hours to complete
Vivek Sarkar
Rice University
Coursera

Instructor

Vivek Sarkar

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