Алгоритмы и структуры данных 5SE 2018-2019 — различия между версиями

Материал из CSC Wiki
Перейти к:навигация, поиск
(Первая версия программы)
(Осень)
 
(не показано 37 промежуточных версий 4 участников)
Строка 2: Строка 2:
 
Преподаватель: Смаль Александр Владимирович
 
Преподаватель: Смаль Александр Владимирович
  
===== Первая версия программы =====
+
=== Рабочая программа ===
  
 +
==== Осень ====
 
* '''4 сентября.''' Введение. Алгоритм. Память и время как ресурсы. Вычисление чисел Фибоначчи: экспоненциальный рекурсивный алгоритм, полиномиальный алгоритм, более детальный анализ. 𝑃-символика как инструмент оценки ресурсов, различные асимптотики (логарифм, полином, экспонента).
 
* '''4 сентября.''' Введение. Алгоритм. Память и время как ресурсы. Вычисление чисел Фибоначчи: экспоненциальный рекурсивный алгоритм, полиномиальный алгоритм, более детальный анализ. 𝑃-символика как инструмент оценки ресурсов, различные асимптотики (логарифм, полином, экспонента).
  
Строка 12: Строка 13:
 
* '''24 сентября 13:40.''' Алгоритмы сортировки.  Квадратичные сортировки. Сортировка с помощью кучи: очередь с приоритетами, построение кучи за линейное время, частичная сортировка. Сортировка подсчётом, стабильность. Цифровая сортировка. Bucket sort для равномерно распределённых вещественных чисел.
 
* '''24 сентября 13:40.''' Алгоритмы сортировки.  Квадратичные сортировки. Сортировка с помощью кучи: очередь с приоритетами, построение кучи за линейное время, частичная сортировка. Сортировка подсчётом, стабильность. Цифровая сортировка. Bucket sort для равномерно распределённых вещественных чисел.
  
* '''25 сентября.''' Быстрая сортировка: анализ среднего времени работы, анализ средней глубины рекурсии, элиминация хвостовой рекурсии, IntroSort, массивы с малым количеством различных элементов, QuickSort3. Порядковые статистики. Порядковые статистики, нахождение за линейное в среднем время. Медиана медиан.
+
* '''25 сентября.''' Быстрая сортировка: понятие вероятностного алгоритма, время работы в среднем, анализ средней глубины рекурсии, элиминация хвостовой рекурсии, IntroSort.  
  
* '''1 октября 13:40.''' Динамическое программирование. Общие принципы динамического программирования, часто используемые подзадачи. Кратчайшие пути в ациклических ориентированных графах. Наибольшая возрастающая подпоследовательность: подзадачи, порядок на подзадачах, граф подзадач, сравнение с рекурсивным алгоритмом; нахождение не только длины, но и самой подпоследовательности.
+
* '''1 октября 13:40.''' Быстрая сортировка: анализ среднего времени работы, массивы с малым количеством различных элементов, QuickSort3. Порядковые статистики. Порядковые статистики, нахождение за линейное в среднем время. ''Медиана медиан''.
  
* '''2 октября.''' Динамическое программирование (продолжение). Редакционное расстояние: граф на подзадачах, нахождение кратчайшего пути в данном графе; нахождение оптимального выравнивания с использованием линейной памяти.  
+
* '''2 октября.''' Динамическое программирование. Общие принципы динамического программирования. Кратчайшие пути в ациклических ориентированных графах. Наибольшая возрастающая подпоследовательность: подзадачи, порядок на подзадачах, граф подзадач, сравнение с рекурсивным алгоритмом; нахождение не только длины, но и самой подпоследовательности. Дискретная задача о рюкзаке.  
  
*  '''23 октября.''' Жадные алгоритмы. Задача о выборе заявок. Коды Хаффмена. Хорновские формулы. Задача о покрытии множествами. Минимальное покрывающее дерево: свойство разреза, жадная стратегия, алгоритм Прима, алгоритм Краскала.
+
*  '''30 октября.''' Динамическое программирование (продолжение). Умножение матриц. Независимые множества максимального веса в деревьях. Редакционное расстояние: граф на подзадачах, нахождение кратчайшего пути в данном графе; нахождение оптимального выравнивания с использованием линейной памяти.  
  
* '''30 октября.''' Система непересекающихся множеств. Представление множеств с помощью деревьев, эвристика сжатия путей, верхняя оценка <math>O(m \log^* n)</math> на время работы m операций. Анализ учётных стоимостей операций: метод ростовщика.
+
* '''6 ноября.''' Жадные алгоритмы. Покрытие точек единичными отрезками. Непрерывный рюкзак. Задача о выборе заявок. Максимальные независимые множества в деревьях. Хорновские формулы. Код Хаффмена.  
  
* '''6 ноября.''' Способы хранения графов: матрица смежности, списки смежности, матрица инцидентности. Поиск в глубину. Графы и способы их представления, способы использования графов. Поиск в глубину в неориентированных графах, выделение компонент связности. Поиск в глубину в ориентированных графах: ориентированные ациклические графы, топологическая сортировка вершин, наличие стока и истока в ациклическом графе, выделение компонент сильной связности. Мосты и точки сочленения (на практике).
+
* '''13 ноября.''' Задача о покрытии множествами. Минимальное покрывающее дерево: свойство разреза, жадная стратегия, алгоритм Прима, алгоритм Краскала.
  
* '''13 ноября''' Кратчайшие пути в графах. Нахождение кратчайших путей из одной вершины в невзвешенных графах, поиск в ширину. Нахождение кратчайших путей из одной вершины в графах с положительными весами, алгоритм Дейкстры, оценка времени работы при различных реализациях очереди с приоритетами (массивом, двоичной кучей, d-ичной кучей). Нахождение кратчайших путей из одной вершины в графах, в которых есть рёбра отрицательного веса, алгоритм Беллмана-Форда, проверка наличия цикла отрицательного веса. Кратчайшие пути в ациклических ориентированных графах. Кратчайшие пути между всеми парами вершин: алгоритм Флойда-Уоршолла, алгоритм Джонсона.
+
* '''20 ноября.''' Система непересекающихся множеств. Представление множеств с помощью деревьев, эвристика сжатия путей, верхняя оценка <math>O(m \log^* n)</math> на время работы m операций. Анализ учётных стоимостей операций: метод ростовщика.
  
* '''20 ноября.''' Деревья поиска. Корневое дерево: бинарное дерево, дерево с произвольным ветвлением, представление ”левый ребёнок — правый сосед“. Дерево поиска: поиск, вставка, удаление, поиск следующего и предыдущего элемента за время, пропорциональное высоте. АВЛ-дерево: верхняя оценка <math>O(\log n)</math> на высоту, сохранение свойства при помощи малых и больших вращений.
+
* '''27 ноября''' Способы хранения графов: матрица смежности, списки смежности, матрица инцидентности. Поиск в глубину. Графы и способы их представления, способы использования графов. Поиск в глубину в неориентированных графах, выделение компонент связности. Поиск в глубину в ориентированных графах: ориентированные ациклические графы, топологическая сортировка вершин. Мосты и точки сочленения (на практике).
  
* '''27 ноября.''' Splay-дерево. Splay-дерево: дерево, которое остаётся сбалансированным в среднем и при этом не хранит никакой дополнительной информации в вершинах; реализация основных операций через операцию splay; верхняя оценка <math>O(\log n)</math> на среднюю стоимость операций.
+
* '''4 декабря.''' Выделение компонент сильной связности в орграфах. Кратчайшие пути в графах. Нахождение кратчайших путей из одной вершины в невзвешенных графах, поиск в ширину.  
  
* '''4 декабря.''' Декартово дерево. Декартово дерево: построение декартова дерева за линейное время (при предварительно отсортированных ключах), реализация операций вставки и удаления через split и merge. Дуча: верхняя оценка <math>O(\log n)</math> на мат. ожидание глубины. Использование неявного ключа, rope.
+
* '''11 декабря.''' Нахождение кратчайших путей из одной вершины в графах с положительными весами, алгоритм Дейкстры, оценка времени работы при различных реализациях очереди с приоритетами (массивом, двоичной кучей, d-ичной кучей).  
  
* '''11 декабря.''' Задачи RMQ и LCA. Дерево отрезков, двоичный подъём. Динамическая задача RMQ/RSQ: оценка <math>O(\log n)</math> для запросов суммы/минимума и изменения элемента. Статический вариант задачи RMQ: полное предвычисление (<math>O(n^2)</math> на предобработку, <math>O(1)</math> на запрос), метод разреженной таблицы (<math>O(n \log n)</math> на предобработку, <math>O(1)</math> на запрос). Задача LCA: эйлеров обход дерева, сведение к задаче RMQ. Сведение задачи RMQ к задаче LCA через декартово дерево.
+
* '''18 декабря.''' Нахождение кратчайших путей из одной вершины в графах, в которых есть рёбра отрицательного веса, алгоритм Беллмана-Форда, проверка наличия цикла отрицательного веса. Кратчайшие пути в ациклических ориентированных графах. Кратчайшие пути между всеми парами вершин: алгоритм Флойда-Уоршолла.
  
* '''18 декабря''' запасная лекция
+
==== Весна ====
 +
* '''5 февраля.''' Деревья поиска. Корневое дерево: бинарное дерево, дерево с произвольным ветвлением, представление "левый ребёнок — правый сосед". Дерево поиска: поиск, вставка, удаление, поиск следующего и предыдущего элемента за время, пропорциональное высоте. АВЛ-дерево: верхняя оценка <math>O(\log n)</math> на высоту, сохранение свойства при помощи малых и больших вращений.
 +
 
 +
* '''12 февраля.''' Splay-дерево. Splay-дерево: дерево, которое остаётся сбалансированным в среднем и при этом не хранит никакой дополнительной информации в вершинах; реализация основных операций через операцию splay; верхняя оценка <math>O(\log n)</math> на среднюю стоимость операций.
 +
 
 +
* '''19 февраля.''' Декартово дерево. Декартово дерево: построение декартова дерева за линейное время (при предварительно отсортированных ключах), реализация операций вставки и удаления через split и merge. Дуча: верхняя оценка <math>O(\log n)</math> на мат. ожидание глубины. Использование неявного ключа, rope.
 +
 
 +
* '''26 февраля.''' Задачи RMQ и LCA. Динамическая задача RMQ/RSQ: оценка <math>O(\log n)</math> для запросов суммы/минимума и изменения элемента. Дерево отрезков. Статический вариант задачи RMQ: полное предвычисление (<math>O(n^2)</math> на предобработку, <math>O(1)</math> на запрос), метод разреженной таблицы (<math>O(n \log n)</math> на предобработку, <math>O(1)</math> на запрос). Задача LCA: эйлеров обход дерева, сведение к задаче RMQ.
 +
 
 +
* '''5 марта, первая пара'''. Хеширование. Прямая адресация. Коллизии. Разрешение коллизий методом цепочек, методом последовательных проб и методом двойного хеширования. Гипотеза равномерного хеширования. Оценка времени поиска в хеш-таблице при использовании метода цепочек для гипотезы равномерного хеширования.
 +
 
 +
* '''5 марта, вторая пара'''. Универсальные семейства хеш-функций. Построение универсального семейства для целочисленных ключей. Оценка времени поиска в хеш-таблице при использовании метода цепочек для универсального семейства. Совершенное хеширование с помощью универсального семейства хеш-функций.
 +
       
 +
* '''12 марта, первая пара'''. Числовые алгоритмы. Cложение, умножение, деление длинных чисел. Арифметика по модулю: сложение, умножение, возведение в степень, алгоритм Евклида, расширенный алгоритм Евклида, деление. Проверка чисел на простоту. Генерация случайных простых чисел. Криптография: схемы с закрытым ключом, RSA.
 +
       
 +
* '''12 марта, вторая пара'''. Быстрое преобразование Фурье. Быстрое вычисление значений многочлена в точках: два способа задания многочленов — коэффициентами и значениями в точках; вычисление значений многочлена в точках методом "разделяй и властвуй"; дискретное преобразование Фурье; быстрое преобразование Фурье. Интерполяция: интерполяция в терминах матриц; матрица Вандермонда; интерполяция как домножение на обратную матрицу.
 +
 
 +
* '''13 марта'''. Задача о максимальном потоке. Теорема о минимальном разрезе и максимальном потоке. Алгоритм Форда-Фалкерсона. Задача о паросочетании в двудольном графе.
 +
 
 +
* '''16 апреля'''. Задача линейного программирования и симплекс-метод. Линейное программирование: общий вид задачи, матричная форма и сведение между различными представлениями.
 +
 
 +
* '''23 апреля'''. Линейное программирование: двойственность. Тотальная унимодулярность: определение и почему это гарантирует целочисленность решения.
 +
 
 +
* '''30 апреля'''.  Поиск подстроки в строке. Наивный алгоритм. Алгоритм Рабина-Капра. z-функция, префикс функция, алгоритм Кнута-Морриса-Пратта.
 +
 
 +
* '''7 мая'''. Алгоритм Ахо-Корасик. Суффиксное дерево: определение, поиск подстроки.
 +
 
 +
* '''14 мая'''. Суффиксный массив: определение, поиск подстроки. Построение за <math>O(n\log(n))</math>.
 +
   
 +
* '''21 мая'''. NP-полные задачи. Определение классов P и NP. NP-полнота задачи выполнимости булевой схемы. Сведение CircuitSAT к SAT. Сведение SAT к 3SAT. Сведение 3SAT к IndependentSet. Сведение IndependentSet к VertexCover и Clique. 
 +
 
 +
* '''28 мая'''. Приближенные алгоритмы для NP-полных задач. 2-приближенный алгоритм для вершинного покрытия. 2-приближенный алгоритм для метрического коммивояжера. <math>\log(n)</math>-приближенный алгоритм для покрытия множествами.
  
 
=== Литература ===
 
=== Литература ===
Строка 45: Строка 77:
 
* [https://stepik.org/course/217/syllabus Алгоритмы: теория и практика. Методы]
 
* [https://stepik.org/course/217/syllabus Алгоритмы: теория и практика. Методы]
 
* [https://stepik.org/course/1547/syllabus Алгоритмы: теория и практика. Структуры данных]
 
* [https://stepik.org/course/1547/syllabus Алгоритмы: теория и практика. Структуры данных]
 +
* [https://www.coursera.org/specializations/data-structures-algorithms Data Structures and Algorithms Specialization on Coursera]
 +
* [https://www.coursera.org/learn/algorithmic-toolbox Algorithmic Toolbox — часть специализации из предыдущего пункта]
  
 
== Практика ==
 
== Практика ==
Строка 54: Строка 88:
 
Дедлайны по теоретическому ДЗ: до начала занятия для правок уже присланых ранее задач, и до начала суток, в которые будет занятие, для новых задач.
 
Дедлайны по теоретическому ДЗ: до начала занятия для правок уже присланых ранее задач, и до начала суток, в которые будет занятие, для новых задач.
  
[https://docs.google.com/spreadsheets/d/1-hWGNxIusML1FpimySMWOsm5Tx4nZ0mud7zBKYI2wbg/edit?usp=sharing Таблица с результатами]
+
[https://docs.google.com/spreadsheets/d/1-hWGNxIusML1FpimySMWOsm5Tx4nZ0mud7zBKYI2wbg/edit?usp=sharing Таблица с результатами, осень]
 +
 
 +
[https://docs.google.com/spreadsheets/d/10wRca5VA4kJPSkWi7Hn0XjykH1-uy7AS6fHN7Nfd0KA/edit?usp=sharing Таблица с результатами, весна]
  
 
<h3>Слабодкин</h3>
 
<h3>Слабодкин</h3>
  
Контакты: <code>slabodkin.m[at]gmail.com</code>
+
Контакты:  
 +
* <code>slabodkin.m[at]gmail.com</code>
 +
* Telegram: slabod
 +
 
 +
Дедлайны по теоретическому ДЗ:
 +
* мягкий дедлайн в воскресенье в 14:00, после него преподаватель один раз проверяет работу до пары
 +
* жёсткий дедлайн в 23:59 в день до занятия, после него работы не принимаются
 +
 
 +
[https://docs.google.com/spreadsheets/d/1DyDe45M2Iyq1WvUur6hkCV789pTNEXMIVE12Hojrv88/edit?usp=sharing Таблица с результатами, осень]
  
 +
[https://docs.google.com/spreadsheets/d/1YXrvGGnqyrCac6g_98zTM8W0CFd3sG0KvjecWyc0bS8/edit?usp=sharing Таблица с результатами, весна]
 
<h3>Смаль</h3>
 
<h3>Смаль</h3>
  
 
Контакты: <code>avsmal[at]gmail.com</code>
 
Контакты: <code>avsmal[at]gmail.com</code>

Текущая версия на 11:39, 5 декабря 2019

Лекции

Преподаватель: Смаль Александр Владимирович

Рабочая программа

Осень

  • 4 сентября. Введение. Алгоритм. Память и время как ресурсы. Вычисление чисел Фибоначчи: экспоненциальный рекурсивный алгоритм, полиномиальный алгоритм, более детальный анализ. 𝑃-символика как инструмент оценки ресурсов, различные асимптотики (логарифм, полином, экспонента).
  • 11 сентября. Элементарные структуры данных. Массивы переменного размера: аддитивная и мультипликативная схемы реаллокации. Односвязный список, двусвязный список. Абстрактные типы данных, интерфейс и реализация. Стек, очередь, дек; моделирование на основе массива. Моделирование очереди с помощью двух стеков. Анализ учётных стоимостей операций при помощи функция потенциала, истинные и учётные стоимости.
  • 18 сентября. Рекуррентные соотношения. Метод ”разделяй и властвуй“. Умножение n-битовых чисел: простой рекурсивный алгоритм, улучшенный рекурсивный алгоритм. Рекуррентные соотношения: основная теорема. Двоичный поиск. Сортировка слиянием: с рекурсией и без. Нижняя оценка для сортировки сравнениями.
  • 24 сентября 13:40. Алгоритмы сортировки. Квадратичные сортировки. Сортировка с помощью кучи: очередь с приоритетами, построение кучи за линейное время, частичная сортировка. Сортировка подсчётом, стабильность. Цифровая сортировка. Bucket sort для равномерно распределённых вещественных чисел.
  • 25 сентября. Быстрая сортировка: понятие вероятностного алгоритма, время работы в среднем, анализ средней глубины рекурсии, элиминация хвостовой рекурсии, IntroSort.
  • 1 октября 13:40. Быстрая сортировка: анализ среднего времени работы, массивы с малым количеством различных элементов, QuickSort3. Порядковые статистики. Порядковые статистики, нахождение за линейное в среднем время. Медиана медиан.
  • 2 октября. Динамическое программирование. Общие принципы динамического программирования. Кратчайшие пути в ациклических ориентированных графах. Наибольшая возрастающая подпоследовательность: подзадачи, порядок на подзадачах, граф подзадач, сравнение с рекурсивным алгоритмом; нахождение не только длины, но и самой подпоследовательности. Дискретная задача о рюкзаке.
  • 30 октября. Динамическое программирование (продолжение). Умножение матриц. Независимые множества максимального веса в деревьях. Редакционное расстояние: граф на подзадачах, нахождение кратчайшего пути в данном графе; нахождение оптимального выравнивания с использованием линейной памяти.
  • 6 ноября. Жадные алгоритмы. Покрытие точек единичными отрезками. Непрерывный рюкзак. Задача о выборе заявок. Максимальные независимые множества в деревьях. Хорновские формулы. Код Хаффмена.
  • 13 ноября. Задача о покрытии множествами. Минимальное покрывающее дерево: свойство разреза, жадная стратегия, алгоритм Прима, алгоритм Краскала.
  • 20 ноября. Система непересекающихся множеств. Представление множеств с помощью деревьев, эвристика сжатия путей, верхняя оценка на время работы m операций. Анализ учётных стоимостей операций: метод ростовщика.
  • 27 ноября Способы хранения графов: матрица смежности, списки смежности, матрица инцидентности. Поиск в глубину. Графы и способы их представления, способы использования графов. Поиск в глубину в неориентированных графах, выделение компонент связности. Поиск в глубину в ориентированных графах: ориентированные ациклические графы, топологическая сортировка вершин. Мосты и точки сочленения (на практике).
  • 4 декабря. Выделение компонент сильной связности в орграфах. Кратчайшие пути в графах. Нахождение кратчайших путей из одной вершины в невзвешенных графах, поиск в ширину.
  • 11 декабря. Нахождение кратчайших путей из одной вершины в графах с положительными весами, алгоритм Дейкстры, оценка времени работы при различных реализациях очереди с приоритетами (массивом, двоичной кучей, d-ичной кучей).
  • 18 декабря. Нахождение кратчайших путей из одной вершины в графах, в которых есть рёбра отрицательного веса, алгоритм Беллмана-Форда, проверка наличия цикла отрицательного веса. Кратчайшие пути в ациклических ориентированных графах. Кратчайшие пути между всеми парами вершин: алгоритм Флойда-Уоршолла.

Весна

  • 5 февраля. Деревья поиска. Корневое дерево: бинарное дерево, дерево с произвольным ветвлением, представление "левый ребёнок — правый сосед". Дерево поиска: поиск, вставка, удаление, поиск следующего и предыдущего элемента за время, пропорциональное высоте. АВЛ-дерево: верхняя оценка на высоту, сохранение свойства при помощи малых и больших вращений.
  • 12 февраля. Splay-дерево. Splay-дерево: дерево, которое остаётся сбалансированным в среднем и при этом не хранит никакой дополнительной информации в вершинах; реализация основных операций через операцию splay; верхняя оценка на среднюю стоимость операций.
  • 19 февраля. Декартово дерево. Декартово дерево: построение декартова дерева за линейное время (при предварительно отсортированных ключах), реализация операций вставки и удаления через split и merge. Дуча: верхняя оценка на мат. ожидание глубины. Использование неявного ключа, rope.
  • 26 февраля. Задачи RMQ и LCA. Динамическая задача RMQ/RSQ: оценка для запросов суммы/минимума и изменения элемента. Дерево отрезков. Статический вариант задачи RMQ: полное предвычисление ( на предобработку, на запрос), метод разреженной таблицы ( на предобработку, на запрос). Задача LCA: эйлеров обход дерева, сведение к задаче RMQ.
  • 5 марта, первая пара. Хеширование. Прямая адресация. Коллизии. Разрешение коллизий методом цепочек, методом последовательных проб и методом двойного хеширования. Гипотеза равномерного хеширования. Оценка времени поиска в хеш-таблице при использовании метода цепочек для гипотезы равномерного хеширования.
  • 5 марта, вторая пара. Универсальные семейства хеш-функций. Построение универсального семейства для целочисленных ключей. Оценка времени поиска в хеш-таблице при использовании метода цепочек для универсального семейства. Совершенное хеширование с помощью универсального семейства хеш-функций.
  • 12 марта, первая пара. Числовые алгоритмы. Cложение, умножение, деление длинных чисел. Арифметика по модулю: сложение, умножение, возведение в степень, алгоритм Евклида, расширенный алгоритм Евклида, деление. Проверка чисел на простоту. Генерация случайных простых чисел. Криптография: схемы с закрытым ключом, RSA.
  • 12 марта, вторая пара. Быстрое преобразование Фурье. Быстрое вычисление значений многочлена в точках: два способа задания многочленов — коэффициентами и значениями в точках; вычисление значений многочлена в точках методом "разделяй и властвуй"; дискретное преобразование Фурье; быстрое преобразование Фурье. Интерполяция: интерполяция в терминах матриц; матрица Вандермонда; интерполяция как домножение на обратную матрицу.
  • 13 марта. Задача о максимальном потоке. Теорема о минимальном разрезе и максимальном потоке. Алгоритм Форда-Фалкерсона. Задача о паросочетании в двудольном графе.
  • 16 апреля. Задача линейного программирования и симплекс-метод. Линейное программирование: общий вид задачи, матричная форма и сведение между различными представлениями.
  • 23 апреля. Линейное программирование: двойственность. Тотальная унимодулярность: определение и почему это гарантирует целочисленность решения.
  • 30 апреля. Поиск подстроки в строке. Наивный алгоритм. Алгоритм Рабина-Капра. z-функция, префикс функция, алгоритм Кнута-Морриса-Пратта.
  • 7 мая. Алгоритм Ахо-Корасик. Суффиксное дерево: определение, поиск подстроки.
  • 14 мая. Суффиксный массив: определение, поиск подстроки. Построение за .
  • 21 мая. NP-полные задачи. Определение классов P и NP. NP-полнота задачи выполнимости булевой схемы. Сведение CircuitSAT к SAT. Сведение SAT к 3SAT. Сведение 3SAT к IndependentSet. Сведение IndependentSet к VertexCover и Clique.
  • 28 мая. Приближенные алгоритмы для NP-полных задач. 2-приближенный алгоритм для вершинного покрытия. 2-приближенный алгоритм для метрического коммивояжера. -приближенный алгоритм для покрытия множествами.

Литература

Онлайн-курсы

Практика

Мишунин

Контакты: alexander.mishunin[at]gmail.com

Дедлайны по теоретическому ДЗ: до начала занятия для правок уже присланых ранее задач, и до начала суток, в которые будет занятие, для новых задач.

Таблица с результатами, осень

Таблица с результатами, весна

Слабодкин

Контакты:

  • slabodkin.m[at]gmail.com
  • Telegram: slabod

Дедлайны по теоретическому ДЗ:

  • мягкий дедлайн в воскресенье в 14:00, после него преподаватель один раз проверяет работу до пары
  • жёсткий дедлайн в 23:59 в день до занятия, после него работы не принимаются

Таблица с результатами, осень

Таблица с результатами, весна

Смаль

Контакты: avsmal[at]gmail.com