課程信息
4.5
301 個評分
41 個審閱
100% 在線

100% 在線

立即開始,按照自己的計劃學習。
可靈活調整截止日期

可靈活調整截止日期

根據您的日程表重置截止日期。
中級

中級

完成時間(小時)

完成時間大約為14 小時

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

英語(English)

字幕:英語(English)

您將獲得的技能

Concurrency (Computer Science)Actor ModelOptimistic Concurrency ControlJava Concurrency
100% 在線

100% 在線

立即開始,按照自己的計劃學習。
可靈活調整截止日期

可靈活調整截止日期

根據您的日程表重置截止日期。
中級

中級

完成時間(小時)

完成時間大約為14 小時

建議: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 Concurrent 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 Legend2分鐘
Discussion Forum Guidelines2分鐘
Pre-Course Survey10分鐘
Mini Project 0: Setup10分鐘
完成時間(小時)
完成時間為 5 小時

Threads and Locks

In this module, we will learn about threads and locks, which have served as primitive building blocks for concurrent programming for over five decades. All computing platforms today include some form of support for threads and locks, and make them available for use by developers in a wide range of programming languages. We will learn how threads can be created, joined, and synchronized using structured (e.g., synchronized statements/methods) and unstructured (e.g., java.util.concurrent libraries) locks in Java. We will also learn about new classes of bugs that can arise when concurrent programs need to access shared resources. These bugs are referred to as violations of liveness/progress guarantees, and include deadlock, livelock, and starvation. We will conclude this module by studying different solutions to the classical "Dining Philosophers" problem, and use these solutions to illustrate instances of deadlock, livelock and starvation....
Reading
6 個視頻 (總計 41 分鐘), 6 個閱讀材料, 2 個測驗
Video6 個視頻
1.2 Structured Locks7分鐘
1.3 Unstructured Locks7分鐘
1.4 Liveness7分鐘
1.5 Dining Philosophers8分鐘
Demonstration: Locking and Synchronization4分鐘
Reading6 個閱讀材料
1.1 Lecture Summary5分鐘
1.2 Lecture Summary5分鐘
1.3 Lecture Summary5分鐘
1.4 Lecture Summary5分鐘
1.5 Lecture Summary5分鐘
Mini Project 1: Locking and Synchronization10分鐘
Quiz1 個練習
Module 1 Quiz30分鐘
2
完成時間(小時)
完成時間為 4 小時

Critical Sections and Isolation

In this module, we will learn different approaches to coordinating accesses to shared resources without encountering the deadlock or livelock bugs studied earlier. Critical/isolated sections are higher-level concurrent programming constructs (relative to locks) that simplify the implementation of mutual exclusion by guaranteeing the absence of deadlocks and livelocks. Object-based isolation relaxes the constraints imposed by critical sections by allowing mutual exclusion to be specified on a per-object basis, as illustrated in the Spanning Tree example. Java's atomic variables represent an important, but restricted, case of object-based isolation that is implemented efficiently on all hardware platforms. Finally, we will learn how object-based isolation can be further relaxed with read/write access modes....
Reading
6 個視頻 (總計 36 分鐘), 6 個閱讀材料, 2 個測驗
Video6 個視頻
2.2 Object Based Isolation (Monitors)7分鐘
2.3 Concurrent Spanning Tree Algorithm6分鐘
2.4 Atomic Variables6分鐘
2.5 Read, Write Isolation5分鐘
Demonstration: Global and Object-Based Isolation3分鐘
Reading6 個閱讀材料
2.1 Lecture Summary10分鐘
2.2 Lecture Summary10分鐘
2.3 Lecture Summary10分鐘
2.4 Lecture Summary10分鐘
2.5 Lecture Summary10分鐘
Mini Project 2: Global and Object-Based Isolation10分鐘
Quiz1 個練習
Module 2 Quiz33分鐘
完成時間(小時)
完成時間為 20 分鐘

Talking to Two Sigma: Using it in the Field

Join Professor Vivek Sarkar as he talks with Software Engineer, Dr. Shams Imam, at their downtown Houston, Texas office about threads, locks, deadlocks, high-level and low-level constructs, and the importance of concurrent programming. ...
Reading
2 個視頻 (總計 10 分鐘), 1 個閱讀材料
Video2 個視頻
Industry Professional on Concurrency - Dr. Shams Imam, Software Engineer3分鐘
Reading1 個閱讀材料
About these Talks10分鐘
3
完成時間(小時)
完成時間為 4 小時

Actors

In this module, we will learn another high-level approach to concurrent programming called the "Actor" model. A major difference between the Actor model and the Isolated Sections model is that there are no data races possible in the Actor model because it does not allow for any form of shared variables. However, as in all concurrent programming models, higher-level forms of nondeterminism are still possible in the Actor model due to an inherent asynchrony in the order in which messages may be delivered. We will study multiple examples of concurrency using the Actor model, including the classical Sieve of Eratosthenes algorithm to generate prime numbers, as well as producer-consumer patterns with both unbounded and bounded buffers....
Reading
6 個視頻 (總計 29 分鐘), 6 個閱讀材料, 2 個測驗
Video6 個視頻
3.1 Actors5分鐘
3.2 Actor Examples6分鐘
3.3 Sieve of Eratosthenes Algorithm5分鐘
3.4 Producer-Consumer Problem4分鐘
3.5 Bounded Buffer Problem3分鐘
Demonstration: Sieve of Eratosthenes Using Actor Parallelism3分鐘
Reading6 個閱讀材料
3.1 Lecture Summary10分鐘
3.2 Lecture Summary10分鐘
3.3 Lecture Summary10分鐘
3.4 Lecture Summary10分鐘
3.5 Lecture Summary10分鐘
Mini Project 3: Sieve of Eratosthenes Using Actor Parallelism10分鐘
Quiz1 個練習
Module 3 Quiz30分鐘
4
完成時間(小時)
完成時間為 4 小時

Concurrent Data Structures

In this module, we will study Concurrent Data Structures, which form an essential software layer in all multithreaded programming systems. First, we will learn about Optimistic Concurrency, an important multithreaded pattern in which two threads can "optimistically" make progress on their assigned work without worrying about mutual conflicts, and only checking for conflicts before "committing" the results of their work. We will then study the widely-used Concurrent Queue data structure. Even though the APIs for using concurrent queues are very simple, their implementations using the Optimistic Concurrency model can be complex and error-prone. To that end, we will also learn the formal notion of Linearizability to better understand correctness requirements for concurrent data structures. We will then study Concurrent Hash Maps, another widely-used concurrent data structure. Finally, we discuss a concurrent algorithm for finding a Minimum Spanning Tree of an undirected graph, an algorithm that relies on the use of Concurrent Data Structures under the covers....
Reading
6 個視頻 (總計 38 分鐘), 7 個閱讀材料, 2 個測驗
Video6 個視頻
4.2 Concurrent Queue5分鐘
4.3 Linearizability6分鐘
4.4 Concurrent Hash Map5分鐘
4.5 Concurrent Minimum Spanning Tree Algorithm7分鐘
Demonstration: Parallelization of Boruvka's Minimum Spanning Tree Algorithm7分鐘
Reading7 個閱讀材料
4.1 Lecture Summary10分鐘
4.2 Lecture Summary10分鐘
4.3 Lecture Summary10分鐘
4.4 Lecture Summary10分鐘
4.5 Lecture Summary10分鐘
Mini Project 4: Parallelization of Boruvka's Minimum Spanning Tree Algorithm10分鐘
Exit Survey10分鐘
Quiz1 個練習
Module 4 Quiz30分鐘
完成時間(小時)
完成時間為 15 分鐘

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

The next two videos will showcase the importance of learning about Parallel 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 個視頻 (總計 13 分鐘), 1 個閱讀材料
Video2 個視頻
Industry Professional on Distribution - Dr. Eric Allen, Senior Vice President, Two Sigma6分鐘
Reading1 個閱讀材料
Our Other Course Offerings2分鐘
4.5
41 個審閱Chevron Right
職業方向

12%

完成這些課程後已開始新的職業生涯
工作福利

10%

通過此課程獲得實實在在的工作福利

熱門審閱

創建者 PSSep 2nd 2017

Great course. With minimal effort you can learn about important concepts and see immediate results regarding the actual speedup you can achieve using concurrent programming.

創建者 SMNov 12th 2017

This was a good course and covered all the topics relevant to the course. I liked the Optimistic Concurrency in week 4 - that was an area I was not exposed to before

講師

Avatar

Vivek Sarkar

Professor
Department of Computer Science

關於 莱斯大学

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

常見問題

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

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

還有其他問題嗎?請訪問 學生幫助中心