- Level Professional
- Duration 19 hours
- Course by Rice University
-
Offered by
About
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. Why take this course? - All computers are multicore computers, so it is important for you to learn how to extend your knowledge of sequential Java programming to multicore parallelism. - Java 7 and Java 8 have introduced new frameworks for parallelism (ForkJoin, Stream) that have significantly changed the paradigms for parallel programming since the early days of Java. - Each of the four modules in the course includes an assigned mini-project that will provide you with the necessary hands-on experience to use the concepts learned in the course on your own, after the course ends. - During the course, you will have online access to the instructor and the mentors to get individualized answers to your questions posted on forums. The desired learning outcomes of this course are as follows: - Theory of parallelism: computation graphs, work, span, ideal parallelism, parallel speedup, Amdahl's Law, data races, and determinism - Task parallelism using Java's ForkJoin framework - Functional parallelism using Java's Future and Stream frameworks - Loop-level parallelism with extensions for barriers and iteration grouping (chunking) - Dataflow parallelism using the Phaser framework and data-driven tasks Mastery of these concepts will enable you to immediately apply them in the context of multicore Java programs, and will also provide the foundation for mastering other parallel programming systems that you may encounter in the future (e.g., C++11, OpenMP, .Net Task Parallel Library).Modules
About the Course
1
Discussions
- Get to know your classmates!
1
Videos
- Course Welcome
4
Readings
- General Course Info
- Course Icon Legend
- Discussion Forum Guidelines
- Pre-Course Survey
Optional: Mini Project
- Mini Project 0 Submission
1
Readings
- Mini Project 0: Setup
Course Content
5
Videos
- 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
5
Readings
- 1.1 Lecture Summary
- 1.2 Lecture Summary
- 1.3 Lecture Summary
- 1.4 Lecture Summary
- 1.5 Lecture Summary
Demonstration Videos
2
Videos
- ReciprocalArraySum using Async-Finish (Demo)
- ReciprocalArraySum using RecursiveAction's in Java's Fork/Join Framework (Demo)
Mini Project
- Mini Project 1 Submission
1
Readings
- Mini Project 1: Reciprocal-Array-Sum using the Java Fork/Join Framework
Quiz
1
Assignment
- Module 1 Quiz
Course Content
5
Videos
- 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
5
Readings
- 2.1 Lecture Summary
- 2.2 Lecture Summary
- 2.3 Lecture Summary
- 2.4 Lecture Summary
- 2.5 Lecture Summary
Demonstration Videos
2
Videos
- ReciprocalArraySum using RecursiveTask's in Java's Fork/Join Framework (Demo)
- Parallel List Processing Using Java Streams (Demo)
Mini Project
- Mini Project 2 Submission
1
Readings
- Mini Project 2: Analyzing Student Statistics Using Java Parallel Streams
Quiz
1
Assignment
- Module 2 Quiz
Talking to Two Sigma: Using it in the Field
2
Videos
- 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
1
Readings
- About these Talks
Course Content
5
Videos
- 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
5
Readings
- 3.1 Lecture Summary
- 3.2 Lecture Summary
- 3.3 Lecture Summary
- 3.4 Lecture Summary
- 3.5 Lecture Summary
Demonstration Videos
2
Videos
- Parallel Matrix Multiplication (Demo)
- Parallel One-Dimensional Iterative Averaging (Demo)
Mini Project
- Mini Project 3 Submission
1
Readings
- Mini Project 3: Parallelizing Matrix-Matrix Multiply Using Loop Parallelism
Quiz
1
Assignment
- Module 3 Quiz
Course Content
5
Videos
- 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
5
Readings
- 4.1 Lecture Summary
- 4.2 Lecture Summary
- 4.3 Lecture Summary
- 4.4 Lecture Summary
- 4.5 Lecture Summary
Demonstration Videos
2
Videos
- Phaser Examples
- Pipeline & Data Flow Parallelism
Mini Project
- Mini Project 4 Submission
1
Readings
- Mini Project 4: Using Phasers to Optimize Data-Parallel Applications
Quiz
1
Assignment
- Module 4 Quiz
1
Readings
- Exit Survey
Industry Professionals on Concurrent and Distributed Programming
2
Videos
- Industry Professional on Concurrency - Dr. Shams Imam, Software Engineer, Two Sigma
- Industry Professional on Distribution - Dr. Eric Allen, Senior Vice President, Two Sigma
1
Readings
- Our Other Course Offerings
Auto Summary
"Parallel Programming in Java" is an advanced course designed for IT professionals and students eager to boost their knowledge in parallel computing using Java 8. This comprehensive program delves into the core principles of parallel programming, empowering learners to leverage multicore processors and enhance application performance. Under the expert guidance of experienced instructors, you will explore popular Java frameworks such as ForkJoin, Stream, and Phaser. The curriculum covers essential theoretical foundations, including computation graphs, ideal parallelism, parallel speedup, Amdahl's Law, data races, and determinism. Practical applications are emphasized through four hands-on mini-projects, ensuring you gain real-world experience. The course spans approximately 1140 minutes and offers flexible subscription options, including Starter, Professional, and Paid plans, catering to varying levels of commitment and expertise. Engaging forums provide access to personalized support from the instructor and mentors, fostering a collaborative learning environment. Ideal for those looking to transition from sequential to parallel programming, this course equips you with the skills to optimize multicore Java programs and lays the groundwork for future learning in parallel programming systems like C++11, OpenMP, and .Net Task Parallel Library. Join this Coursera offering to master parallel programming in Java and stay ahead in the evolving field of computer science.

Vivek Sarkar