Программирование на C++. Осенний семестр 2019

ru en cn

с начала прошло: 1757 д. 08:42
страница обновлена: 23.11.2024 11:06

Программирование на C++. Осенний семестр 2019

Лекции

1. ООП. Основы управления памятью

03.10.2019 презентация

2. ООП-продолжение. Полиморфизм. Friend. Const-correctness Пространства имен🔗

10.10.2019 презентация

3. Управление памятью. Аллокаторы. Умные указатели.

17.10.2019 презентация

4. Стандартная библиотека. STL. Functional. Exceptions🔗

24.10.2019 презентация

5. Шаблоны классов и функций. Специализация шаблона. Инстанцирование шаблона. SFINAE. Variadic templates.🔗

31.10.2019 презентация

6. Rvalue, lvalue. Move-семантика. Правила выведения типов в шаблонах, auto, decltype(auto)🔗

07.11.2019 презентация

7. Exception-safety. RAII. Basic, strong, nothrow guarantees.🔗

14.11.2019 презентация

8. OOP. Liskov substitution. Scott's solution. NVI🔗

21.11.2019 презентация

9. Exception-safety-2. Uncaught exception/exceptions. ScopeGuard idiom. SCOPE_EXIT, SCOPE_FAIL, SCOPE_SUCCESS🔗

05.12.2019 презентация

10. Undefined behavior🔗

12.12.2019 презентация

11. Многопоточность

19.12.2019 презентация

Практика (CATS)🔗

Все уже открытые контесты можно найти здесь

Списком:

  1. Первый
  2. Второй
  3. Третий
  4. Четвертый

    Правила сдачи

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

Ваши решения будут проверяться линтером на соответствие Google Style Guide. В случае несоответствия вы будете получать вердикт LI. Код линтера можно найти здесь.

Ваш код будет компилироваться компилятором g++ версии 7.2 с флагами -fsanitize=address -g -Wall -Werror. Чтобы проверить ваш код локально, нужно компилировать его с этими флагами. В случае падения из-за санитайзера вы будете получать RE, а вывод санитайзера можно будет посмотреть в результатах теста.

Практика

Полезные ссылки

Для юнит-тестирования предлагается использовать Catch

Catch tutorial

Покрытие: lcov

HW 1🔗

Дедлайн

У всех заданий жесткий дедлайн -- после дедлайна досдавать нельзя.

У групп с практикой в четверг -- 24.10.2019 сразу после конца пары

У групп с практикой в субботу -- 26.10.2019 сразу после конца пары

Задание

Реализовать интерфейс требуемых классов, написать юнит-тесты

Matrix.h

Vector.h

Base.h

Help🔗

Материалы с практических занятий

Алексей Щуров

Алексей Верхолат

HW 2🔗

Дедлайн

У всех заданий жесткий дедлайн -- после дедлайна досдавать нельзя.

У групп с практикой в четверг -- 28.11.2019 сразу после конца пары

У групп с практикой в субботу -- 30.11.2019 сразу после конца пары

Задание

Реализовать хеш-таблицу с открытой адресацией с использованием данного интерфейса

Следить за обновлением интерфейса здесь

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

HW 3🔗

Реализовать вариант Rogue-like игры. За ТЗ и исправлением в нем косяков следить здесь

Дедлайн в последний четверг и субботу декабря соответственно (26.12.2019 и 28.12.2019)

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

HW 4🔗

Реализовать Executor, ТЗ доступно в репозитории

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

Рейтинг

Рейтинг всех групп

Видео лекции и презентации на русском языке

Доступны лекции разных семестров computer science center. Видео лекции есть не везде, нужно смотреть по значку видео, есть ли запись в данном семестре.

Курс computer science center. Первые части

Курс computer science center. Вторые части

Литература

http://www.cplusplus.com

https://en.cppreference.com/w/

Stroustrup. 4 Edition

C++17 Standard

Список вопросов на коллоквиум

  1. ООП в C++. Структуры и классы. Множественное наследование. Виртуальное наследование. Таблица виртуальных функций. Абстрактные классы. Liskov substitution. NVI
  2. Управление памятью в C++. Выравнивание полей структур. Битовые поля в структурах. Sizeof. Выделение памяти (operator new, placement new). new vs malloc. POD. Фрагментация памяти. Счетчик ссылок. Умные указатели. Аллокаторы
  3. Const correctness. Константные указатели, ссылки, методы, переменные, замыкания. Mutable. Стандартная библиотека C++. Ввод-вывод. Контейнеры. Типы контейнеров. Типы итераторов.
  4. Обработка исключений в c++. Модули стандартной библиотеки для работы с исключениями. Exception safety. RAII. Виды гарантий exception safety. Раскрутка стека. std::uncaught_exception (s). Исключения в многопоточном приложении C++.
  5. Шаблоны в C++. Вложенные шаблоны. Различия в шаблонах функций и классов. Инстанцирование шаблона. Специализация шаблона. SFINAE.
  6. Метапрограммирование. type_traits. Variadic templates. Списки типов. Tag dispatch (by instance, by type, на примере iterator_traits).
  7. Функции в C++. Способы передачи функции в качестве аргумента. Указатель на функцию. Функторы. std::function. Замыкания и анонимные функции в C++.
  8. Многопоточность в C++. Race condition. Способы синхронизации. Dead lock, live lock. Lock-free. Модуль atomic. Conditional variable. Future. Promise
  9. Правила выведения типов в C++. decltype, auto, decltype(auto). Универсальные ссылки. Move-семантика. Perfect forwarding. Реализация std::move, std::forward. Value categories.
Дальневосточный федеральный университет