^ Алгоритмы и анализ сложности ^^ | **Составитель** | **Жданова А.Н.** | | **Уровень** | Бакалавриат | | **Семестр** | 4 | | **Описание курса** |Курс «Алгоритмы и анализ сложности» предназначен для студентов, стремящихся овладеть базовыми знаниями в области структур данных и алгоритмов. Дисциплина помогает понять, как разрабатывать эффективные алгоритмы и оценивать их алгоритмическую сложность. В рамках курса изучаются основные фундаментальные алгоритмы, включая те, что часто применяются в IT-компаниях. Внимание уделяется как теоретическим аспектам, так и практическим навыкам, включая примеры задач, которые могут встретиться на собеседованиях при приеме на работу. | | **Необходимые знания** |Базовые знания программирования – понимание принципов работы алгоритмов и основных структур данных. Опыт работы с математикой – знание основ теории вероятностей, дискретной математики и математической логики. Знание одного из языков программирования – умение писать код на одном из популярных языков программирования (Python, Java, C++, и т.д.). | | **Связь с другими дисциплинами** |Математический анализ, Теория вероятностей и математическая статистика, Дискретная математика, Основы программирования | | **Языки программирования** |По выбору студента (Python, Java, C++, и т.д.) | | **Темы курса** | 1. Определение алгоритма, эффективности программы, O-сложность алгоритмов \\ 2. Экспоненциальное и полиномиальное время алгоритма \\ 3. Метод «Разделяй и властвуй» \\ 4. Сортировки \\ 5. Среднее время операции, понятие потенциала, учетная стоимость операции \\ 6. Список, очередь, дек \\ 7. Простые структуры данных \\ 8. Дополнительные структуры данных (хэш-таблицы, динамические массивы и т.д.) \\ 9. Жадные алгоритмы \\ 10. Динамическое программирование \\ 11. Деревья \\ 12. Графы \\ 13. Алгоритмы на строках | | **Чему научится студент** | • Уверенное владение методами оценки сложности алгоритмов и их оптимизации. \\ • Умение разрабатывать алгоритмы, оптимальные с точки зрения времени и ресурсов. \\ • Практика решения типичных задач, встречающихся на собеседованиях в ведущих IT-компаниях. \\ • Понимание и применение различных структур данных и алгоритмов работы с данными. |