Онлайн-курс — сертифицированная профессиональная специализация по параллельному программированию на Java от Google и Университета Райса.

Улучшите свои навыки программирования с помощью параллелизма. Изучите основные принципы параллельного, параллельного и распределенного программирования.

Suggested by: Coursera (What is Coursera?)

Professional Certificate

Средний уровень

No prior knowledge required

Time to complete the course

7-day free trial

No unnecessary risks

Skills you will acquire in the course

  • коммуникативные навыки
  • тайм-менеджмент
  • критическое мышление
  • работа в команде
  • решение проблем
  • лидерство
  • навыки презентации
  • Способность к самостоятельному обучению
  • управление проектом
  • технологические навыки

What you will learn in the course

Courses for which the course is suitable

  • инженер-программист
  • Разработчик программного обеспечения
  • Разработчик параллельных систем
  • Разработчик распределенных систем
  • Эксперт по многопоточному программированию
  • Разработчик облачных приложений
  • Разработчик биомедицинских решений
  • Разработчик финансовых услуг

Стажировка – серия курсов по 3 единицы.

  • Параллельное программирование, параллельное программирование и распределенное программирование составляют основу программного обеспечения в различных областях, от биомедицинских исследований до финансовых услуг.
  • Эта специализация предназначена для всех, кто имеет базовые знания последовательного программирования на Java и хочет научиться писать параллельные, параллельные и распределенные программы.
  • Благодаря сборнику из трех курсов (которые можно изучать в любом порядке или по отдельности) вы изучите базовые темы в области параллелизма, конкурентоспособности и распределения.
  • Эти курсы подготовили вас к многопоточному и распределенному программированию на самых разных вычислительных платформах, от мобильных устройств до серверов облачных вычислений.

Чтобы посмотреть краткое видео об этой стажировке, нажмите здесь .

Чтобы прочитать интервью с двумя начинающими инженерами-программистами о значении параллельных вычислений для их работы, нажмите здесь .

благодарность

  • Преподаватель, профессор Вивек Саркар, хотел бы поблагодарить доктора Макса Гроссмана за его вклад в мини-проекты и материалы курса.
  • Доктору Зорану Будимлику за вклад в ответы на вопросы экзаменатора.
  • Доктору Максу Гроссману и доктору Шамсу Имаму за вклад в педагогическую библиотеку PCDP, использованную в нескольких мини-проектах.
  • и всем членам команды Rice Online, которые внесли свой вклад в разработку содержания курса (включая Мартина Келби, Антета Гавайя, Сета Тайгера и Чонг Чжу).

Практический учебный проект

  • Каждый курс включает мини-проекты, которые позволят учащимся получить практический опыт работы с популярными Java API для параллельного, параллельного и распределенного программирования.
  • Мини-проекты были взяты из реальных проблем в самых разных областях.

Details of the courses that make up the specialization

Параллельное программирование на Java

Курс 1

  • 19 часов
  • 4,6 (1205 оценок)

Детали курса

чему ты научишься

Этот курс обучает специалистов отрасли и студентов фундаментальным концепциям параллельного программирования в контексте Java 8. Параллельное программирование позволяет разработчикам использовать преимущества многоядерных компьютеров для повышения производительности приложений за счет одновременного использования нескольких процессоров. К концу курса вы будете знать, как использовать популярные платформы параллельного программирования на Java (такие как ForkJoin, Stream и Phaser) для написания параллельных программ для широкого спектра многоядерных платформ, включая серверы, настольные компьютеры и мобильные устройства. устройства, а также вы узнаете об их теоретических основах, включая вычислительные графы, идеальный параллелизм, параллельное ускорение, закон Амаделя, информационные гонки и детерминизм.

Почему вам стоит пройти этот курс?
  • Все компьютеры являются многоядерными, поэтому важно научиться расширять свои знания последовательного программирования на Java.
  • Java 7 и Java 8 представили новые платформы для параллельного программирования (ForkJoin, Stream), которые существенно изменили парадигмы параллельного программирования с первых десятилетий существования Java.
  • Каждый из четырех модулей курса содержит миниатюрный проект «Назначти», который даст вам полезный практический опыт для применения понятий, изученных после окончания курса.
  • Во время курса вам понадобится онлайн-доступ к лектору и наставникам для получения персонализированных ответов на ваши вопросы на форумах.
Желаемые результаты обучения на курсе включают в себя:
  • Теория параллелизма: вычислительные графы, работа, диапазон, идеальный параллелизм, параллельное ускорение, закон Амаделя, информационная гонка и детерминизм.
  • Параллелизм задач с помощью платформы Java ForkJoin
  • Функциональный параллелизм с использованием фреймворков Java Future и Stream.
  • Параллелизм на уровне цикла с расширениями для барьеров и группировкой итераций (фрагментированием)
  • Параллелизм потоков данных с использованием платформы Phaser и задач, управляемых данными.

Освоение этих концепций позволит вам немедленно применять их в контексте многоядерных программ Java, а также обеспечит основу для освоения других систем параллельного программирования, которые вам пригодятся в будущем (таких как C++11, OpenMP, Библиотека параллельных задач .Net).

навыки, которые вы приобретете
  • Категория: поток данных
  • Категория: параллельное программирование
  • Категория: Java-методология

Синхронизированное программирование на Java

Курс 2

  • 18 часов
  • 4,5 (655 оценок)

Детали курса

чему ты научишься

Этот курс обучает специалистов отрасли и студентов фундаментальным концепциям синхронного программирования в контексте Java 8. Синхронное программирование позволяет разработчикам эффективно и правильно управлять использованием общих ресурсов в параллельных программах. В конце курса вы узнаете, как использовать базовые структуры синхронизации в Java, такие как процессы (потоки), блокировки, критические части, атомарные переменные, изоляцию, модели актеров, оптимистическую синхронизацию и синхронизированные коллекции, а также их теоретические основы. (например, гарантии прогресса, тупик, активная блокировка, голодание и линеаризуемость).

Почему вам стоит пройти этот курс?
  • Важно знать теоретические основы синхронизации, чтобы избежать распространенных, но незаметных ошибок программирования.
  • В Java 8 обновлено большинство структур синхронизации с момента появления процессов и блокировок.
  • Во время курса вам понадобится онлайн-доступ к лектору и наставникам для получения персонализированных ответов на ваши вопросы на форумах.
  • Каждый из четырех модулей курса содержит миниатюрный проект «Назначти», который даст вам полезный практический опыт для применения понятий, изученных после окончания курса.
Желаемые результаты обучения на курсе включают в себя:
  • Теория синхронизации: гарантии прогресса, тупик, активная блокировка, голодание, линеаризуемость
  • Использование процессов и блокировок в упорядоченной/неупорядоченной конфигурации в Java
  • Атомарные переменные и изоляция
  • Оптимистическая синхронизация и синхронизированные коллекции в Java (например, синхронизированные очереди, синхронизированные хэш-карты)
  • Модель игрока на Java

Освоение этих концепций позволит вам немедленно применять их в контексте синхронизированных программ Java и поможет вам освоить другие системы синхронизированного программирования, которые вам пригодятся в будущем (например, потоки POSIX, потоки .NET).

навыки, которые вы приобретете
  • Категория: Синхронизация (Информатика)
  • Категория: Модель игрока
  • Категория: Оптимистическое управление синхронизацией
  • Категория: Синхронное программирование

Распределенное программирование на Java

Курс 3

  • 17 часов
  • 4,5 (489 оценок)

Детали курса

чему ты научишься

Этот курс обучает специалистов отрасли и студентов фундаментальным концепциям распределенного программирования в контексте Java 8. Распределенное программирование позволяет разработчикам использовать несколько узлов в центре обработки данных для увеличения пропускной способности и уменьшения задержки выбранных приложений. К концу курса вы будете знать, как использовать популярные среды распределенного программирования для программ Java, включая Hadoop, Spark, Sockets, Remote Method Invoke (RMI), Multicast Sockets, Kafka, Message Passing Interface (MPI), а также различные подходы к объединению процессов распределения работы и мультипрограммирования.

Почему вам стоит пройти этот курс?
  • Все серверы в центрах обработки данных организованы как совокупность распределенных серверов, и также важно научиться использовать несколько серверов для увеличения пропускной способности и уменьшения задержек.
  • Помимо изучения конкретных фреймворков для распределенного программирования, курс научит вас, как объединить многоядерный параллелизм и распределенное программирование в едином подходе.
  • Каждый из четырех модулей курса содержит миниатюрный проект «Назначти», который даст вам полезный практический опыт для применения понятий, изученных после окончания курса.
  • Во время курса вам понадобится онлайн-доступ к лектору и наставникам для получения персонализированных ответов на ваши вопросы на форумах.
Желаемые результаты обучения на курсе включают в себя:
  • Распределенное программирование Map-Reduce на Java с использованием платформ Hadoop и Spark.
  • Клиент-серверное программирование с использованием интерфейсов сокетов Java и удаленного вызова методов (RMI).
  • Программирование передачи сообщений с помощью интерфейса передачи сообщений (MPI) на Java.
  • Подходы к объединению распределения работы и многопроцессного программирования, включая процессы и процессы, распределенных участников и реактивное программирование.

Освоение этих концепций позволит вам немедленно применять их в контексте распределенных программ Java, а также обеспечит основу для освоения других систем распределенного программирования, с которыми вы столкнетесь в будущем (таких как Scala или C++).

навыки, которые вы приобретете
  • Категория: Распределенное программирование
  • Категория: Модель игрока
  • Категория: параллельное программирование
  • Категория: реактивное программирование