+7 (812) 703-02-02 info@hse.spbstu.ru

DEV-CSH110. Алгоритмы и структуры данных

Длительность дисциплины: 44 ак.ч.


Аннотация

Целью реализации дисциплины "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 Области применения деревьев.
Практические занятия:
Практические занятия не предусмотрены.