Курс по информатике в Политехе.
- Как устроен курс.
- Инфраструктура: slack, github, docker, linux.
- Курс молодого питониста.
- Дополнительно: элементарная комбинаторика, решето Эратосфена, линейный конгруэнтный метод.
- Основные определения: алгоритм, АТД, структура данных, тип данных.
- Нужная математика: числовые ряды, О-большое, рекуррентные формулы.
- Как сравнивать алгоритмы.
- Поиск: линейный, бинарный.
- Дополнительно: интерполяционный поиск, поиск прыжками, фибоначчиев поиск, экспоненциальный поиск.
- Метод грубой силы (aka решение «в лоб»). Исчерпывающий перебор. Метод поиска с возвратом, ветвей и границ.
- Метод преобразования (aka «преобразуй и властвуй»).
- Жадные методы.
- Метод уменьшения размера задачи (aka «уменьшай и властвуй»). Рекурсия.
- Метод декомпозиции (aka «разделяй и властвуй»).
- Компромисс время-память. Динамическое программирование. Мемоизация.
- Дополнительно: сортировка Шелла, сортировка пузырьком, быстрая сортировка, порядковые статистики, radix-сортировка.
- АТД список.
- Строка — список символов.
- АТД очередь. Стек и дек. Очередь с приоритетом.
- Структуры: массив, связный список, список с пропусками.
- Дополнительно: куча (aka пирамида).
- Парадигмы программирования.
- Типизация.
- Компиляторы и интерпретаторы.
- Объектно-ориентированное программирование, S.O.L.I.D., паттерны.
- Чистые функции, высшие функции.
- Разработка через тестирование (TDD).
- Рекомендации.
- Водопадная модель, Agile, Scrum, канбан-доска.
- Максим Дорофеев и игры.
- АТД словарь и АТД множество, мультимножество.
- Хэш-таблица. Хэширование. Разрешение коллизий.
- Алгоритм Рабина-Карпа.
- Словарь и множество в Python.
- Дополнительно: фильтр Блума.
- АТД дерево
- Реализация деревьев
- Бинарное дерево
- Бинарное дерево поиска
- Сбалансированные деревья: АВЛ-дерево, RB-дерево, 2-3-дерево, B-дерево
- Дополнительно: splay-дерево, k-d дерево, scapegoat-дерево.
- АТД граф
- Обход графа
- Топологическая сортировка
- Кратчайшие пути
- Минимальное остовое дерево
- Задача о максимальном потоке
- Задача коммивояжера
- Как работает компьютер
- Как биты превращаются в числа
- Дополнительно: алгоритм Евклида, алгоритм Карацубы, алгоритм Штрассена, метод Ньютона, Алгоритм численного дифференцирования.
- Parallelism != Concurrency
- Threads и processes
- Синхронизация
- Actors
- GPU: параллелизм данных
- Лямбда-архитектура
- Машинное обучение: решающие деревья, нейронные сети, обучение с подкреплением, уменьшение размерности.
- NP-задачи и эвристики
- Квантовые алгоритмы ☠️
Задачи курса находятся тут.
- 2-3 дерево [см. тема 9]
- Scapegoat-дерево [см. тема 9]
- Splay-дерево [см. тема 9]
- k-d дерево [см. тема 9]
- АВЛ-дерево [см. тема 9]
- Алгоритм Дейкстры [см. тема 10]
- Алгоритм Крускала [см. тема 10]
- Алгоритм Прима [см. тема 10]
- Алгоритм Рабина-Карпа [см. тема 8]
- Бинарный поиск [см. тема 2]
- Быстрая сортировка [см. тема 3]
- Граф [см. тема 10]
- Дек [см. тема 4]
- Интерполяционный поиск [см. тема 2]
- Код Хаффмана [см. тема 9]
- Красно-черное дерево [см. тема 9]
- Куча (aka пирамида) [см. тема 4, тема 3]
- Линейный конгруэнтный метод [см. тема 1]
- Линейный поиск [см. тема 2]
- Массив [см. тема 4]
- Обход дерева в глубину (DFS) [см. тема 9]
- Обход дерева в ширину (BFS) [см. тема 9]
- Очередь [см. тема 4]
- Очередь с приоритетом [см. тема 4]
- Пирамидальная сортировка (сортировка кучей) [см. тема 3]
- Поиск прыжками [см. тема 2]
- Решето Эратосфена [см. тема 1]
- Связный список [см. тема 4]
- Сортировка Шелла [см. тема 3]
- Сортировка вставкой [см. тема 3]
- Сортировка выбором [см. тема 3]
- Сортировка кучей (пирамидой) [см. тема 3]
- Сортировка пузырьком [см. тема 3]
- Сортировка слиянием [см. тема 3]
- Топологическая сортировка [см. тема 10]
- Фибоначчиев поиск [см. тема 2]
- Хэш-таблица [см. тема 8]
- Экспоненциальный поиск [см. тема 2]
- Kadane's algorithm
- Q-learning
- Radix-сортировка
- SVD-разложение
- Алгоритм A*
- Алгоритм k-mean
- Алгоритм kNN
- Алгоритм PageRank
- Алгоритм PCA
- Алгоритм QR
- Алгоритм Белмана-Форда
- Алгоритм Бойера-Мура
- Алгоритм Евклида
- Алгоритм Карацубы
- Алгоритм Кнута-Морриса-Пратта
- Алгоритм обратного распространения ошибки
- Алгоритм Флойда
- Алгоритм численного дифференцирования
- Алгоритм Шора
- Алгоритм Штрассена
- Градиентный спуск
- Код Хэмминга
- Кольцевая очередь
- Метод t-SNE
- Метод Монте-Карло
- Метод Ньютона
- Префиксное дерево
- Симплекс-метод
- Система непересекающихся множеств
- Суффиксное дерево
- Схема Горнера
- Фильтр Блума
- Фильтр Калмана