Об этом курсе
Недавно просмотрено: 29,378

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 ч. на завершение

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 видео ((всего 1 мин.)), 5 материалов для самостоятельного изучения, 1 тест
1 видео
5 материала для самостоятельного изучения
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.

7 видео ((всего 42 мин.)), 6 материалов для самостоятельного изучения, 2 тестов
7 видео
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мин
6 материала для самостоятельного изучения
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мин
1 практическое упражнение
Module 1 Quiz30мин
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 видео ((всего 40 мин.)), 6 материалов для самостоятельного изучения, 2 тестов
7 видео
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мин
6 материала для самостоятельного изучения
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мин
1 практическое упражнение
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.

2 видео ((всего 13 мин.)), 1 материал для самостоятельного изучения
2 видео
Industry Professionals on Parallelism - Jake Kornblau and Margaret Kelley, Software Engineers6мин
1 материал для самостоятельного изучения
About these Talks10мин
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 видео ((всего 41 мин.)), 6 материалов для самостоятельного изучения, 2 тестов
7 видео
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мин
6 материала для самостоятельного изучения
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мин
1 практическое упражнение
Module 3 Quiz30мин
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 видео ((всего 38 мин.)), 7 материалов для самостоятельного изучения, 2 тестов
7 видео
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мин
7 материала для самостоятельного изучения
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мин
1 практическое упражнение
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.

2 видео ((всего 10 мин.)), 1 материал для самостоятельного изучения
2 видео
Industry Professional on Distribution - Dr. Eric Allen, Senior Vice President, Two Sigma6мин
1 материал для самостоятельного изучения
Our Other Course Offerings10мин
Рецензии: 125Chevron Right


начал новую карьеру, пройдя эти курсы


получил значимые преимущества в карьере благодаря этому курсу

Лучшие отзывы о курсе Parallel Programming in Java

автор: 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.



Vivek Sarkar

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. Просто ознакомиться с содержанием курса можно бесплатно.

Остались вопросы? Посетите Центр поддержки учащихся.