• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Магистратура 2023/2024

Промышленное программирование на C/C++

Статус: Курс обязательный (Компьютерные системы и сети)
Направление: 09.04.01. Информатика и вычислительная техника
Когда читается: 2-й курс, 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 * Экзамен
Список литературы

Список литературы

Рекомендуемая основная литература

  • Шлее М. - Qt 4.5. Профессиональное программирование на C++ - 978-5-9775-0398-3 - Санкт-Петербург: БХВ-Петербург - 2010 - 18534 - https://ibooks.ru/bookshelf/18534/reading - iBOOKS
  • Энтони Уильямс - C++. Практика многопоточного программирования - 978-5-4461-0831-2 - Санкт-Петербург: Питер - 2021 - 371682 - https://ibooks.ru/bookshelf/371682/reading - iBOOKS
  • Энтони, У. Параллельное программирование на C++ в действии. Практика разработки многопоточных программ : учебное пособие / У. Энтони , перевод с английского А. А. Слинкин. — Москва : ДМК Пресс, 2012. — 672 с. — ISBN 978-5-94074-448-1. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/4813 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.

Рекомендуемая дополнительная литература

  • Информационные технологии. Программирование на C++ - Гридчин А.В. - Новосибирский государственный технический университет - 2020 - https://znanium.com/catalog/product/1866900 - 1168591 - ZNANIUM
  • Малявко, А. А.  Параллельное программирование на основе технологий openmp, cuda, opencl, mpi : учебное пособие для вузов / А. А. Малявко. — 3-е изд., испр. и доп. — Москва : Издательство Юрайт, 2021. — 135 с. — (Высшее образование). — ISBN 978-5-534-14116-0. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/467800 (дата обращения: 28.08.2023).