Бакалавриат
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