• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2024/2025

Программирование на С++

Статус: Курс по выбору (Программная инженерия)
Когда читается: 2-й курс, 1, 2 модуль
Охват аудитории: для своего кампуса
Преподаватели: Абасов Ислам Гарикович, Афиногенова Ирина Андреевна, Афонин Сергей Александрович, Морген Матвей Владиславович
Язык: русский

Программа дисциплины

Аннотация

Основной задачей курса является изучение базовых синтаксических особенностей языка программирования C++, лучших практик его применения и особенностей написания программ на современном C++. Дисциплина "Программирование на С++" является логическим продолжением освоенного студентами курса “Основы программирования на С++”. Курс предназначен для углубления знаний студентов в области языка программирования С++, изучения и отработки на практике сложных механик языка.
Цель освоения дисциплины

Цель освоения дисциплины

  • Настоящая дисциплина является базовой и относится к профессиональному циклу дисциплин. Изучение данной дисциплины базируется на знаниях студентами математики, основ информатики и алгоритмизации в рамках учебной программы средней школы, умении применять математический аппарат при выборе метода решения задачи. Дисциплина является основой для последующего изучения дисциплин: Конструирование программного обеспечения, Алгоритмы и структуры данных, Построение и анализ алгоритмов, Базы данных, Распределенные вычисления, Компьютерная графика.
Планируемые результаты обучения

Планируемые результаты обучения

  • Знает основные алгоритмические конструкции языка C++, умеет решать простые алгоритмические задачи
  • Знает стандартные структуры данных и алгоритмы, умеет по условию задачи и заданным ограничениям корректно выбрать необходимый библиотечный тип/функцию и реализовать корректное решение задачи.
  • Знает принципы организации ввода-вывода в языке C++. Знает различные типы потоков ввода-вывода. Умеет применять их при решении практических задач.
  • Знает, как осуществляется компиляция программы на языке C++. Умеет при решении задач избегать нарушений правила одного определения.
  • Знает синтаксис определения собственных типов в языке С++. Умеет проектировать собственные типы в зависимости от поставленной задачи.
  • Понимает как осуществляется выделение памяти. Умеет решать задачи без возникновения утечки памяти.
  • Знает внутренне устройство контейнеров, различие в типах итераторов и доступные операции. Знает устройство цикла по коллекции.
  • Знает основные принципы проектирования шаблонных типов. Умеет решать задачи с использованием собственных шаблонных типов.
  • Знает основы работы с временными объектами. Умеет реализовывать собственные типы без создания накладных расходов на чрезмерное копирование объектов.
  • Знает основные элементы языка С++. Знает состав стандартной библиотеки STL. Знает принципы организации ввода-вывода в языке C++. Знает различные типы потоков ввода-вывода. Умеет применять их при решении практических задач. Умеет на практике корректно обрабатывать исключительные ситуации.
  • Понимает устройство наследования и организацию собственных типов. Способен самостоятельно выстроить архитектуру программ средней сложности Знает основные принципы проектирования шаблонных типов. Умеет решать задачи с использованием собственных шаблонных типов. Знает базовые шаблоны проектирования. Умеет с помощью них корректно выстраивать архитектуру программ в типовых задачах.
  • Знает как ускорять программы при помощи потоков. Понимает методы их синхронизации. Знает что такое тупиковые ситуации и голодание. Умеет корректно работать с памятью в рамках потоков. Знает параллельные алгоритмы, реализованные в стандартной библиотеке STL.
  • Знает конструкции языка, используемые для функционального программирования. Умеет использовать их на практике. Знает в каких случаях могут применяться ленивые вычисления.
  • Знает что такое метапрограммирование и понимает границы его применения.
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Введение
  • Полиморфизм. Объектно-ориентированное проектирование
  • Поддержка параллельного и конкурентного программирования
  • Функциональное программирование на С++
  • Дополнительные разделы
Элементы контроля

Элементы контроля

  • неблокирующий ДЗ_1
  • неблокирующий ДЗ_2
  • неблокирующий ДЗ_3
  • неблокирующий А
  • неблокирующий КР
  • неблокирующий ЭКЗ
Промежуточная аттестация

Промежуточная аттестация

  • 2024/2025 2nd module
    0,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

Авторы

  • Буцкая Евгения Александровна
  • Чуйкин Николай Константинович