Бакалавриат
2026/2027





Software Engineering 1: многопоточное программирование
ID 1145492
Статус:
Курс обязательный (Дизайн и разработка информационных продуктов)
Кто читает:
Базовая кафедра Т-Банка
Где читается:
Факультет компьютерных наук
Когда читается:
3-й курс, 1, 2 модуль
Охват аудитории:
для своего кампуса
Преподаватели:
Прокопчук Роман Олегович
Язык:
русский
Кредиты:
4
Контактные часы:
56
Программа дисциплины
Аннотация
“Многопоточное программирование” - дисциплина, изучающая принципы и техники создания многопоточных программ. Параллельное программирование позволяет разработчикам использовать многоядерные компьютеры для ускорения работы приложений за счет одновременного использования нескольких процессоров. Этот курс обучает слушателей фундаментальным концепциям параллельного программирования в контексте Java 8 и покажет, как эффективно использовать многопоточность для оптимизации производительности и ускорения работы программ.
Цель освоения дисциплины
- Освоить базовые механизмы многопоточности и принципы обеспечения корректности параллельного исполнения
- Осознанно выбирать инструменты синхронизации
- Управлять пулами, асинхронностью и масштабированием
- Обосновывать корректность и диагностировать проблемы
Планируемые результаты обучения
- обосновывает корректность многопоточного кода через happens‑before
- проверяет код и анализирует диагностику с работающего сервиса
- организует параллельные задачи и эффективно распределяет нагрузку
- пишет масштабируемый I/O‑код на виртуальных потоках и строит асинхронные цепочки без блокировок
- подбирает подходящие механизмы синхронизации и избегает избыточных блокировок
- диагностирует и устраняет взаимоблокировки и гонки данных
- запускает потоки и аргументирует необходимость многопоточности в задаче
Содержание учебной дисциплины
- Введение в курс и в предмет. Лекция
- Введение в курс и в предмет. Семинар
- Разделяемое состояние и гонки. Лекция
- Разделяемое состояние и гонки. Семинар
- Взаимное исключение. Лекция
- Взаимное исключение. Семинар
- Взаимоблокировки. Лекция
- Взаимоблокировки. Семинар
- Стратегии потокобезопасности. Лекция
- Стратегии потокобезопасности. Семинар
- Замки и синхронизаторы. Лекция
- Замки и синхронизаторы. Семинар
- Атомарные операции. Лекция
- Атомарные операции. Семинар
- Конкурентные коллекции. Лекция
- Конкурентные коллекции. Семинар
- Пулы потоков. Лекция
- Пулы потоков. Семинар
- Асинхронная композиция. Лекция
- Асинхронная композиция. Семинар
- Виртуальные потоки. Лекция
- Виртуальные потоки. Семинар
- Структурная конкурентность. Лекция
- Структурная конкурентность. Семинар
- Тестирование и отладка. Лекция
- Тестирование и отладка. Семинар
- Модель памяти. Лекция
- Модель памяти. Семинар
Элементы контроля
- Работа на занятиях
- Домашние задания
- ЭкзаменУстный по билетам: два теоретических вопроса и разбор незнакомого фрагмента кода. Разбор кода — главный источник разброса оценок: его нельзя подготовить заранее, и сразу видно, понимает студент механику или запомнил рецепты.
Промежуточная аттестация
- 2026/2027 2nd moduleДЗ*05+РЗ*02+Э*03, где ДЗ - это домашние задания, РЗ - работа на занятиях и Э - экзамен
Список литературы
Рекомендуемая основная литература
- C++. Практика многопоточного программирования - 978-5-4461-0831-2 - Энтони Уильямс - 2021 - Санкт-Петербург: Питер - https://ibooks.ru/products/371682 - 371682 - iBOOKS
- Java Concurrency на практикею. - 978-5-4461-1314-9 - Гетц Брайан, Пайерлс Тим, Блох Джошуа, Боубер Джозеф, Холмс Дэвид, Ли Даг - 2021 - Санкт-Петербург: Питер - https://ibooks.ru/products/371693 - 371693 - iBOOKS
Рекомендуемая дополнительная литература
- Herlihy, M., & Shavit, N. (2012). The Art of Multiprocessor Programming, Revised Reprint. Burlington: Morgan Kaufmann. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=460894