• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Бакалаврская программа «Программная инженерия»

25
Январь

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

2024/2025
Учебный год
RUS
Обучение ведется на русском языке
3
Кредиты
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс по выбору
Когда читается:
1-й курс, 4 модуль

Преподаватели


Бердашкевич Роман Евгеньевич


Макаровский Андрей Сергеевич


Степурин Савва


Чапкин Николай Сергеевич

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

Аннотация

Язык программирования (ЯП) C++ является одним из самых востребованных инструментов для разработки программного обеспечения и стабильно входит в тройку самых популярных языков согласно индексу TIOBE. Первые версии языка увидели свет более тридцати лет назад под названием «C с классами» как попытка добавить относительно новую на тот момент объектно-ориентированную парадигму (ООП) программирования. C++ быстро развился в полноценный язык программирования общего назначения, области применения которого по настоящему охватывают все уровни стека и все возможные вычислительные платформы: от написания низкоуровневых системных компонентов, драйверов операционных систем, кода встраиваемых приложений до высокоуровневых веб-приложений, от настольных офисных, издательских систем, приложений для работы с мультимедиа до высокоскоростных мобильных приложений. На C++ написан frontend поисковых движков таких технологических гигантов как Google и Яндекс. Без C++ не было бы современных игровых движков, высокочастотного трейдинга, 3D- и дополненной реальности в том виде, как мы их знаем сегодня. Наконец, большинство ядерные компонентов современных инструментов машинного обучения и ИИ также реализованы на C++. Одной из основных ключевых основ C++ является возможность высокоуровневой разработки высокоабстрактной логики с компиляцией ее в быстродействующий код с аккуратной и экономной утилизацией системных ресурсов, сопоставимых с существенно более низкоуровневыми языками, такими как C и даже Assembler. Важную роль играет и его мультипарадигменная природа: на нем можно писать в процедурном, ООП-, функциональном и обобщенном стиле, совмещая их при необходимости для профилирования получаемого результата в точности под контекст задачи. С академической точки зрения C++ является удачным методическим пособием для изучения на его основе концептуальных идей программирования, которые впоследствии без труда переносятся на другие ЯП. За время своего существования язык пережил несколько больших «эволюционных» волн, отразившихся в стандартах, среди которых следует выделить стандарты 2003, 2011 и 2020 годов, каждый из которых в значительной степени влиял на подходы к разработки программ на C++. Данный курс посвящен изучению концептуальных основ и наработки практических навыков разработки на C++ с использованием стандартной библиотеки с опорой на указанные стандарты.
Цель освоения дисциплины

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

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

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

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

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

  • Введение в программирование на языке C++
  • Функции в языке С++.
  • STL
  • Потоковый ввод-вывод
  • Компиляция программ на языке 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 и обязательным использованием двух камер.
  • неблокирующий Теоретический тест
    Вопросы бывают двух видов: с открытым ответом и на множественный выбор. Выставление частичных баллов за неполностью правильный ответ не предусмотрено.
  • неблокирующий Контрольное домашнее задание
    КДЗ представляет из себя задание на взаимное оценивание аналогичное заданиям выполняемым на дисциплине Программирование на C#.
  • неблокирующий Контест
    Контест состоит из нескольких практических задач, которые необходимо сдать строго до окончания времени отведённого на выполнение задания.
Промежуточная аттестация

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

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

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

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

  • Программирование : принципы и практика с использованием С++, Страуструп, Б., 2018

Авторы

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