Проектирование больших систем на С++ — различия между версиями

Материал из Кафедра математической кибернетики
Перейти к: навигация, поиск
м (fix title)
Строка 7: Строка 7:
 
На занятиях предполагается разбор примеров использования конструкций языка и применения рассматриваемых методов проектирования, а также проведение промежуточных небольших тестов-контрольных.
 
На занятиях предполагается разбор примеров использования конструкций языка и применения рассматриваемых методов проектирования, а также проведение промежуточных небольших тестов-контрольных.
  
 
== Содержание курса ==
 
 
'''Занятие 1.''' Вводный тест. Вывод типов шаблонов и auto. Ключевое слово decltype. Инициализация с фигурными скобками.
 
 
'''[[Media: Lection_pbscpp_2.pdf|Занятие 2]].'''  Ключевые слова override и final. Удаленные функции. Псевдонимы. Перечисления с областью видимости. Объекты и функции constexpr.
 
 
'''[[Media: Lection_pbscpp_3.pdf|Занятие 3]].'''  Лямбда-выражения, функторы и связыватели.
 
 
'''Занятие 4.'''  Семантика перемещения, std::move, перемещающие конструкторы и операторы перемещения, типы ссылок.
 
 
'''[[Media: Lection_pbscpp_4.pdf|Занятие 5]].'''  Универсальные ссылки, прямая передача, свертка ссылок, return value optimization, проблемы перегрузки.
 
 
'''[[Media: Lection_pbscpp_6.pdf|Занятие 6]].'''  Операторы new, delete и аллокаторы. Умные указатели. std::unique_ptr.
 
 
'''[[Media: Lection_pbscpp_7.pdf|Занятие 7]].'''  Указатели std::shared_ptr, std::weak_ptr, особенности использования make_shared.
 
 
'''[[Media: Lection_pbscpp_8.pdf|Занятие 8]].'''  Идиомы CRTP, PIMPL. Примеры паттернов проектирования: Bridge, Command.
 
 
'''[[Media: Lection_pbscpp_9.pdf|Занятие 9]].'''  Паттерны Singleton, Strategy, Decorator, Observer.
 
 
'''[[Media: Lection_pbscpp_10.pdf|Занятие 10]].'''  Создание объектов с помощью фабрик. Паттерн Visitor. Шаблонное метапрограммирование, std::enable_if, решение проблемы перегрузки и универсальных ссылок.
 
 
'''[[Media: Lection_pbscpp_11.pdf|Занятие 11]].'''  Метапрограммирование с шаблонами и X-macro. Идиома Type Erasure.
 
 
'''[[Media: Lection_pbscpp_12.pdf|Занятие 12]].'''  Обработка ошибок.
 
 
'''[[Media: Lection_pbscpp_13.pdf|Занятие 13]].'''  Введение в многопоточность. Примитивы синхронизации.
 
 
'''[[Media: Lection_pbscpp_14.pdf|Занятие 14]].'''  Многопоточность. Некоторые особенности C++14 и C++17.
 
 
== Задачи ==
 
'''[[Media: Pbscpp_tasks.pdf|Условия задач]]'''
 
 
== Экзамен ==
 
Экзамен по курсу письменный. В работе 15 заданий, на выполнение отводится 90 минут. Максимальная сумма баллов – 30.
 
 
* Оценка отлично: не менее 24 баллов
 
* Оценка хорошо: не менее 18 и не более 23 баллов
 
* Оценка удовлетворительно: не менее 12 и не более 17 баллов
 
 
[[Media: Pbscpp_exam_example.pdf|Примерный вариант экзаменационной работы]].
 
  
 
== Программа курса ==
 
== Программа курса ==

Версия 23:38, 14 августа 2018

Курс по магистерской программе Дискретные управляющие системы и их приложения. Занятия проводит Коноводов В.А.

В курсе рассматриваются темы, востребованные в промышленном программировании на языке C++. Разбираются вопросы, связанные с обобщенным программированием, интеллектуальными указателями, исключениями, паттернами проектирования и др. Отдельно разбираются возможности современного языка С++, введенные в стандартах C++11/14: вывод типов, семантика перемещения, rvalue-ссылки, поддержка многопоточности, лямбда-выражения и др.

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


Программа курса

Программа курса (pdf) (осенний семестр 2017 года)


Литература

  • С. Мейерс, Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14, изд. Вильямс, М.: 2017 г.
  • Anthony Williams. C++ Concurrency in Action: Practical Multithreading.
  • А. Александреску, Современное проектирование на C++, изд. Вильямс, М.: 2017 г.
  • Э.Гамма, Р.Хелм, Р.Джонсон, Дж. Влиссидес, Приемы объектно-ориентированного проектирования.
  • Г. Саттер, А. Александреску, Стандарты программирования на С++. 101 правило и рекомендация.
  • Б. Страуструп, Язык программирования С++, 4-е издание.
  • Б. Страуструп, Программирование. Принципы и практика использования C++.
  • Б. Страуструп, Дизайн и эволюция языка С++.
  • D. Abrahams, A. Gurtovoy C++ Template Metaprogramming.