Бакалавриат
2022/2023
Основы программирования на С++
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс обязательный (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Кто читает:
Департамент программной инженерии
Где читается:
Факультет компьютерных наук
Когда читается:
1-й курс, 4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для всех кампусов НИУ ВШЭ
Преподаватели:
Горденко Мария Константиновна,
Макаровский Андрей Сергеевич,
Нестеров Роман Александрович,
Никулов Сергей Александрович,
Умрихин Алексей Дмитриевич,
Федоров Михаил Антонович,
Чапкин Николай Сергеевич,
Шершаков Сергей Андреевич
Язык:
русский
Кредиты:
3
Контактные часы:
80
Программа дисциплины
Аннотация
Основной задачей курса является изучение базовых синтаксических особенностей языка программирования C++, лучших практик его применения и особенностей написания программ на современном C++.
Цель освоения дисциплины
- Настоящая дисциплина является базовой и относится к профессиональному циклу дисциплин. Изучение данной дисциплины базируется на знаниях студентами математики, основ информатики и алгоритмизации в рамках учебной программы средней школы, умении применять математический аппарат при выборе метода решения задачи. Дисциплина является основой для последующего изучения дисциплин: Конструирование программного обеспечения, Алгоритмы и структуры данных, Построение и анализ алгоритмов, Базы данных, Распределенные вычисления, Компьютерная графика.
Планируемые результаты обучения
- Знает основные алгоритмические конструкции языка C++, умеет решать простые алгоритмические задачи
- Знает стандартные структуры данных и алгоритмы, умеет по условию задачи и заданным ограничениям корректно выбрать необходимый библиотечный тип/функцию и реализовать корректное решение задачи.
- Знает принципы организации ввода-вывода в языке C++. Знает различные типы потоков ввода-вывода. Умеет применять их при решении практических задач.
- Знает, как осуществляется компиляция программы на языке C++. Умеет при решении задач избегать нарушений правила одного определения.
- Знает синтаксис определения собственных типов в языке С++. Умеет проектировать собственные типы в зависимости от поставленной задачи.
- Понимает как осуществляется выделение памяти. Умеет решать задачи без возникновения утечки памяти.
- Знает внутренне устройство контейнеров, различие в типах итераторов и доступные операции. Знает устройство цикла по коллекции.
- Знает основные принципы проектирования шаблонных типов. Умеет решать задачи с использованием собственных шаблонных типов.
- Знает основы работы с временными объектами. Умеет реализовывать собственные типы без создания накладных расходов на чрезмерное копирование объектов.
Содержание учебной дисциплины
- Введение в программирование на языке 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 и обязательным использованием двух камер.
Промежуточная аттестация
- 2022/2023 учебный год 4 модульОитог = 0,6 * Онакоп + 0,4 * Оэкзамен - экзамен блокирующий Онакоп = 0,2 * Окр + 0,35 * Оконтест + 0,05 * Отест + 0,2 * Окдз + 0,3 * Опр Накопленная оценка не может превышать 10 баллов, в случае если оценка по формуле превышает 10 студенту выставляется накопленная оценка 10.
Список литературы
Рекомендуемая основная литература
- Программирование : принципы и практика с использованием С++, Страуструп, Б., 2018
- Стандартный Си++ : учеб. пособие для вузов, Подбельский, В. В., 2008
- Язык программирования C++, Страуструп, Б., 2012
Рекомендуемая дополнительная литература
- Введение в язык СИ++ : учеб. пособие, Подбельский, В. В., 1994
- Шлее М. - Qt 5.10. Профессиональное программирование на C++ - 978-5-9775-3678-3 - Санкт-Петербург: БХВ-Петербург - 2018 - 358881 - https://ibooks.ru/bookshelf/358881/reading - iBOOKS