Цели и задачи дисциплины
Целью данного курса является изучение основных структур данных и алгоритмов, которые могут быть полезны, как для развития алгоритмического мышления, так и для практического применения полученных знаний при разработке программного обеспечения.
Основные задачи изучения дисциплины включают:
изучение элементов теории структур данных и сложности алгоритмов;
изучение методов обработки данных (поиск, сортировка, рекурсия);
выбор структуры данных для решения поставленной задачи;
построения алгоритмов решения конкретных задач, оценки их сложности, эффективности, трудоемкости.
Краткое содержание дисциплины
В рамках данной дисциплины изучаются:
абстрактный тип данных (спецификация, представление, реализация);
линейные структуры данных (стек, очередь, дек, массив, списки, структуры);
нелинейные структуры данных (мультисписки, слоёные списки, деревья, леса, графы);
табличные структуры данных;
преобразование (нормализация, агрегирование, векторизация) данных;
чистка (пропущенных, повторяющихся) данных;
анализ сложности и эффективности алгоритмов поиска и сортировки;
поиск данных в линейный структурах (линейный, двоичный, интерполяционный) и в текстах (прямой, алгоритм Кнута - Морриса - Пратта, алгоритм поиска строки Бойера - Мура);
хеширование;
алгоритмы сортировки (методы разработки алгоритмов, параметры оценки эффективности, примеры алгоритмов).