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

Основы программирования на С++

Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Статус: Курс обязательный (Программная инженерия)
Направление: 09.03.04. Программная инженерия
Когда читается: 1-й курс, 4 модуль
Формат изучения: без онлайн-курса
Охват аудитории: для своего кампуса
Язык: русский
Кредиты: 3
Контактные часы: 80

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

Аннотация

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

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

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

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

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

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

  • Введение в программирование на языке C++
  • Функции в языке С++.
  • STL
  • Потоковый ввод-вывод
  • Компиляция программ на языке C++
  • Введение в ООП на С++.
  • Динамическое выделение памяти
  • Итераторы.
  • Шаблоны типов.
  • Временные объекты.
Элементы контроля

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

  • неблокирующий Теоретический тест
    Вопросы бывают двух видов: с открытым ответом и на множественный выбор. Выставление частичных баллов за неполностью правильный ответ не предусмотрено.
  • неблокирующий Контрольное домашнее задание
    КДЗ представляет из себя задание на взаимное оценивание аналогичное заданиям выполняемым на дисциплине Программирование на C#.
  • блокирующий Экзамен
    Экзамен проводится очно. Экзамен представляет из себя теоретический тест и/или контест. Если экзамен состоит из двух частей (контрольная и тест), то оценка вычисляется по формуле: ЭО = 0,5*ЭК + 0,5*ЭТ, если min(ЭК2; ЭТ2)>=3,5; иначе ЭО2 = min(ЭК2; ЭТ2). Экзаменационный тест (ЭТ) состоит из 40 вопросов и оценивается исходя из максимального количества правильных ответов (NMAX), полученных при прохождении теста всеми студентами курса. Оценка вычисляется по следующим правилам (N – количество правильных ответов): Если студент предоставил 10 и менее правильных ответов, то оценка за тест N/4. Если N>10 и 31<=NMAX<=40 то N*10/NMAX Если N>10 и 26<=NMAX<=30 то N*9/NMAX Если N>10 и 21<=NMAX<=25 то N*8/NMAX Если N>10 и 16<=NMAX<=20 то N*7/NMAX Если N>10 и 14<=NMAX<=15 то N*6/NMAX Если N>10 и 12<=NMAX<=13 то N*5/NMAX Если N>10 и NMAX=11 то 4. Оценка за экзаменационный контест вычисляется как доля правильно решённых задач контеста умноженная на десять.
  • неблокирующий Контест
    Контест состоит из нескольких практических задач, которые необходимо сдать строго до окончания времени отведённого на выполнение задания.
  • неблокирующий Оценка преподавателя практических занятий
    Для получения оценки от преподавателя необходимо защитить несколько практических задач на занятиях преподавателю.
  • неблокирующий Контрольная работа
    Контрольная работа проходит в форме контеста из 10 задач на 120-240 минут. Работа выполняется с асинхронным прокторингом с использованием OBS Studio и обязательным использованием двух камер.
Промежуточная аттестация

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

  • 2023/2024 учебный год 4 модуль
    Оитог = 0,6 * Онакоп + 0,4 * Оэкзамен - экзамен блокирующий Онакоп = 0,2 * Окр + 0,35 * Оконтест + 0,05 * Отест + 0,2 * Окдз + 0,3 * Опр Накопленная оценка не может превышать 10 баллов, в случае если оценка по формуле превышает 10 студенту выставляется накопленная оценка 10.
Список литературы

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

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

  • Программирование : принципы и практика с использованием С++, Страуструп, Б., 2018
  • Стандартный Си++ : учеб. пособие для вузов, Подбельский, В. В., 2008
  • Язык программирования C++, Страуструп, Б., 2012

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

  • Qt 5.10. Профессиональное программирование на C++ - 978-5-9775-3678-3 - Шлее М. - 2018 - Санкт-Петербург: БХВ-Петербург - https://ibooks.ru/bookshelf/358881 - 358881 - iBOOKS
  • Введение в язык СИ++ : учеб. пособие, Подбельский, В. В., 1994

Авторы

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