2023/2024
Промышленное программирование на C/C++
Статус:
Маго-лего
Кто читает:
Департамент компьютерной инженерии
Когда читается:
3 модуль
Охват аудитории:
для своего кампуса
Преподаватели:
Петряйкин Федор Алексеевич
Язык:
русский
Кредиты:
3
Контактные часы:
48
Программа дисциплины
Аннотация
Курс рассчитан на студентов, имеющих опыт написания проектов на С++, умеющих тестировать их, производить рефакторинг кода; знающих основные паттерны проектирования и устройство памяти С++. В ходе программы студенты научатся разрабатывать и перерабатывать многопоточные приложения на С++ на примере аутентичных задач, выполняемых разработчиками в реальной жизни.
Цель освоения дисциплины
- В ходе обучения студенты изучат виды многозадачности, будут понимать причины возникновения проблем при разработке многопоточных приложений и способы их решения, будут знать, как устроена модель памяти C++ многопоточных приложений, а также виды примитивов синхронизации. Обучающиеся получат навыки отладки многопоточных приложений, научатся оценивать производительность приложений, находить узкие места в работе многопоточных приложений с помощью различных инструментов и исправлять их. В конце программы учащийся сможет разработать простейшее приложение для выполнения рендера на ЦПУ без использования специализированных библиотек.
Планируемые результаты обучения
- Устройство компьютера, устройство процессора и оперативной памяти, механизм работы виртуальной памяти
- - Принципы процедурного, объекто-ориентированного программирования, основные паттерны проектирования
- - Понимание принципов написания “чистого кода”
- - Понимание принципов тестирования программ
- - Понимание этапов сборки программы на C++. “Debug” и “Release” режимы сборки. Устройство исполняемого файла (файла динамической библиотеки). Простейшие сведения об языке assembler.
- - Модель памяти C++ (без многопоточности). Четкое понимание понятий “время жизни переменной”, “связывание (linkage)”, “область видимости”.
Содержание учебной дисциплины
- Введение в компьютерную графику (1).
- Введение в компьютерную графику (2).
- Обсуждение top/htop, признаки неоптимальной работы программы.
- Многопоточность в C++.
- perf и инструментирование. узкие места.
- Коллоквиум
- Профайлировка.
- Широкие инструкции, максимизация попадания в кэш.
- Атомарные переменные.
- Hugepages.
- Измерение и представление проекта.
- Коллоквиум по 2 части
Элементы контроля
- ЭкзаменДля допуска к экзамену необходимо выполнить все домашние задания (ненулевое число баллов) и набрать не менее 30% баллов за лабораторные работы и тесты.
- Проект
- Коллоквиум
Промежуточная аттестация
- 2023/2024 учебный год 3 модуль0.1 * Коллоквиум + 0.3 * Проект + 0.2 * Экзамен
Список литературы
Рекомендуемая основная литература
- C++. Практика многопоточного программирования - 978-5-4461-0831-2 - Энтони Уильямс - 2021 - Санкт-Петербург: Питер - https://ibooks.ru/bookshelf/371682 - 371682 - iBOOKS
- Qt 4.5. Профессиональное программирование на C++ - 978-5-9775-0398-3 - Шлее М. - 2010 - Санкт-Петербург: БХВ-Петербург - https://ibooks.ru/bookshelf/18534 - 18534 - iBOOKS
- Энтони, У. Параллельное программирование на C++ в действии. Практика разработки многопоточных программ : учебное пособие / У. Энтони , перевод с английского А. А. Слинкин. — Москва : ДМК Пресс, 2012. — 672 с. — ISBN 978-5-94074-448-1. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/4813 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Рекомендуемая дополнительная литература
- Гридчин, А. В. Информационные технологии. Программирование на C++ : учебно-методическое пособие / А. В. Гридчин. - Новосибирск : Изд-во НГТУ, 2020. - 68 с. - ISBN 978-5-7782-4174-9. - Текст : электронный. - URL: https://znanium.com/catalog/product/1866900
- Малявко, А. А. Параллельное программирование на основе технологий openmp, cuda, opencl, mpi : учебное пособие для вузов / А. А. Малявко. — 3-е изд., испр. и доп. — Москва : Издательство Юрайт, 2021. — 135 с. — (Высшее образование). — ISBN 978-5-534-14116-0. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/467800 (дата обращения: 27.08.2024).