Программирование на C++, часть 1

Санкт-Петербург, осень 2021

Описание

Ссылки

Ведомость: link (Правила оценивания описаны ниже)

Описание курса

Первая часть курса дает базовые знания и навыки для написания программ с помощью С++. Для освоения курса необходимо быть уверенным пользователем вашей любимой ОС и иметь базовое представление о системе контроля версий git.

C++ знаменит своей производительностью, которая дается, в том числе, и ценой уменьшения безопасности: например, нет проверки выхода индекса за границы массива. Тем не менее, C++ активно развивается в последнее время, и это явно указывает о заинтересованности IT-сообщества в нем. C++20 стандарт готов, а ведущие компиляторы поддерживают почти все требования, описанные в нем. Стандарт C++20 будет рассмотрен во второй части курса, а в первой мы сконцентрируемся на стандартах C++11, C++14, C++17, так как именно они активно используется для разработки в настоящее время.

Примерный список тем, которые будут рассмотрены в первой части курса:

  • препроцессор, компиляция, линковка и исполнение программ
  • встроенные типы, основные конструкции языка
  • глобальные и локальные переменные, области видимости
  • массивы, указатели, ссылки
  • функции, способы передачи аргументов в функцию, указатель на функцию, перегрузка, inline, static, конвенции вызова, RVO и NRVO
  • объявление и определение, ODR, внутренняя и внешняя линковка
  • работа с памятью
  • перечисления, объединения
  • классы: поля, методы, области видимости, операторы, наследование, динамический полиморфизм
  • пространства имен
  • анонимные функции
  • шаблонные функции и классы
  • move-семантика, категории значений выражений

Активности и оценки

Лекции

На лекциях рассматривается теоретическая часть языка программирования С++. Для лучшего понимания темы мы стараемся показать больше примеров, как в виде сниппетов кода, так и в формате лайв-кодинга.

По окончании лекции могут быть небольшие анонимные опросы по прошедшей теме с возможностью оставить комментарии и предложения о курсе.

Семинары

Семинары обязательны для всех студентов курса.

Семинары рассчитаны на более глубокий разбор тех или иных практических вопросов языка.

Обычно семинар состоит из следующих активностей:

  • Разбор задач прошлых семинаров, ответы на вопросы
  • Обзор тем, необходимых для решения дорешек
  • Обсуждение условий заданий дорешек
  • LiveCoding студентов

Дорешки

На семинарах выдается несколько небольших задач. Решения проходят два этапа ревью, которые помогут вам с написанием идиоматичного кода и поиском распространенных ошибок.

Подробнее о том, как происходит процесс оценивания дорешек описано здесь.

Итоговая оценка за дорешки формируется следующим образом:

  • Рассчитывается относительный балл: балл_за_дорешку / максимальный_балл_за_дорешку
  • Отбрасывается худшая дорешка
  • Рассчитывается средний относительный балл avgR
  • Итоговая оценка: 2 + 3 * avgR

Примечание: бонусные коэффициенты и задачи со звездочками не учитываются в максимальном балле за дорешку

Контрольные работы

Примерно каждый 3-4 семинар проводится контрольная работа. За семестр будет 3 контрольные работы. Решения контрольных работ проходят ревью единожды.

Итоговая оценка за контрольные работы формируется следующим образом:

  • Рассчитывается относительный балл: балл_за_кр/ максимальный_балл_за_кр
  • Отбрасывается худшая контрольная
  • Рассчитывается средний относительный балл avgR
  • Итоговая оценка: 2 + 3 * avgR

Большие домашние задания

Домашние задания обязательны для всех студентов курса.

Большое домашнее задание предполагает решение одной большой целостной задачи с последующими тремя попытками ревью. Всего будет три домашних задания.

О том как формируются сроки сдачи домашних работ описано здесь

За домашнее задание можно получить либо зачет (1 балл), либо незачет (0 баллов).

Возможно, но не гарантируется, наличие бонусных заданий, за которые можно получить дополнительные баллы.

Итоговая оценка за домашние задания: MIN(баллы_за_дз + 2, 5)

Допуск к экзамену

Экзамен опционален для студентов CSC

Студент считается допущенным к экзамену, если он имеет >= 2.5 балла за каждую из активностей, описанных выше (дорешки, контрольные, большие домашние задания).

Если имеется < 2.5 баллов только за одну из активностей, то ее можно досдать на экзамене.

Экзамен

Экзамен состоит из 3 блоков: теормин, теория, задача. Каждый из них оценивается по 5-бальной шкале.

Если оценка за каждый из блоков >= 2.5, то оценка за экзамен рассчитывается как среднее оценок этих 3 блоков, иначе 2.

Оценка за курс

CSC

Оценка за активности:

activities = AVG(домашние, контрольные, дорешки)

Итоговая оценка:

with_exam ? MAX(activities, AVG(activities, exam)) : activities

ITMO/HSE

Если оценка за экзамен < 2.5, то оценка 2.

Иначе, AVG(AVG(дорешки, контрольные, домашние), exam).

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