Программирование на C++, часть 2
Санкт-Петербург, весна 2021
Описание
Описание курса (II семестр)
updated: 14.02.2021
Вторая часть курса Программирование на С++
рассчитана на студентов, успешно освоивших первую часть курса, что подразумевает понимание таких тем, как функции, работа с памятью, анонимные функции, ООП, Динамический полиморфизм, категории значений, move-семантика...
Во второй части курса рассматриваются продвинутые темы. Примерный список тем:
- Standard Library
- Metaprogramming
- Serialization (json, protobuf)
- Libraries (static, dynamic; third-party)
- Multithreading
- C++20 Features: coroutines, modules, ranges, concepts
- Tools
- Security
Активности и оценки
Лекции
На лекциях рассматривается теоретическая часть языка программирования С++. Для лучшего понимания темы мы стараемся показать больше примеров, как в виде сниппетов кода, так и в формате лайв-кодинга.
По окончании лекции могут быть небольшие анонимные опросы по прошедшей теме с возможностью оставить комментарии и предложения о курсе.
Семинары
Семинары обязательны для всех студентов курса.
Дорешки
Семинары рассчитаны на более глубокий разбор тех или иных практических вопросов языка. Обычно семинар состоит из разбора задач прошлого семинара, небольшого обзора тем для новых задач и решение задач с возможностью задать вопросы преподавателю. На семинарах выдается несколько небольших задач. Решения проходят два этапа ревью, которые помогут вам с написанием идиоматичного кода и поиском распространенных ошибок.
Подробнее о том, как происходит процесс оценивания дорешек описано здесь.
Итоговая оценка за дорешки формируется следующим образом:
- Рассчитывается относительный балл:
балл_за_дорешку / максимальный_балл_за_дорешку
- Отбрасывается худшая дорешка
- Рассчитывается средний относительный балл
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)
.
Полезные ссылки
- Общая ведомость (В случае отсутствия доступа, запросите его, указав Фамилию, Имя и ник на github)
Преподаватели
Список лекций
Containers. Iterators. Algorithms. shared_ptr, weak_ptr, unique_ptr. <chrono>, <regex>, <filesystem>
co_yield, co_return, co_await, coroutine framework