Содержание
422 гр., спец. СМ. С++
«Программирование для решения вероятностных задач»
Место и время проведения: четверг, первая пара, ауд. 3381
Преподаватель: Звонарев Никита
Программа для поиска экстремума функции
По большей части информация прошлых лет (но актуальная и сейчас).
Задание на семестр ← здесь дано старое задание в полном виде. Нас интересует п. 2.
Красивые примеры программ прошлых лет. Еще один
Комментарии к стилю программирования
Минимальные требования к программе с MFC
Примеры на combo-box и графику VS2010 Примеры на combo-box и графику VS2013
Список литературы с описанием методов поиска экстремумов
Добавляется очень хорошая книга Nocedal, Jorge, Wright, S. Numerical Optimization.
C++ advanced
Примерные темы
- Шаблоны.
- Исключения
- STL
- Современный стандарт
- Многопоточность
- Немного Qt?
- ???
Литература
Основная книга номер 3, английский вариант можно найти on-line на сайте автора.
- Бьерн Страуструп. Язык программирования
C++
. - Эккель Б. Философия
C++
. Введение в стандартныйC++
. - Эккель Б. Философия
C++
. Практическое программирование.
Занятия по C++ advanced
2019 год ([x] — x пар потрачено на тему)
- 26/09/2019 [1]. Множественное наследование. Виртуальный базовый класс. «Виртуальный конструктор».
- 03/10/2019 [1]. RTTI (
typeid
,dynamic_cast
), тот самый пример про UB. - 10/10/2019 [0.75]. Исключения: семантика, исключения в конструкторе, stack unwinding,
set_terminate
,noexcept
, стандартные исключения, «голые» и «одетые» указатели. - 17/10/2019 [1]. Move semantics, умные указатели, RAII.
- 24/10/2019 [1]. std::string. Введение в шаблоны, конкретизация шаблонов, специализация шаблонов.
- 31/10/2019 [1]. Паттерны с traits и policy, policy через SFINAE, type_traits. Метапрограммирование, вычисления на этапе компиляции через шаблоны/
constexpr
(C++ 11 и C++ 14). - 07/11/2019 [0.75]. Решение задач метапрограммирования на С++≤11.
- 14/11/2019 [1]. STL: общая структура, обзор контейнеров с трудоемкостью операций, иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки.
- 21/11/2019 [1]. Итераторы для потоков ввода-вывода. Алгоритм copy и умение его написать. Общая структура алгоритмов STL.
- 28/11/2019 [1]. Немного про Qt. Лямбды, лямбды как замыкания, встроенные функторы и std::function.
- 05/12/2019 [0]. Сдача заданий + анонс домашки про словарь.
- 12/12/2019 [0.75]. Алгоритмы работы с перестановками, поиска, сортировки, бин. поиска, и т.п. Сдача заданий.
Самостоятельное изучение:
- 21/11/2019. Форматирование в C++. Потоковый ввод-вывод: создание своих манипуляторов, fstream (режимы открытия, ошибочные состояния, getline, get, копирование файлов: посимвольное, построковое, поблочное, через streambuf и rdbuf()), stringstream. обещанные материалы к лекции.
Материалы в виде архивов к занятиям в прошлые годы (+прошлогодняя программа)
2018 год ([x] — x пар потрачено на тему)
- 27/09/2018 [1]. Множественное наследование. Виртуальный базовый класс. «Виртуальный конструктор».
- 04/10/2018 [0.5]. RTTI (
typeid
,dynamic_cast
). - 11/10/2018 [1]. Исключения: семантика, исключения в конструкторе, stack unwinding,
set_terminate
,noexcept
, стандартные исключения. - 18/10/2018 [1]. «Голые» и «одетые» указатели, умные указатели, RAII, Move semantics.
- 25/10/2018 [1]. Конкретизация шаблонов, специализация шаблонов. Метапрограммирование, вычисления на этапе компиляции через шаблоны/
constexpr
(C++ 11 и C++ 14). - 01/11/2018 [1]. Решение задач метапрограммирования на ≤11 версии.
- 08/11/2018 [1]. Паттерны с traits и policy, policy через SFINAE, type_traits. Форматирование в C++. Потоковый ввод-вывод: создание своих манипуляторов, fstream (режимы открытия, ошибочные состояния, getline, get, копирование файлов: посимвольное, построковое, поблочное, через streambuf и rdbuf()), stringstream. обещанные материалы к лекции.
- 15/11/2018 [1]. STL: общая структура, обзор контейнеров с трудоемкостью операций, иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки, итераторы для потоков ввода-вывода. Алгоритм
copy
и умение его написать. - 22/11/2018 [1]. Общая структура алгоритмов STL. Лямбды, лямбды как замыкания, встроенные функторы и std::function. Алгоритмы для работы с числовыми последовательностями, упорядоченными множествами.
- 29/11/2018 [0.25]. Алгоритмы работы с перестановками, поиска, сортировки, бин. поиска, и т.п. Задание про словарь.
- 06/12/2017 [1]. Многопоточность в C++11:
thread
(join()
,detach()
),mutex
(unique_lock
,lock_guard
),std::lock
,std::async
,std::future
,std::packaged_task
,std::promise
,std::condition_variable
+for
по контейнеру.
2017:
- 22/09/2017 (две пары). Множественное наследование. Виртуальный базовый класс. RTTI (
typeid
,dynamic_cast
). «Виртуальный конструктор». - 29/09/2017 (одна пара). Исключения: семантика, исключения в конструкторе, stack unwinding,
set_terminate
,noexcept
, «голые» и «одетые» указатели. - 06/10/2017 (две пары). Умные указатели, стандартные исключения, RAII. Move semantics. Введение в шаблоны.
- 13/10/2017 (одна пара). Конкретизация шаблонов, специализация шаблонов,
typename
внутри шаблона, template template parameter. - 20/10/2017 (две пары). Паттерны с traits и policy, policy через SFINAE,
type_traits
. Метапрограммирование, вычисления на этапе компиляции через шаблоны/constexpr
(C++ 11 и C++ 14). Решение задач метапрограммирования на ≤11 версии. - 27/10/2017 (одна пара). Форматирование в C++. Потоковый ввод-вывод: создание своих манипуляторов,
fstream
(режимы открытия, ошибочные состояния,getline
,get
, копирование файлов: посимвольное, построковое, поблочное, черезstreambuf
иrdbuf()
),stringstream
. - 03/11/2017 (одна пара+). Немного про Qt. STL: общая структура, обзор контейнеров с трудоемкостью операций, иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки, итераторы для потоков ввода-вывода. Алгоритм
copy
. - 10/11/2017 (1.5 пары). Общая структура алгоритмов STL. Умение написать свой
copy
. Лямбды, лямбды как замыкания. Алгоритмы для работы с числовыми последовательностями, упорядоченными множествами, перестановками. Общее представление о коде адапторов, примеры работы с (multi)set
, (multi)map
. Задание про словарь. - 17/11/2017 (1 пара). Алгоритмы поиска, сортировки, бин. поиска, и т.п. Контейнеры:
bitset
,valarray
. Заголовочные файлы<limits>
,<complex>
. - 24/11/2017 (1 пара). Многопоточность в C++11:
thread
(join()
,detach()
),mutex
(unique_lock
,lock_guard
),std::lock
,std::async
,std::future
,std::packaged_task
,std::promise
,std::condition_variable
+for
по контейнеру
Совсем старые годы (материалы от НЭ):
- (08/09/2010). Множественное наследование. Виртуальный базовый класс. «Виртуальные конструкторы».
- (16/09/2009). RTTI (typeid, dynamic_cast), вспомнили static_cast, const_cast, reinterpret_cast. Вспомнили assert. Исключения - начало.
- (23/09/2009). Исключения (как выбрасывать, как ловить), исключения в конструкторах, «голые» указатели, set_unexpected, set_terminate, auto_ptr.
- (25/09/2013). cleanup, «голые» указатели, auto_ptr, unique_ptr, shared_ptr, weak_ptr.
- (30/09/2009). Окончание темы про исключения («одетые» указатели, стандартные классы исключений). Строки (string). Шаблоны - начало.
- (07/10/2009). Шаблоны: компиляция программы с шаблонами (зависимые имена, инстанцирование (конкретизация) шаблона), параметр шаблона для задания области видимости, использование typename внутри шаблона, шаблон в качестве параметра шаблона, специализация шаблонов.
- (14/10/2009 09/10/201316/10/2013). Шаблоны: специализация шаблонов, паттерны с traits (идея с использованием typedef для задания разным типам одинаковых псевдонимов) и policy, псевдорекурсия при наследовании от шаблонного класса без типо-зависимых элементов, метапрограммирование на этапе компиляции, функции-друзья шаблонные/нешаблонные.
- (21/10/2009). Немного о vector из STL: size, capacity, reserve и пр. Потоковый ввод-вывод: общее устройство, флаги форматирования, форматированный вывод, манипуляторы.
- (28/10/2009). Потоковый ввод-вывод: создание своих манипуляторов, fstream (режимы открытия, ошибочные состояния, getline, get, копирование файлов: посимвольное, построковое, поблочное, через streambuf и rdbuf()), stringstream (в частности, разбор строки на слова). Домашнее задание - разбор файл с табличными данными.
- (11/11/2009 13/11/2013). STL: общая структура, обзор контейнеров с трудоемкостью операций, иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки, итераторы для потоков ввода-вывода. Общая структура алгоритмов STL (умение самостоятельно написать реализацию алгоритма на примере copy и transform).
- (18/11/2009). STL: продолжение про алгоритмы на примере replace, replace_if, replace_copy, replace_copy_if. Также - алгоритм типа remove (принцип неудаления элементов после remove, разница между last и end). Функциональные объекты, стандартные функц.объекты из <functional>. Суммирование элементов контейнера с помощью for_each. Алгоритмы работы с числовыми последовательностями (accumulate, inner_product, partial_sum), алгоритмы для работы с множествами (объединение, пересечение и пр.)
- (25/11/2009 20/11/2013). STL: адаптеры стек, очередь, очередь с приоритетами; ассоциативные контейнеры set, multiset, map, multimap. Алгоритмы перестановки, поиска, сортировки и пр.: из книги Эккеля manipulations.cpp, SearchReplace.cpp, Nstring.h
- (02/12/2009). STL: Алгоритмы сравнения, бин.поиска, сортировки, удаления и пр. Контейнеры bitset, valarray. Разное: limits, complex.
Результаты посещения занятий
26.09 | 03.10 | 10.10 | 17.10 | 24.10 | 31.10 | 07.11 | 14.11 | 21.11 | 28.11 | 05.12 | 12.12 | 19.12 (???) | 26.12 (???) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1. Горшечникова Влада | + | + | + | + | + | + | + | + | + | + | + | + | ||
2. Магдич Лиза | + | + | + | + | + | + | + | + | + | + | + | |||
3. Абильдаев Темирлан | + | + | + | + | + | + | + | + | + | |||||
4. Капаца Дейвид | + | + | + | + | + | + | + | + | + | + | + | |||
5. Полшков Виталий | + | + | ||||||||||||
6. Барсуков Егор | + | |||||||||||||
7. Заляев Тимур |
Результаты сдачи заданий и домашек
Варианты задания:
- Coordinate descent
- Gradient descent
- Fletcher-Reeves CG
- Polak-Ribiere CG
- Newton's method (using one-dimensional optimization)
- Newton's method (using backtracking)
- Nelder-Mead method
Вариант | Консольная опт. 1 (10 окт.) | Консольная опт. 2 (7 ноя.) | Графическая опт. | Домашка (I/O) | Домашка (словарь) | Зачёт | |
---|---|---|---|---|---|---|---|
Горшечникова Влада | 3 | + | + | +* | + | + | +* |
Магдич Лиза | 1 | + | + | + | + | + | +* |
Абильдаев Темирлан | 4 | + | + | + | + | + | +* |
Капаца Дейвид | 2 | + | + | + | + | + | +* |
Полшков Виталий | 7 | + | + | + | + | + | + |
Барсуков Егор | 5 | + | + | + | + | + | + |
Заляев Тимур | 6 |