About this Course
최근 조회 16,256

100% 온라인

지금 바로 시작해 나만의 일정에 따라 학습을 진행하세요.

탄력적인 마감일

일정에 따라 마감일을 재설정합니다.

중급 단계

완료하는 데 약 14시간 필요

권장: Four weeks of study, 4-8 hours/week depending on past experience with sequential programming in Java...

영어

자막: 영어

귀하가 습득할 기술

Concurrency (Computer Science)Actor ModelOptimistic Concurrency ControlJava Concurrency

100% 온라인

지금 바로 시작해 나만의 일정에 따라 학습을 진행하세요.

탄력적인 마감일

일정에 따라 마감일을 재설정합니다.

중급 단계

완료하는 데 약 14시간 필요

권장: Four weeks of study, 4-8 hours/week depending on past experience with sequential programming in Java...

영어

자막: 영어

강의 계획 - 이 강좌에서 배울 내용

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....
1 video (Total 1 min), 5 readings, 1 quiz
1개의 동영상
5개의 읽기 자료
General Course Info5m
Course Icon Legend2m
Discussion Forum Guidelines2m
Pre-Course Survey10m
Mini Project 0: Setup10m
완료하는 데 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....
6 videos (Total 41 min), 6 readings, 2 quizzes
6개의 동영상
1.2 Structured Locks7m
1.3 Unstructured Locks7m
1.4 Liveness7m
1.5 Dining Philosophers8m
Demonstration: Locking and Synchronization4m
6개의 읽기 자료
1.1 Lecture Summary5m
1.2 Lecture Summary5m
1.3 Lecture Summary5m
1.4 Lecture Summary5m
1.5 Lecture Summary5m
Mini Project 1: Locking and Synchronization10m
1개 연습문제
Module 1 Quiz30m
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....
6 videos (Total 36 min), 6 readings, 2 quizzes
6개의 동영상
2.2 Object Based Isolation (Monitors)7m
2.3 Concurrent Spanning Tree Algorithm6m
2.4 Atomic Variables6m
2.5 Read, Write Isolation5m
Demonstration: Global and Object-Based Isolation3m
6개의 읽기 자료
2.1 Lecture Summary10m
2.2 Lecture Summary10m
2.3 Lecture Summary10m
2.4 Lecture Summary10m
2.5 Lecture Summary10m
Mini Project 2: Global and Object-Based Isolation10m
1개 연습문제
Module 2 Quiz33m
완료하는 데 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. ...
2 videos (Total 10 min), 1 reading
2개의 동영상
Industry Professional on Concurrency - Dr. Shams Imam, Software Engineer3m
1개의 읽기 자료
About these Talks10m
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....
6 videos (Total 29 min), 6 readings, 2 quizzes
6개의 동영상
3.2 Actor Examples6m
3.3 Sieve of Eratosthenes Algorithm5m
3.4 Producer-Consumer Problem4m
3.5 Bounded Buffer Problem3m
Demonstration: Sieve of Eratosthenes Using Actor Parallelism3m
6개의 읽기 자료
3.1 Lecture Summary10m
3.2 Lecture Summary10m
3.3 Lecture Summary10m
3.4 Lecture Summary10m
3.5 Lecture Summary10m
Mini Project 3: Sieve of Eratosthenes Using Actor Parallelism10m
1개 연습문제
Module 3 Quiz30m
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....
6 videos (Total 38 min), 7 readings, 2 quizzes
6개의 동영상
4.2 Concurrent Queue5m
4.3 Linearizability6m
4.4 Concurrent Hash Map5m
4.5 Concurrent Minimum Spanning Tree Algorithm7m
Demonstration: Parallelization of Boruvka's Minimum Spanning Tree Algorithm7m
7개의 읽기 자료
4.1 Lecture Summary10m
4.2 Lecture Summary10m
4.3 Lecture Summary10m
4.4 Lecture Summary10m
4.5 Lecture Summary10m
Mini Project 4: Parallelization of Boruvka's Minimum Spanning Tree Algorithm10m
Exit Survey10m
1개 연습문제
Module 4 Quiz30m
완료하는 데 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....
2 videos (Total 13 min), 1 reading
2개의 동영상
Industry Professional on Distribution - Dr. Eric Allen, Senior Vice President, Two Sigma6m
1개의 읽기 자료
Our Other Course Offerings2m
4.5
49개의 리뷰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

자주 묻는 질문

  • 강좌에 등록하면 바로 모든 비디오, 테스트 및 프로그래밍 과제(해당하는 경우)에 접근할 수 있습니다. 상호 첨삭 과제는 이 세션이 시작된 경우에만 제출하고 검토할 수 있습니다. 강좌를 구매하지 않고 살펴보기만 하면 특정 과제에 접근하지 못할 수 있습니다.

  • 강좌를 등록하면 전문 분야의 모든 강좌에 접근할 수 있고 강좌를 완료하면 수료증을 취득할 수 있습니다. 전자 수료증이 성취도 페이지에 추가되며 해당 페이지에서 수료증을 인쇄하거나 LinkedIn 프로필에 수료증을 추가할 수 있습니다. 강좌 내용만 읽고 살펴보려면 해당 강좌를 무료로 청강할 수 있습니다.

궁금한 점이 더 있으신가요? 학습자 도움말 센터를 방문해 보세요.