422 гр., спец. СМ. С++

«Программирование для решения вероятностных задач»
Место и время проведения: четверг, третья пара, ауд. 3381 (начиная с 19 ноября – четверг, Скайп, 13:00)
Преподаватель: Звонарев Никита

Критерий получения зачёта

  1. «Большая» программа (оптимизация функций), в графическом и консольном исполнении
  2. Плюсики за все домашки
  3. Плюсики за посещения пар (сданный тест/вопрос за пропуск)

Оптимизация функции

Слайды с 1 пары

Слайды со 2 пары

Слайды с 3 пары

Список литературы с описанием методов поиска экстремумов

Добавляется очень хорошая книга Nocedal, Jorge, Wright, S. Numerical Optimization.

Программа для поиска экстремума функции

Задание на семестр ← здесь дано старое задание в полном виде. Нас интересует п. 2.

Красивые примеры программ прошлых лет. Еще один

Комментарии к стилю программирования

Минимальные требования к программе с MFC

Примеры на combo-box и графику VS2010 Примеры на combo-box и графику VS2013

C++ advanced

Примерные темы

  • Шаблоны.
  • Исключения
  • STL
  • Современный стандарт
  • Многопоточность
  • Немного Qt?
  • ???

Литература

Основная книга номер 3, английский вариант можно найти on-line на сайте автора.

  1. Бьерн Страуструп. Язык программирования C++.
  2. Эккель Б. Философия C++. Введение в стандартный C++.
  3. Эккель Б. Философия C++. Практическое программирование.

Занятия по C++ advanced

2020 год ([x] — x пар потрачено на тему)

  1. 24/09/2020 [1]. Множественное наследование. Виртуальный базовый класс. «Виртуальный конструктор». Слайды
  2. 01/10/2020 [1]. RTTI (typeid, dynamic_cast), приведение типов в стиле C++. Слайды
  3. 08/10/2020 [2]. Исключения: семантика, исключения в конструкторе, stack unwinding, set_terminate, noexcept, стандартные исключения, «голые» и «одетые» указатели. Умные указатели, RAII. Слайды RAII
  4. 15/10/2020 [0.75]. Введение в шаблоны, конкретизация шаблонов, специализация шаблонов.
  5. 22/10/2020 [1]. Паттерны с traits и policy, policy через SFINAE, type_traits. Метапрограммирование, вычисления на этапе компиляции через шаблоны/constexpr (C++ 11 и C++ 14).
  6. 29/10/2020 [1]. Решение задач метапрограммирования на С++≤11.
  7. 05/11/2020 [1]. I/O в C++. Манипуляторы, режимы открытия, stringstream. STL: общая структура, обзор контейнеров с трудоемкостью операций (без итераторов). Материалы к лекции .
  8. 12/11/2020 [1.5]. Иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки. Итераторы для потоков ввода-вывода. Алгоритм copy и умение его написать. Общая структура алгоритмов STL. Встроенные функторы, std::bind. Примеры на алгоритмы Примеры на функциональные объекты
  9. 19/11/2020 [1]. Немного про Qt. Лямбды, лямбды как замыкания. Примеры на set, map, анонс задания про словарь. Материалы лекции
  10. 26/11/2020 [1]. Misc: bitset, valarray, complex, numeric_limits.

Материалы в виде архивов к занятиям в прошлые годы (+прошлогодняя программа)

2019 год ([x] — x пар потрачено на тему)

  1. 26/09/2019 [1]. Множественное наследование. Виртуальный базовый класс. «Виртуальный конструктор».
  2. 03/10/2019 [1]. RTTI (typeid, dynamic_cast), тот самый пример про UB.
  3. 10/10/2019 [0.75]. Исключения: семантика, исключения в конструкторе, stack unwinding, set_terminate, noexcept, стандартные исключения, «голые» и «одетые» указатели.
  4. 17/10/2019 [1]. Move semantics, умные указатели, RAII.
  5. 24/10/2019 [1]. std::string. Введение в шаблоны, конкретизация шаблонов, специализация шаблонов.
  6. 31/10/2019 [1]. Паттерны с traits и policy, policy через SFINAE, type_traits. Метапрограммирование, вычисления на этапе компиляции через шаблоны/constexpr (C++ 11 и C++ 14).
  7. 07/11/2019 [0.75]. Решение задач метапрограммирования на С++≤11.
  8. 14/11/2019 [1]. STL: общая структура, обзор контейнеров с трудоемкостью операций, иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки.
  9. 21/11/2019 [1]. Итераторы для потоков ввода-вывода. Алгоритм copy и умение его написать. Общая структура алгоритмов STL.
  10. 28/11/2019 [1]. Немного про Qt. Лямбды, лямбды как замыкания, встроенные функторы и std::function.
  11. 05/12/2019 [0]. Сдача заданий + анонс домашки про словарь.
  12. 12/12/2019 [0.75]. Алгоритмы работы с перестановками, поиска, сортировки, бин. поиска, и т.п. Сдача заданий.

Самостоятельное изучение:

  1. 21/11/2019. Форматирование в C++. Потоковый ввод-вывод: создание своих манипуляторов, fstream (режимы открытия, ошибочные состояния, getline, get, копирование файлов: посимвольное, построковое, поблочное, через streambuf и rdbuf()), stringstream. обещанные материалы к лекции.

2018 год ([x] — x пар потрачено на тему)

  1. 27/09/2018 [1]. Множественное наследование. Виртуальный базовый класс. «Виртуальный конструктор».
  2. 04/10/2018 [0.5]. RTTI (typeid, dynamic_cast).
  3. 11/10/2018 [1]. Исключения: семантика, исключения в конструкторе, stack unwinding, set_terminate, noexcept, стандартные исключения.
  4. 18/10/2018 [1]. «Голые» и «одетые» указатели, умные указатели, RAII, Move semantics.
  5. 25/10/2018 [1]. Конкретизация шаблонов, специализация шаблонов. Метапрограммирование, вычисления на этапе компиляции через шаблоны/constexpr (C++ 11 и C++ 14).
  6. 01/11/2018 [1]. Решение задач метапрограммирования на ≤11 версии.
  7. 08/11/2018 [1]. Паттерны с traits и policy, policy через SFINAE, type_traits. Форматирование в C++. Потоковый ввод-вывод: создание своих манипуляторов, fstream (режимы открытия, ошибочные состояния, getline, get, копирование файлов: посимвольное, построковое, поблочное, через streambuf и rdbuf()), stringstream. обещанные материалы к лекции.
  8. 15/11/2018 [1]. STL: общая структура, обзор контейнеров с трудоемкостью операций, иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки, итераторы для потоков ввода-вывода. Алгоритм copy и умение его написать.
  9. 22/11/2018 [1]. Общая структура алгоритмов STL. Лямбды, лямбды как замыкания, встроенные функторы и std::function. Алгоритмы для работы с числовыми последовательностями, упорядоченными множествами.
  10. 29/11/2018 [0.25]. Алгоритмы работы с перестановками, поиска, сортировки, бин. поиска, и т.п. Задание про словарь.
  11. 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 по контейнеру.

Совсем старые годы (материалы от НЭ):

  1. (08/09/2010). Множественное наследование. Виртуальный базовый класс. «Виртуальные конструкторы».
  2. (16/09/2009). RTTI (typeid, dynamic_cast), вспомнили static_cast, const_cast, reinterpret_cast. Вспомнили assert. Исключения - начало.
  3. (23/09/2009). Исключения (как выбрасывать, как ловить), исключения в конструкторах, «голые» указатели, set_unexpected, set_terminate, auto_ptr.
  4. (25/09/2013). cleanup, «голые» указатели, auto_ptr, unique_ptr, shared_ptr, weak_ptr.
  5. (30/09/2009). Окончание темы про исключения («одетые» указатели, стандартные классы исключений). Строки (string). Шаблоны - начало.
  6. (07/10/2009). Шаблоны: компиляция программы с шаблонами (зависимые имена, инстанцирование (конкретизация) шаблона), параметр шаблона для задания области видимости, использование typename внутри шаблона, шаблон в качестве параметра шаблона, специализация шаблонов.
  7. (14/10/2009 09/10/201316/10/2013). Шаблоны: специализация шаблонов, паттерны с traits (идея с использованием typedef для задания разным типам одинаковых псевдонимов) и policy, псевдорекурсия при наследовании от шаблонного класса без типо-зависимых элементов, метапрограммирование на этапе компиляции, функции-друзья шаблонные/нешаблонные.
  8. (21/10/2009). Немного о vector из STL: size, capacity, reserve и пр. Потоковый ввод-вывод: общее устройство, флаги форматирования, форматированный вывод, манипуляторы.
  9. (28/10/2009). Потоковый ввод-вывод: создание своих манипуляторов, fstream (режимы открытия, ошибочные состояния, getline, get, копирование файлов: посимвольное, построковое, поблочное, через streambuf и rdbuf()), stringstream (в частности, разбор строки на слова). Домашнее задание - разбор файл с табличными данными.
  10. (11/11/2009 13/11/2013). STL: общая структура, обзор контейнеров с трудоемкостью операций, иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки, итераторы для потоков ввода-вывода. Общая структура алгоритмов STL (умение самостоятельно написать реализацию алгоритма на примере copy и transform).
  11. (18/11/2009). STL: продолжение про алгоритмы на примере replace, replace_if, replace_copy, replace_copy_if. Также - алгоритм типа remove (принцип неудаления элементов после remove, разница между last и end). Функциональные объекты, стандартные функц.объекты из <functional>. Суммирование элементов контейнера с помощью for_each. Алгоритмы работы с числовыми последовательностями (accumulate, inner_product, partial_sum), алгоритмы для работы с множествами (объединение, пересечение и пр.)
  12. (25/11/2009 20/11/2013). STL: адаптеры стек, очередь, очередь с приоритетами; ассоциативные контейнеры set, multiset, map, multimap. Алгоритмы перестановки, поиска, сортировки и пр.: из книги Эккеля manipulations.cpp, SearchReplace.cpp, Nstring.h
  13. (02/12/2009). STL: Алгоритмы сравнения, бин.поиска, сортировки, удаления и пр. Контейнеры bitset, valarray. Разное: limits, complex.

Результаты посещения занятий

24.09 01.10 08.10 15.10 22.10 29.10 05.11 12.11 19.11 26.11 03.12 10.12 17.12 (???)
1. Шаповал Егор + + + + + + + + + +
2. Чемокос Олег + + + + + + + + + +
3. Белкова Анна + + + + + + + + + +
4. Тихонов Игорь - - - - - - - - - -
5. Попов Владимир + + + + + + + + + +
6. Конищева Злата + + + - + - + + + +
7. Лобанова Полина + + + + + + + + + +
8. Шешуков Илья + + + + + + + + + +
9. Глушков Игорь + + + - + - + + - -
10. Сурушкин Иван + + + - - - - - - -

Результаты сдачи заданий и домашек

Варианты задания:

  1. Покоординатный спуск
  2. Градиентный спуск (производные аналитически)
  3. Градиентный спуск (производные численно)
  4. Сопряженные градиенты Fletcher-Reeves
  5. Сопряженные градиенты Polak-Ribiere
  6. Ньютон (поиск по направлению, производные аналитически)
  7. Ньютон (поиск по направлению, производные численно)
  8. Ньютон (backtracking, производные аналитически)
  9. Ньютон (backtracking, производные численно)
  10. Nelder-Mead (метод деформируемого многогранника)
Вариант Консольная опт. 1 (15 окт.) Консольная опт. 2 (12 ноя.) Графическая опт. Домашка (I/O) (19 ноя.) Домашка (словарь) Зачёт
1. Шаповал Егор 4 + + + + + +
2. Чемокос Олег 2 + + + + + +
3. Белкова Анна 3 +. +.
4. Тихонов Игорь 6
5. Попов Владимир 1 + + + + + +
6. Конищева Злата 8
7. Лобанова Полина 9 +. +.
8. Шешуков Илья 10 + + + + + +
9. Глушков Игорь 7
10. Сурушкин Иван 5
study/fall2020/4cpp_pract.txt · Последнее изменение: 2021/03/15 14:35 — nikita
Наверх
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0