Бакалавриат
2023/2024
Алгоритмы и структуры данных
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Статус:
Курс по выбору (Прикладная математика и информатика)
Направление:
01.03.02. Прикладная математика и информатика
Кто читает:
Базовая кафедра Яндекс
Где читается:
Факультет компьютерных наук
Когда читается:
1-й курс, 2, 4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для всех кампусов НИУ ВШЭ
Преподаватели:
Галицкий Борис Васильевич,
Головин Леонид Олегович,
Густокашин Михаил Сергеевич,
Климовицкий Роман Григорьевич,
Куренков Владимир Вячеславович,
Лазарев Михаил Владимирович,
Мамаев Алексей Александрович,
Мамай Игорь Борисович,
Мануйленко Никита Сергеевич,
Панькова Марина Геннадьевна,
Петров Андрей Иванович,
Плотников Алексей Валерьевич,
Темирханов Азиз Арсенович,
Трубачев Иван Михайлович,
Фолунин Владимир Александрович,
Шахматов Кирилл Вениаминович,
Широкин Константин Павлович
Язык:
русский
Кредиты:
9
Контактные часы:
136
Программа дисциплины
Аннотация
В курсе рассматриваются основные подходы к анализу и проектированию алгоритмов и структур данных. Среди тем, изучаемых в курсе, — асимптотическая оценка сложности алгоритма в худшем случае, эффективные алгоритмы сортировки и выбора порядковых статистик, структуры данных (двоичные деревья поиска, кучи, хеш-таблицы), способы проектирования алгоритмов (разделяй и властвуй, динамическое программирование, жадная стратегия), основные алгоритмы на графах (кратчайшие пути, топологическая сортировка, компоненты связности, минимальные остовные деревья).
Цель освоения дисциплины
- ознакомление студентов с основными принципами проектирования и анализа алгоритмов и структур данных
- развитие навыков обоснования корректности алгоритмов, их практической реализации, теоретической и экспериментальной оценки их временной сложности
Планируемые результаты обучения
- Знать о наиболее важных алгоритмах и структурах данных и основных принципах их проектирования и анализа
- Иметь навыки реализации алгоритмов на языках Python и C++
- Уметь обосновывать корректность алгоритмов, проводить теоретическую и экспериментальную оценки их временной сложности
- Уметь формализовать условие задачи, требующей алгоритмического решения, разбить задачу на подзадачи, сформулировать эффективный алгоритм решения задачи
Содержание учебной дисциплины
- Рекурсивные алгоритмы и рекуррентные соотношения
- Асимптотический анализ
- Динамическое программирование
- Сортировки
- Разделяй и властвуй
- Алгоритмы на графах
- Структуры данных
- Жадные алгоритмы
- Хэш таблицы
- Деревья
Промежуточная аттестация
- 2023/2024 учебный год 2 модуль0.3 * Домашнее задание + 0.2 * Контрольная работа + 0.1 * Работа на семинаре + 0.4 * Экзамен письменный
- 2023/2024 учебный год 4 модуль0.3 * Домашнее задание + 0.2 * Контрольная работа + 0.1 * Работа на семинаре + 0.4 * Экзамен письменный
Список литературы
Рекомендуемая основная литература
- Cormen, T. H. (2009). Introduction to Algorithms (Vol. 3rd ed). Cambridge, Mass: The MIT Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=343613
Рекомендуемая дополнительная литература
- Arora, S., & Barak, B. (2009). Computational Complexity : A Modern Approach. Cambridge: Cambridge eText. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=304712