10.09.2019. Лекция № 2. Шаблоны

Развернуть

  1. Two-phase translation.
  2. Linker errors.
  3. Inclusion model.
  4. Precompiled headers.
  5. Default template arguments.
  6. inline.
  7. static_assert.
  8. Nontype function template parameters.
  9. Nontype class template parameters.
  10. Alias declaration.

03.09.2019. Лекция №1. Шаблоны

Развернуть

  1. Motivation for templates.
  2. How it work? Instantiation.
  3. Template argument deduction from a function call.
  4. Class templates.
  5. Function templates specialization.
  6. Class templates specialization.
  7. Member templates.
  8. Traits classes.
  9. Policy classes.
  10. Functors from <functional>. std::bind.
  11. Lambda-expression.
  12. SFINAE.
  13. Iterator implementation until and since C++17.

13.05.2019. Лекция № 12. Принцип разделения интерфейса.

Развернуть

  1. Принцип разделения интерфейса (ISP).
  2. SOLID.
  3. Проектирование для задачи линейной аппроксимации набора точек.

06.05.2019. Лекция № 11. Графическая нотация. Принципы LSP и DIP.

Развернуть

  1. Графическая нотация для отношений.
  2. Пример: проектирование программы форматирования текста.
  3. Принцип подстановки Лискоу (LSP).
  4. Принцип инверсии зависимостей (DIP).

15.04.2019. Лекция №10. Отношения между классами. Принцип открытия-закрытия.

Развернуть

  1. Наследование.
  2. Композиция. Выбор между композицией и наследованием.
  3. Агрегация. Разница между композицией и агрегацией.
  4. Ассоциация.
  5. Пример замены композиции на ассоциацию.
  6. Принцип открытия-закрытия (OCP).
  7. Как вносить изменения, не нарушая принцип OCP? Выделение абстракции.

08.04.2019. Лекция № 9. Хорошие и плохие ОО-программы

Развернуть

  1. Общие требования к классам (декомпозиция, модульная композиция, модульная понятность, модульная непрерывность, модульная защищённость).
  2. Простая и незамысловатая реализация программы вычисления медиан.
  3. Реализация с одним большим классом.
  4. Принцип одной зоны ответственности (Single Responsibility Principle, SRP).
  5. Разнесение зон ответственности через структуры данных. Функциональный подход.
  6. Разделение вычисления медиан на классы Parser и MediansMedian.
  7. Альтернативное разделение на классы: Parser, ParserClient и MediansMedian. «Активные» и «пассивные» классы.

01.04.2019. Лекция №8. Исключения.

Развернуть

  1. Abnormal program termination.
  2. Return error codes.
  3. Macro errno.
  4. try/catch/throw.
  5. Using objects as exceptions.
  6. Exception specifications.
  7. Unwinding stack.
  8. More exception features.
  9. RAII.
  10. Exceptions in constructors.
  11. Best practices.

25.03.2019. Лекция №7. STL алгоритмы.

Развернуть

  1. Copying items from containers to containers.
  2. Sorting containers.
  3. Transforming items in containers.
  4. Finding items.
  5. Locating patterns in strings with std::search.
  6. Dictionary merging tool.
  7. Fill and generate containers.
  8. Checks by predicate.
  9. Functor.

18.03.2019. Лекция №6. STL контейнеры.

Развернуть

  1. std::list.
  2. std::forward_list.
  3. std::map.
  4. std::multimap.
  5. std::set.
  6. std::unordered_map.
  7. std::unordered_multimap.
  8. std::unordered_set.
  9. Erase-remove idiom on std::vector.
  10. Filtering duplicates.
  11. Fast or safe way to access std::array or std::vector.
  12. Word frequency counter.

11.03.2019. Лекция №5. STL введение.

Развернуть

  1. Стандартные потоки ввода / вывода (standard input / output streams).
  2. Манипуляторы (manipulators).
  3. Файловый поток (std::fstream).
  4. Строковый поток (std::stringstream).
  5. std::string.
  6. Итераторы (iterators).
  7. auto & range-based for-loop.

Действия