课程信息
4.5
485 个评分
102 个审阅
100% 在线

100% 在线

立即开始,按照自己的计划学习。
可灵活调整截止日期

可灵活调整截止日期

根据您的日程表重置截止日期。
中级

中级

完成时间(小时)

完成时间大约为17 小时

建议:Four weeks of study, 4-8 hours/week depending on past experience with sequential programming in Java...
可选语言

英语(English)

字幕:英语(English)

您将获得的技能

DataflowParallel ComputingJava ConcurrencyData Parallelism
100% 在线

100% 在线

立即开始,按照自己的计划学习。
可灵活调整截止日期

可灵活调整截止日期

根据您的日程表重置截止日期。
中级

中级

完成时间(小时)

完成时间大约为17 小时

建议:Four weeks of study, 4-8 hours/week depending on past experience with sequential programming in Java...
可选语言

英语(English)

字幕:英语(English)

教学大纲 - 您将从这门课程中学到什么

1
完成时间(小时)
完成时间为 1 小时

Welcome to the 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....
Reading
1 个视频 (总计 1 分钟), 5 个阅读材料, 1 个测验
Video1 个视频
Reading5 个阅读材料
General Course Info5分钟
Course Icon Legend5分钟
Discussion Forum Guidelines5分钟
Pre-Course Survey10分钟
Mini Project 0: Setup10分钟
完成时间(小时)
完成时间为 4 小时

Task Parallelism

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....
Reading
7 个视频 (总计 42 分钟), 6 个阅读材料, 2 个测验
Video7 个视频
1.2 Tasks in Java's Fork/Join Framework5分钟
1.3 Computation Graphs, Work, Span7分钟
1.4 Multiprocessor Scheduling, Parallel Speedup8分钟
1.5 Amdahl's Law5分钟
ReciprocalArraySum using Async-Finish (Demo)4分钟
ReciprocalArraySum using RecursiveAction's in Java's Fork/Join Framework (Demo)5分钟
Reading6 个阅读材料
1.1 Lecture Summary5分钟
1.2 Lecture Summary5分钟
1.3 Lecture Summary5分钟
1.4 Lecture Summary5分钟
1.5 Lecture Summary5分钟
Mini Project 1: Reciprocal-Array-Sum using the Java Fork/Join Framework10分钟
Quiz1 个练习
Module 1 Quiz30分钟
2
完成时间(小时)
完成时间为 4 小时

Functional Parallelism

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....
Reading
7 个视频 (总计 40 分钟), 6 个阅读材料, 2 个测验
Video7 个视频
2.2 Futures in Java's Fork/Join Framework5分钟
2.3 Memoization6分钟
2.4 Java Streams5分钟
2.5 Data Races and Determinism9分钟
ReciprocalArraySum using RecursiveTask's in Java's Fork/Join Framework (Demo)3分钟
Parallel List Processing Using Java Streams (Demo)4分钟
Reading6 个阅读材料
2.1 Lecture Summary10分钟
2.2 Lecture Summary10分钟
2.3 Lecture Summary10分钟
2.4 Lecture Summary10分钟
2.5 Lecture Summary10分钟
Mini Project 2: Analyzing Student Statistics Using Java Parallel Streams10分钟
Quiz1 个练习
Module 2 Quiz30分钟
完成时间(小时)
完成时间为 23 分钟

Talking to Two Sigma: Using it in the Field

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....
Reading
2 个视频 (总计 13 分钟), 1 个阅读材料
Video2 个视频
Industry Professionals on Parallelism - Jake Kornblau and Margaret Kelley, Software Engineers6分钟
Reading1 个阅读材料
About these Talks10分钟
3
完成时间(小时)
完成时间为 4 小时

Loop Parallelism

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....
Reading
7 个视频 (总计 41 分钟), 6 个阅读材料, 2 个测验
Video7 个视频
3.2 Parallel Matrix Multiplication4分钟
3.3 Barriers in Parallel Loops5分钟
3.4 Parallel One-Dimensional Iterative Averaging8分钟
3.5 Iteration Grouping/Chunking in Parallel Loops6分钟
Parallel Matrix Multiplication (Demo)4分钟
Parallel One-Dimensional Iterative Averaging (Demo)5分钟
Reading6 个阅读材料
3.1 Lecture Summary10分钟
3.2 Lecture Summary10分钟
3.3 Lecture Summary10分钟
3.4 Lecture Summary10分钟
3.5 Lecture Summary10分钟
Mini Project 3: Parallelizing Matrix-Matrix Multiply Using Loop Parallelism10分钟
Quiz1 个练习
Module 3 Quiz30分钟
4
完成时间(小时)
完成时间为 4 小时

Data flow Synchronization and Pipelining

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. ...
Reading
7 个视频 (总计 38 分钟), 7 个阅读材料, 2 个测验
Video7 个视频
4.2 Point-to-Point Sychronization with Phasers4分钟
4.3 One-Dimensional Iterative Averaging with Phasers4分钟
4.4 Pipeline Parallelism5分钟
4.5 Data Flow Parallelism5分钟
Phaser Examples6分钟
Pipeline & Data Flow Parallelism7分钟
Reading7 个阅读材料
4.1 Lecture Summary10分钟
4.2 Lecture Summary10分钟
4.3 Lecture Summary10分钟
4.4 Lecture Summary10分钟
4.5 Lecture Summary10分钟
Mini Project 4: Using Phasers to Optimize Data-Parallel Applications10分钟
Exit Survey10分钟
Quiz1 个练习
Module 4 Quiz30分钟
完成时间(小时)
完成时间为 20 分钟

Continue Your Journey with the Specialization "Parallel, Concurrent, and Distributed Programming in Java"

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....
Reading
2 个视频 (总计 10 分钟), 1 个阅读材料
Video2 个视频
Industry Professional on Distribution - Dr. Eric Allen, Senior Vice President, Two Sigma6分钟
Reading1 个阅读材料
Our Other Course Offerings10分钟
4.5
102 个审阅Chevron Right
职业方向

33%

完成这些课程后已开始新的职业生涯
工作福利

83%

通过此课程获得实实在在的工作福利
职业晋升

25%

加薪或升职

热门审阅

创建者 LGDec 13th 2017

This is a great course in parallel programming. The videos were very clear, summaries reinforced the video material and the programming projects and quizzes were challenging but not overwhelming.

创建者 SVAug 28th 2017

Great course. Introduces Parallel Programming in Java in a gentle way.\n\nKudos to Professor Vivek Sarkar for simplifying complex concepts and presenting them in an elegant manner.

讲师

Avatar

Vivek Sarkar

Professor
Department of Computer Science

关于 Rice University

Rice University is consistently ranked among the top 20 universities in the U.S. and the top 100 in the world. Rice has highly respected schools of Architecture, Business, Continuing Studies, Engineering, Humanities, Music, Natural Sciences and Social Sciences and is home to the Baker Institute for Public Policy....

关于 Parallel, Concurrent, and Distributed Programming in Java 专项课程

Parallel, concurrent, and distributed programming underlies software in multiple domains, ranging from biomedical research to financial services. This specialization is intended for anyone with a basic knowledge of sequential programming in Java, who is motivated to learn how to write parallel, concurrent and distributed programs. Through a collection of three courses (which may be taken in any order or separately), you will learn foundational topics in Parallelism, Concurrency, and Distribution. These courses will prepare you for multithreaded and distributed programming for a wide range of computer platforms, from mobile devices to cloud computing servers. To see an overview video for this Specialization, click here! For an interview with two early-career software engineers on the relevance of parallel computing to their jobs, click here. Acknowledgments The instructor, Prof. Vivek Sarkar, would like to thank Dr. Max Grossman for his contributions to the mini-projects and other course material, Dr. Zoran Budimlic for his contributions to the quizzes, Dr. Max Grossman and Dr. Shams Imam for their contributions to the pedagogic PCDP library used in some of the mini-projects, and all members of the Rice Online team who contributed to the development of the course content (including Martin Calvi, Annette Howe, Seth Tyger, and Chong Zhou)....
Parallel, Concurrent, and Distributed Programming in Java

常见问题

  • 注册以便获得证书后,您将有权访问所有视频、测验和编程作业(如果适用)。只有在您的班次开课之后,才可以提交和审阅同学互评作业。如果您选择在不购买的情况下浏览课程,可能无法访问某些作业。

  • 您注册课程后,将有权访问专项课程中的所有课程,并且会在完成课程后获得证书。您的电子课程证书将添加到您的成就页中,您可以通过该页打印您的课程证书或将其添加到您的领英档案中。如果您只想阅读和查看课程内容,可以免费旁听课程。

还有其他问题吗?请访问 学生帮助中心