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

DEV-PY111. Базовые алгоритмы и структуры данных на языке Python

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


Аннотация

Курс предназначен для изучения алгоритмов и структур данных, применяемых в программировании, используя язык Python для их реализации и использования. Данные алгоритмы и структуры предназначены для эффективной и удобной работы с данными, и их знание поможет вам при работе с любым языком программирования, а также при прохождении собеседований на позицию разработчика ПО.

Курс «DEV-PY111. Базовые алгоритмы и структуры данных на языке Python» предназначен для слушателей закончивших курсы «DEV-PY100. Основы процедурного программирования на языке Python», «DEV-PY110. Процедурное программирование на языке Python (расширенный курс)» и желающих освоить такие темы, как:

  • основные алгоритмы работы с различными структурами данных;
  • О-нотация и правила вычисления;
  • итерационные алгоритмы;
  • рекурсии и рекурсивные алгоритмы;
  • основы динамического программирования;
  • алгоритмы работы с графами и деревьями;
  • алгоритмы сортировки.

Основная цель данного курса – изучить существующие популярные алгоритмы и структуры для обработки данных, научиться правильно выбирать и применять их для решения задач, а также развить навыки логического мышления и научить слушателя умению декомпозировать и находить пути решения тех или иных задач.


Знания и умения, полученные в результате изучения

В результате освоения программы обучающийся должен уметь:
• грамотно формировать структуру текста программы;
• выполнять декомпозицию задачи; 
• корректно и эффективно использовать алгоритмы и структуры на языке Python; 
• выполнять декомпозицию сложных задач; 
• решать практические задачи по корректному использованию языковых и программных средств, позволяющих реализовать простые консольные программы.

В результате освоения программы обучающийся должен знать:
• базовые понятия алгоритмизации и процедурного программирования;
• основные алгоритмы работы с различными структурами данных; 
• О-нотацию и правила вычисления; 
• итерационные алгоритмы; 
• рекурсию и рекурсивные алгоритмы; 
• основы динамического программирования; 
• алгоритмы работы с графами и деревьями; 
• алгоритмы сортировки.

В результате освоения программы обучающийся должен приобрести практический опыт:
• написания эффективных консольных программ на базе языка программирования Python; 
• планирования собственной деятельности по реализации работоспособных простых приложений с использованием процедурного программирования. 


Содержание дисциплины

Тема 1. Введение в алгоритмы и структуры данных. О-нотация. Простые структуры данных

  • Введение в алгоритмы и структуры данных.
  • О-нотация.
  • Простые структуры данных.

Практические работы:

  • Проверка числа на простоту.
  • Решето Эратосфена.
  • Работа со стеком.
  • Работа со списками.

Тема 2. Итерационные алгоритмы. Рекурсия и рекурсивные алгоритмы

  • Итерационные алгоритмы и применение.
  • Рекурсия и рекурсивные алгоритмы.

Практические работы:

  • Ряды Тейлора.
  • Вычисление факториала числа.
  • Вычисление числа Фибоначчи.

Тема 3. Динамическое программирование

  • Динамическое программирование.
  • Метод «разделяй и властвуй».

Практические работы:

  • Проверка корректности скобочной последовательности.
  • Задача о возможных прыжках кузнечика.

Тема 4. Графы и деревья.

  • Графы и их свойства.
  • Деревья и их свойства.

Практические работы:

  • Поиск кратчайшего пути.
  • Операции на деревьях.

Тема 5. Алгоритмы сортировки

  • Введение в алгоритмы сортировки.
  • Основные алгоритмы сортировки.

Практические работы:

  • Реализация сортировки вставками.
  • Реализация сортировки слиянием.
  • Реализация быстрой сортировки Хоара.
Тема 6. Расширенные методы решения алгоритмических задач
  • Обзор расширенных методов решения алгоритмических задач.