Программирование на C++, часть 2
Санкт-Петербург, весна 2022
Описание
Курс С++. Семестр 2
Вторая часть курса Программирование на **С++**
рассчитана на студентов, успешно освоивших первую часть курса, что подразумевает понимание таких тем, как функции, работа с памятью, анонимные функции (aka лямбды), ООП, динамический полиморфизм, категории значений, move-семантика
Во второй части курса рассматриваются продвинутые темы. Приблизительный список тем:
- Error handling. Exception Safety
- Standard Library
- Metaprogramming
- Serialization (json, protobuf)
- Libraries (static, dynamic; third-party)
- Multithreading
- C++20 Features: coroutines, modules, ranges, concepts
- Tools
- Security
Активности и оценки
Подробнее о системе оценивания по каждой из активностей описано здесь: link
1 Лекции
На лекциях рассматривается теоретическая часть языка программирования С++. Для лучшего понимания темы мы стараемся показать больше примеров, как в виде сниппетов кода, так и в формате лайв-кодинга.
Летучки
Для того чтобы вспомнить материал прошлых занятий в начале лекции 5-10 минут уделяется летучке. Формат летучки может быть разным: задания на платформах kahoot, itempool или stepik.
Баллы за летучки выставляются в общую ведомость и являются бонусными. Каким образом будут начисляться бонусы будет видно ближе к концу семестра.
Анонимные опросы
По окончании лекции могут быть небольшие анонимные опросы по прошедшей теме с возможностью оставить комментарии и предложения о курсе.
2 Семинары
Семинары обязательны для всех студентов курса.
Семинары рассчитаны на более тщательный разбор практических вопросов языка. Обычно семинар состоит из разбора задач прошлого семинара, небольшого обзора тем для новых задач и решения задач с возможностью задать вопросы преподавателю.
Дорешки
На семинарах выдается несколько небольших задач. Среди этих задач одна будет выбрана для прохождения код-ревью. К сожалению мы не имеем возможности проводить код-ревью для всех студентов, поэтому на каждой новой неделе будет формироваться новая группа студентов, чьи решения должны пройти код-ревью.
Код-ревью должно помочь с написанием идиоматичного кода и поиском распространенных ошибок.
Процесс проведения код-ревью описан здесь: link
Контрольные работы
Примерно каждый 3-4 семинар проводится контрольная работа. За семестр будет проведено до 3 контрольных работ. Решения контрольных работ проходят код-ревью единожды.
3 Большие домашние задания
Домашние задания обязательны для всех студентов курса.
Большое домашнее задание предполагает решение одной большой задачи с последующими тремя попытками код-ревью. В течение семестра ожидается три больших домашних задания.
Процесс и порядок формирования сроков сдачи описан здесь: link
4 Экзамен
Экзамен опционален для студентов CSC.
Экзамен состоит из 3 блоков: теормин, теория, задача. Каждый из них оценивается по 5-бальной шкале.
Преподаватели
Список лекций
godbolt'ы с лекций:
- рекурсия на шаблонах: https://godbolt.org/z/PPb78331a
- SFINAE-пример с деталями: https://godbolt.org/z/favoTxjqd
Дорешка: инвайт-линк
Live coding: inheritance + serialization https://godbolt.org/z/8n499s3zW