About this Course
최근 조회 31,109

100% 온라인

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

탄력적인 마감일

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

중급 단계

완료하는 데 약 15시간 필요

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

영어

자막: 영어

귀하가 습득할 기술

DataflowParallel ComputingJava ConcurrencyData Parallelism

100% 온라인

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

탄력적인 마감일

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

중급 단계

완료하는 데 약 15시간 필요

권장: 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 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....
1 video (Total 1 min), 5 readings, 1 quiz
1개의 동영상
5개의 읽기 자료
General Course Info5m
Course Icon Legend5m
Discussion Forum Guidelines5m
Pre-Course Survey10m
Mini Project 0: Setup10m
완료하는 데 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....
7 videos (Total 42 min), 6 readings, 2 quizzes
7개의 동영상
1.2 Tasks in Java's Fork/Join Framework5m
1.3 Computation Graphs, Work, Span7m
1.4 Multiprocessor Scheduling, Parallel Speedup8m
1.5 Amdahl's Law5m
ReciprocalArraySum using Async-Finish (Demo)4m
ReciprocalArraySum using RecursiveAction's in Java's Fork/Join Framework (Demo)5m
6개의 읽기 자료
1.1 Lecture Summary5m
1.2 Lecture Summary5m
1.3 Lecture Summary5m
1.4 Lecture Summary5m
1.5 Lecture Summary5m
Mini Project 1: Reciprocal-Array-Sum using the Java Fork/Join Framework10m
1개 연습문제
Module 1 Quiz30m
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....
7 videos (Total 40 min), 6 readings, 2 quizzes
7개의 동영상
2.2 Futures in Java's Fork/Join Framework5m
2.3 Memoization6m
2.4 Java Streams5m
2.5 Data Races and Determinism9m
ReciprocalArraySum using RecursiveTask's in Java's Fork/Join Framework (Demo)3m
Parallel List Processing Using Java Streams (Demo)4m
6개의 읽기 자료
2.1 Lecture Summary10m
2.2 Lecture Summary10m
2.3 Lecture Summary10m
2.4 Lecture Summary10m
2.5 Lecture Summary10m
Mini Project 2: Analyzing Student Statistics Using Java Parallel Streams10m
1개 연습문제
Module 2 Quiz30m
완료하는 데 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....
2 videos (Total 13 min), 1 reading
2개의 동영상
Industry Professionals on Parallelism - Jake Kornblau and Margaret Kelley, Software Engineers6m
1개의 읽기 자료
About these Talks10m
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....
7 videos (Total 41 min), 6 readings, 2 quizzes
7개의 동영상
3.2 Parallel Matrix Multiplication4m
3.3 Barriers in Parallel Loops5m
3.4 Parallel One-Dimensional Iterative Averaging8m
3.5 Iteration Grouping/Chunking in Parallel Loops6m
Parallel Matrix Multiplication (Demo)4m
Parallel One-Dimensional Iterative Averaging (Demo)5m
6개의 읽기 자료
3.1 Lecture Summary10m
3.2 Lecture Summary10m
3.3 Lecture Summary10m
3.4 Lecture Summary10m
3.5 Lecture Summary10m
Mini Project 3: Parallelizing Matrix-Matrix Multiply Using Loop Parallelism10m
1개 연습문제
Module 3 Quiz30m
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. ...
7 videos (Total 38 min), 7 readings, 2 quizzes
7개의 동영상
4.2 Point-to-Point Sychronization with Phasers4m
4.3 One-Dimensional Iterative Averaging with Phasers4m
4.4 Pipeline Parallelism5m
4.5 Data Flow Parallelism5m
Phaser Examples6m
Pipeline & Data Flow Parallelism7m
7개의 읽기 자료
4.1 Lecture Summary10m
4.2 Lecture Summary10m
4.3 Lecture Summary10m
4.4 Lecture Summary10m
4.5 Lecture Summary10m
Mini Project 4: Using Phasers to Optimize Data-Parallel Applications10m
Exit Survey10m
1개 연습문제
Module 4 Quiz30m
완료하는 데 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....
2 videos (Total 10 min), 1 reading
2개의 동영상
Industry Professional on Distribution - Dr. Eric Allen, Senior Vice President, Two Sigma6m
1개의 읽기 자료
Our Other Course Offerings10m
4.6
125개의 리뷰Chevron Right

25%

이 강좌를 수료한 후 새로운 경력 시작하기

12%

이 강좌를 통해 확실한 경력상 이점 얻기

최상위 리뷰

대학: 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 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 프로필에 수료증을 추가할 수 있습니다. 강좌 내용만 읽고 살펴보려면 해당 강좌를 무료로 청강할 수 있습니다.

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