Компьютерные науки

Теория и практика многопоточного программирования

Программа раскрывает теоретические основы параллельного программирования, архитектуру систем с разделяемой памятью и методы доказательства корректности алгоритмов.
Студентов 604 Выпускников 27 Для специалистов
690 ₽ 1 200 ₽
или любая сумма на ваше усмотрение
Вы можете оплатить любую сумму, чтобы поддержать наш проект и авторов программы. Объем услуг не зависит от размера вашей оплаты.
Объем

36 час.
Длительность

30 дней
Нагрузка в неделю

9 час.
Формат обучения

Дистанционно (самостоятельно)
Описание Учебный курс детально исследует архитектуру многоядерных систем с разделяемой памятью. Он представляет математическую модель параллельного исполнения и обучает построению рассуждений в её терминах. В рамках курса вводятся ключевые понятия согласованности многопоточных систем, анализируются распространённые ошибки при проектировании параллельных программ и предлагаются методы их исправления. Этот курс будет полезен разработчикам, системным архитекторам и инженерам, стремящимся к глубокому пониманию принципов создания надёжных и эффективных многопоточных приложений.
Цели
  • Сформировать глубокое понимание теоретических основ и математических моделей многопоточного программирования.
  • Развить способность анализировать и доказывать корректность параллельных алгоритмов.
  • Систематизировать знания о типовых ошибках в многопоточных программах и методах их предотвращения.
  • Подготовить к созданию надёжных и эффективных неожидающих параллельных алгоритмов.
Чему я научусь?
  • Применять математические модели для анализа поведения параллельных программ.
  • Разрабатывать многопоточные программы, учитывая архитектуру многоядерных систем.
  • Идентифицировать и устранять распространённые ошибки в параллельных алгоритмах.
  • Оценивать согласованность и корректность разрабатываемых многопоточных решений.

Авторы

Протасов Станислав Игоревич
Протасов Станислав Игоревич
к.ф-м.н, ассистент кафедры информатики МФТИ. Выпускник факультета компьютерных наук Воронежского государственного университета. Инженер-программист в Parallels.
Чему я научусь?
  • Применять математические модели для анализа поведения параллельных программ.
  • Разрабатывать многопоточные программы, учитывая архитектуру многоядерных систем.
  • Идентифицировать и устранять распространённые ошибки в параллельных алгоритмах.
  • Оценивать согласованность и корректность разрабатываемых многопоточных решений.

Учебный план

Занятия
Экзамен экстерном Внимание! Экзамен экстерном не обязательный для сдачи. При желании вы можете его пройти, если хотите подтвердить свои знания по данному курсу без его изучения или поверить свои знания по нему. Экзамен экстерном можно сдать только один раз. 90 мин
1 Введение в параллельное программирование Предпосылки возникновения параллельных систем. Состояние дел на начало XXI века. Парадигмы последовательного и параллельного мышления. Содержание... Предпосылки возникновения параллельных систем. Состояние дел на начало XXI века. Парадигмы последовательного и параллельного мышления. Содержание курса. Компетенции после курса. ещё
2 Архитектура фон Неймана Основы архитектуры фон Неймана и PC. Компоненты архитектуры, явно влияющие на производительность (CPU, шина, кэш, Interconnect).... Основы архитектуры фон Неймана и PC. Компоненты архитектуры, явно влияющие на производительность (CPU, шина, кэш, Interconnect). Программные способы влияния на производительность. ещё
3 Последовательность исполнения. Упорядоченность и атомарность Процессы и потоки. Инструкции x86. Видимость результатов. Модель упорядоченности доступа к памяти. Атомарность и атомарные примитивы.
Последовательность исполнения. Упорядоченность и атомарность тест для курса Теория и практика многопоточного программирования 60 мин
4 Формальное представление многопоточной системы Уровни абстракции программы. Корректность программы. Время как абстракция. Вероятность ошибки.
5 Проблемы многопоточности Общие проблемы многопоточности. Проблемы работы с разделяемой памятью. Разделяемые объекты, синхронизация, примитивы синхронизации.
Проблемы многопоточности тест для курса Теория и практика многопоточного программирования 40 мин
6 Модель исполнения, критические секции и объекты блокировки Математическая модель многопоточной программы. Терминология теории параллельного программирования. Реализация объектов блокировки.
7 Согласованность, история, линеаризуемость Свойства согласованности и регистры. История. Линеаризация истории.
Согласованность, история, линеаризуемость тест для курса Теория и практика многопоточного программирования 40 мин
8 Консенсус Консенсус. Число консенсуса. Протокол, состояние протокола. Валентность состояния. Создание консенсуса из примитивов.
9 Еще про консенсус Универсальный объект. Невозможность консенсуса в системе со сбоями.
Еще про консенсус тест для курса Теория и практика многопоточного программирования 40 мин
10 Подходы к синхронизации Виды замков. 5 подходов к синхронизации.
11 Разделяемые структуры данных и алгоритмы обслуживания Обзор параллельных структур данных. Особенности реализации замков.
Разделяемые структуры данных и алгоритмы обслуживания тест для курса Теория и практика многопоточного программирования 40 мин
Тренировочный экзамен Внимание! Тренировочный экзамен экстерном не обязательный для сдачи. При желании вы можете его пройти, если хотите проверить свои знания курса перед сдачей экзамена. Тренировочный экзамен можно сдавать сколько угодно один раз. 90 мин
Экзамен 60 мин

Какой документ я получу?

Сертификат

Выдаётся автоматически после успешного завершения программы.

Удостоверение о повышении квалификации

Выдается при наличии среднего специального или высшего образования (необходимые документы).

Стоимость программы

690 ₽ 1 200 ₽
или любая сумма на ваше усмотрение
Вы можете оплатить любую сумму, чтобы поддержать наш проект и авторов программы. Объем услуг не зависит от размера вашей оплаты.