Бакалавриат
2024/2025




Программирование на С++
Статус:
Курс по выбору (Программная инженерия)
Кто читает:
Базовая кафедра фирмы 1С
Когда читается:
2-й курс, 1, 2 модуль
Охват аудитории:
для своего кампуса
Преподаватели:
Абасов Ислам Гарикович,
Афиногенова Ирина Андреевна,
Афонин Сергей Александрович,
Морген Матвей Владиславович
Язык:
русский
Программа дисциплины
Аннотация
Основной задачей курса является изучение базовых синтаксических особенностей языка программирования C++, лучших практик его применения и особенностей написания программ на современном C++.
Дисциплина "Программирование на С++" является логическим продолжением освоенного студентами курса “Основы программирования на С++”.
Курс предназначен для углубления знаний студентов в области языка программирования С++, изучения и отработки на практике сложных механик языка.
Цель освоения дисциплины
- Настоящая дисциплина является базовой и относится к профессиональному циклу дисциплин. Изучение данной дисциплины базируется на знаниях студентами математики, основ информатики и алгоритмизации в рамках учебной программы средней школы, умении применять математический аппарат при выборе метода решения задачи. Дисциплина является основой для последующего изучения дисциплин: Конструирование программного обеспечения, Алгоритмы и структуры данных, Построение и анализ алгоритмов, Базы данных, Распределенные вычисления, Компьютерная графика.
Планируемые результаты обучения
- Знает основные алгоритмические конструкции языка C++, умеет решать простые алгоритмические задачи
- Знает стандартные структуры данных и алгоритмы, умеет по условию задачи и заданным ограничениям корректно выбрать необходимый библиотечный тип/функцию и реализовать корректное решение задачи.
- Знает принципы организации ввода-вывода в языке C++. Знает различные типы потоков ввода-вывода. Умеет применять их при решении практических задач.
- Знает, как осуществляется компиляция программы на языке C++. Умеет при решении задач избегать нарушений правила одного определения.
- Знает синтаксис определения собственных типов в языке С++. Умеет проектировать собственные типы в зависимости от поставленной задачи.
- Понимает как осуществляется выделение памяти. Умеет решать задачи без возникновения утечки памяти.
- Знает внутренне устройство контейнеров, различие в типах итераторов и доступные операции. Знает устройство цикла по коллекции.
- Знает основные принципы проектирования шаблонных типов. Умеет решать задачи с использованием собственных шаблонных типов.
- Знает основы работы с временными объектами. Умеет реализовывать собственные типы без создания накладных расходов на чрезмерное копирование объектов.
- Знает основные элементы языка С++. Знает состав стандартной библиотеки STL. Знает принципы организации ввода-вывода в языке C++. Знает различные типы потоков ввода-вывода. Умеет применять их при решении практических задач. Умеет на практике корректно обрабатывать исключительные ситуации.
- Понимает устройство наследования и организацию собственных типов. Способен самостоятельно выстроить архитектуру программ средней сложности Знает основные принципы проектирования шаблонных типов. Умеет решать задачи с использованием собственных шаблонных типов. Знает базовые шаблоны проектирования. Умеет с помощью них корректно выстраивать архитектуру программ в типовых задачах.
- Знает как ускорять программы при помощи потоков. Понимает методы их синхронизации. Знает что такое тупиковые ситуации и голодание. Умеет корректно работать с памятью в рамках потоков. Знает параллельные алгоритмы, реализованные в стандартной библиотеке STL.
- Знает конструкции языка, используемые для функционального программирования. Умеет использовать их на практике. Знает в каких случаях могут применяться ленивые вычисления.
- Знает что такое метапрограммирование и понимает границы его применения.
Содержание учебной дисциплины
- Введение
- Полиморфизм. Объектно-ориентированное проектирование
- Поддержка параллельного и конкурентного программирования
- Функциональное программирование на С++
- Дополнительные разделы
Промежуточная аттестация
- 2024/2025 2nd module0,5 * (0,1 * А + 0,2 * ДЗ1 + 0,35 * ДЗ2 + 0,35 * ДЗ3) + 0,5 * (0,3 * КР + 0,7 * ЭКЗ)
Список литературы
Рекомендуемая основная литература
- C++. Практика многопоточного программирования - 978-5-4461-0831-2 - Энтони Уильямс - 2021 - Санкт-Петербург: Питер - https://ibooks.ru/bookshelf/371682 - 371682 - iBOOKS
- Программирование : принципы и практика с использованием С++, Страуструп, Б., 2018
- Стандартный Си++: учеб. пособие - 978-5-00184-081-7 - Подбельский В.В. - 2022 - Москва: Финансы и статистика - https://ibooks.ru/bookshelf/388182 - 388182 - iBOOKS
- Страуструп, Б. Язык программирования C++ для профессионалов : учебное пособие / Б. Страуструп. — 2-е изд. — Москва : ИНТУИТ, 2016. — 670 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100542 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Рекомендуемая дополнительная литература
- Введение в язык СИ++ : учеб. пособие, Подбельский, В. В., 1994