Магистратура
2026/2027





Алгоритмический инструментарий
ID 1141507
Статус:
Курс обязательный (Инженерия данных)
Где читается:
Факультет компьютерных наук
Когда читается:
1-й курс, 3, 4 модуль
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
6
Контактные часы:
40
Программа дисциплины
Аннотация
В курсе рассматриваются основные подходы к анализу и проектированию алгоритмов и структур данных. Среди тем, изучаемых в курсе — Освоение языка С++, асимптотическая оценка сложности алгоритма в худшем случае, эффективные алгоритмы сортировки и выбора порядковых статистик, структуры данных (линейные структуры данных, двоичные деревья поиска, хеш-таблицы, деревья отрезков, декартовы деревья), способы проектирования алгоритмов (динамическое программирование, жадная стратегия), разработка и реализация собственных отказоустойчивых структур данных с покрытием тестами.
Цель освоения дисциплины
- Знать наиболее важные алгоритмы и структуры данных, основные принципы их проектирования и анализа.
- Иметь навыки реализации алгоритмов на языках Python и C++.
- Уметь обосновывать корректность алгоритмов, проводить теоретическую и экспериментальную оценку их временной сложности.
- Уметь формализовать условия алгоритмических задач, разбивать задачи на подзадачи и разрабатывать эффективные способы их решения.
- Применять алгоритмические подходы к обработке больших объёмов данных с учётом ограничений вычислительных ресурсов.
Планируемые результаты обучения
- • -ознакомление студентов с основными принципами проектирования и анализа алгоритмов и структур данных;
- • -развитие навыков обоснования корректности алгоритмов, их практической реализации, теоретической и экспериментальной оценки их временной сложности
- Реализовывать алгоритмические решения на C++ и Python.
- Использовать стандартные библиотеки и структуры данных.
- Анализировать временную и пространственную сложность алгоритмов.
- Применять алгоритмы сортировки, поиска и выбора порядковых статистик.
- Обосновывать выбор алгоритма с учётом условий задачи.
- Применять основные структуры данных для решения алгоритмических задач.
- Реализовывать операции поиска, добавления, удаления и обновления элементов.
- Использовать структуры данных для обработки диапазонов и выполнения запросов.
- Оценивать сложность операций со структурами данных.
- Выбирать структуры данных с учётом характеристик информации и требований к её обработке.
- Применять динамическое программирование и жадные алгоритмы.
- Решать алгоритмические задачи оптимизации.
- Использовать основные алгоритмы на графах.
- Обосновывать корректность алгоритмических решений.
- Сравнивать различные подходы к решению задач.
- Выбирать и применять алгоритмические подходы к обработке больших объёмов данных с учётом ограничений вычислительных ресурсов.
- Использовать базовые принципы потоковой и блочной обработки.
- Объяснять основные принципы распределённой обработки данных.
- Выбирать алгоритмические решения с учётом объёма информации и доступных ресурсов.
- Разрабатывать и тестировать алгоритмические решения.
- Выявлять ошибки и проверять корректность программ.
- Проводить экспериментальную оценку производительности.
- Оптимизировать алгоритмы с учётом ограничений по времени и памяти.
- Обосновывать выбор и эффективность реализованных решений.
Содержание учебной дисциплины
- Основы алгоритмического программирования и анализа алгоритмов
- Структуры данных и алгоритмы эффективной обработки информации
- Методы решения алгоритмических и оптимизационных задач
- Алгоритмические подходы к обработке больших объёмов данных
- Практическая реализация и оптимизация алгоритмических решений
Элементы контроля
- Практическое задание модуля 3Студент индивидуально выполняет практическое задание в соответствии с требованиями, размещёнными в LMS. Студент разрабатывает программное решение на Python или C++ с использованием изученных алгоритмов и структур данных. Исходный код и необходимые материалы загружаются в LMS в установленном для задания формате. Преподаватель проверяет работу и предоставляет обратную связь в LMS.
- Практическое задание модуля 4Студент индивидуально выполняет практическое задание в соответствии с требованиями, размещёнными в LMS. Студент разрабатывает программное решение на Python или C++ с применением изученных алгоритмов и структур данных. Исходный код и необходимые материалы загружаются в LMS в установленном для задания формате. Преподаватель проверяет работу и предоставляет обратную связь в LMS.
- Итоговый тестСтудент самостоятельно проходит итоговое тестирование в LMS по материалам дисциплины. Тест включает вопросы, направленные на проверку понимания алгоритмов, структур данных, принципов их работы, оценки сложности и выбора эффективных решений для различных вычислительных задач.
Промежуточная аттестация
- 2026/2027 4th moduleФормула итоговой оценки: 0,4 × практическое задание модуля 3 + 0,4 × практическое задание модуля 4 + 0,2 × итоговый тест. Максимальная оценка — 10 баллов.
Список литературы
Рекомендуемая основная литература
- Data structures and algorithm analysis in C++, Weiss, M. A., 2006
- Introduction to algorithms, Cormen, T. H., 2009
Рекомендуемая дополнительная литература
- Программирование на языке C++ - Андрианов И. А., Кочкин Д. В., Ржеуцкая С. Ю. - Вологодский государственный университет - 978-5-87851-765-2 - 2018 - русский - https://e.lanbook.com/book/246689 - ЛАНЬ - 246689