Целью реализации дисциплины "DEV-CSH110. Алгоритмы и структуры данных" является освоение слушателями основных понятий алгоритмизации и эффективного использования структур данных.
Для достижения указанной цели предполагается решение следующих задач:
- освоение принципов оценки эффективности алгоритмов;
- освоения знаний по ключевым способам организации данных и оптимальному их выбору в зависимости от поставленной задачи;
- приобретение навыков решения типовых алгоритмических задач с использованием различных, типовых структур данных.
Таким образом, посредством изучения данной программы реализуется постепенный переход от рассмотрения теоретических основ алгоритмизации к практическому закреплению полученных знаний для решения типовых задач алгоритмизации и программирования.
Данный курс можно рассматривать как подготовительный, профориентационный для поступающих на профильное высшее образование.
Знания и умения, полученные в результате изучения
В результате освоения программы, обучающийся должен уметь:
• эффективно выбирать оптимальный способ организации данных;
• использовать классы из стандартных библиотек MS VS и настраивать их;
• самостоятельно реализовывать некоторые динамические структуры данных;
В результате освоения программы обучающийся должен знать:
• принципы оценки эффективности алгоритмов и подходы их сравнения;
• основные способы организации данных и их ключевые особенности и преимущества;
В результате освоения программы обучающийся должен приобрести практический опыт:
• использования ключевых алгоритмов по обработке данных в структурах данных: массивы, списки, словари, стеки, очереди.
Тема 1. Введение в алгоритмизацию
1.1 Понятие алгоритма.
1.1 Критерии оценивания алгоритмов.
1.2 Нотация O(n).
1.3 Методы сравнения алгоритмов и их программной реализации.
Тема 2. Структуры данных и подходы к их организации
2.1 Роль организации данных в программе.
2.2 Основные виды структур данных.
2.3 Использование стандартных библиотек и классов и программирование пользовательских классов.
2.4 Динамическое управление данными.
Практические занятия:
Решение практических задач по теме: обзор библиотек и классов для использования структур данных.
Тема 3. Рекурсивные алгоритмы
3.1 Понятие рекурсии.
3.2 Прямая и косвенная рекурсия.
3.3 Стоп-условие рекурсии.
3.4 Глубина рекурсии.
3.5 Примеры решения задач.
Практические занятия:
Решение практических задач по теме рекурсивные алгоритмы.
Тема 4. Алгоритмы работы с массивами
4.1 Объявление и работа с массивами.
4.2 Поиск и выборка элемента (элементов) в массиве.
4.3 Различные способы сортировки элементов массива.
4.4 Слияние массивов.
4.5 Использование ступенчатых массивов.
Практические занятия:
Алгоритмы работы с массивами.
Тема 5. Списки
5.1 Понятие списка.
5.2 Отличие списка и массива.
5.3 Виды списков: однонаправленный, двунаправленный, кольцевой.
5.4 Алгоритмы работы со списками.
Практические занятия:
Объявление и использование списков.
Тема 6. Стеки и очереди
6.1 Особые виды списков: стеки и очереди.
6.2 Правила доступа к элементам.
6.3 Примеры использования.
Практические занятия:
Практические занятия по темам: стеки и очереди.
Тема 7. Хеширование. Словари
7.1 Понятие хеширование, хеш-функция, хеш-код.
7.2 Хеширование закрытое и открытое.
7.3 Использование хеш-таблиц.
7.4 Словари Использование словарей.
Практические занятия:
Использование хеширования и словарей.
Тема 8. Алгоритмы обработки строк
8.1 Подходы к обработке строк – стандартные функции, работа как с массивом, регулярные выражения.
8.2 Поиск подстроки в строке.
8.3 Обработка строк.
Практические занятия:
Практические занятия по теме обработка строк.
Тема 9. Деревья (обзорно)
9.1 Деревья Виды деревьев и особенности их реализации.
9.2 Области применения деревьев.
Практические занятия:
Практические занятия не предусмотрены.