Описание:Алгоритмы и структуры данных, их применение в программировании и реализация на языках C++ и Python. В C++: объектно ориентированный стиль программирования на примере решения геометрических задач на плоскости. Использование библиотеки STL. Реализация классов, представляющих математические объекты, такие как матрица, полином, треугольник, контур на плоскости. Итераторы и их использование в стандартной библиотеке STL. Оценка минимального числа сравнений в произвольном алгоритме сортировки. Оптимальные алгоритмы сортировки: HeapSort и различные варианты MergeSort. Бинарный поиск в упорядоченном массиве.Бинарные деревья поиска, алгоритмы поиска, добавления и удаления узлов, обхода узлов в порядке возрастани. Реализация множества и отображения на их основе. Сбалансированные деревья: AVL- и красно-черные деревья. Алгоритм добавления элементов в красно-черное дерево.
Python3: основы и особенности языка. Задание списков с помощью List Comprehension, генераторные функции и выражения. Классы в Python3. Модуль numpy для векторных операций с многомерными массивами. Основы машинного обучения: метод наименьших квадратов и псевдо-обратные матрицы, модуль sklearn, минимизация функций и функторов. Метод опорных векторов в задаче классификации. Уменьшение размерности пространства объектов с помощью метода главных компонент. Метод решающих деревьев в задачах регрессии и классификации, идея метода градиентного бустинга. Алгоритмы кластеризации K-means и DBScan.