Алгоритмы на Python

Предварительное требование – прохождение курса «Основы программирования на Python» или знания в объеме этого курса.

Курс «Алгоритмы на Python» погружает слушателей в мир алгоритмов и структур данных, реализованных на языке Python. Вы освоите ключевые алгоритмы сортировки, поиска, работы с графами и оптимизации, а также научитесь применять их для решения реальных задач. Программа включает практические кейсы: от разработки решателя судоку до анализа графов и работы с данными в различных форматах (SQLite, JSON). Курс идеально подходит для тех, кто хочет укрепить алгоритмическое мышление и повысить уровень владения Python.

Целевая аудитория

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

Предварительные требования

  • прохождение курса «Основы программирования на Python» или знания в объеме этого курса
  • знание базового синтаксиса Python (переменные, циклы, функции)
  • основы работы с списками, словарями и множествами
  • желателен опыт решения простых алгоритмических задач

Приобретаемые знания и навыки

По окончании курса слушатели смогут:

  • анализировать сложность алгоритмов с использованием O-нотации
  • реализовывать и оптимизировать алгоритмы сортировки, поиска и работы с графами
  • проектировать эффективные структуры данных для конкретных задач
  • работать с данными в базах SQLite и формате JSON
  • применять алгоритмы для решения практических задач (например, поиск пути, анализ данных)

Программа курса

Модуль 1. Основы алгоритмического мышления и анализ эффективности

  • Алгоритмы как искусство: ключевые принципы и подходы к разработке;
  • Асимптотический анализ: Big-O, Big-Θ, Big-Ω на примерах;
  • Пространственная и временная сложность: как считать и оптимизировать;
  • Базовые структуры данных Python: списки, словари, множества;
  • Практикум: Профилирование кода — замер скорости стандартных операций Python.

Модуль 2. Классические алгоритмы сортировки: от теории к практике

  • Сортировка пузырьком и вставками: понимание простых итеративных методов;
  • Быстрая сортировка (QuickSort): выбор опорного элемента и рекурсия;
  • Сортировка слиянием (MergeSort): разбиение, слияние, стабильность;
  • Сравнение с встроенной timsort: когда использовать свои алгоритмы;
  • Практикум: Реализация QuickSort и MergeSort с замером времени на больших данных.

Модуль 3. Алгоритмы поиска и хеширование: скорость и точность

  • Линейный vs бинарный поиск: реализация и анализ на отсортированных данных;
  • Хеш-таблицы: создание собственной реализации с обработкой коллизий;
  • Алгоритм Кнута-Морриса-Пратта (KMP): поиск подстроки с префикс-функцией;
  • Применение хеширования: подсчет уникальных элементов в потоке;
  • Практикум: Поиск подстроки в тексте с KMP и хеширование для анализа частотности слов.

Модуль 4. Структуры данных: стеки, очереди и бинарные деревья

  • Стеки: реализация через списки и решение задач (валидация скобок);
  • Очереди: двусторонние очереди с collections.deque для симуляции процессов;
  • Бинарные деревья поиска (BST): вставка, удаление, балансировка;
  • Обход деревьев: рекурсивный и итеративный подходы;
  • Практикум: Построение BST для поиска ближайшего значения и проверка выражений со скобками.

Модуль 5. Графы и алгоритмы поиска пути: от метро до сетей

  • Представление графов: матрицы смежности vs списки ребер в Python;
  • Поиск в ширину (BFS): нахождение кратчайшего пути в невзвешенном графе;
  • Поиск в глубину (DFS): выявление циклов и компонент связности;
  • Алгоритм Дейкстры: оптимизация маршрутов с учетом весов;
  • Практикум: Построение графа московского метро и поиск оптимального маршрута с пересадками.

Модуль 6. Динамическое программирование и жадные стратегии

  • Динамическое программирование: разложение задачи на подзадачи с мемоизацией;
  • Классика DP: числа Фибоначчи, задача о рюкзаке (0/1 и дробный);
  • Жадные алгоритмы: минимальное остовное дерево (Kruskal), выбор активности;
  • Сравнение подходов: когда жадность проигрывает динамике;
  • Практикум: Решение задачи о рюкзаке и планирование расписания с жадным алгоритмом.

Модуль 7. Интеграция алгоритмов с SQLite: данные в действии

  • SQLite для алгоритмиста: создание схем для графов и деревьев;
  • Эффективные запросы: индексы, оптимизация JOIN и WHERE;
  • Хранение результатов: сериализация графов и путей в базу;
  • Анализ больших данных: постраничная обработка и агрегация;
  • Практикум: Сохранение графа метро в SQLite и поиск маршрутов с учетом времени поездки.

Модуль 8. JSON и финальный вызов: решатель головоломок

  • JSON в Python: парсинг и генерация сложных структур данных;
  • Алгоритмы обработки JSON: фильтрация, преобразование, сжатие;
  • Разработка решателя судоку: рекурсия и backtracking;
  • Оптимизация решателя: использование хеширования для проверки уникальности;
  • Практикум: Создание решателя 100 сложнейших судоку с сохранением результатов в JSON.

Документы об окончании курса

  • Сертификат Учебного центра Noventiq
  • Cертификат об обучении установленного образца

Certificate Noventiq Education Belarusсертификат об обучении установленного образца

Оставить отзыв

Информация о курсе

7-11 июля
10:00 - 17:00
8-12 сентября
10:00 - 17:00
10-14 ноября
10:00 - 17:00

1920 BYN

Вендор: Программирование
Код курса: PTHN-A-1
Продолжительность: 5 дней / 40 ак. часов
Направление: Python
Форма обучения:

под руководством инструктора

Записаться на курс

Название курса и комментарии*

Имя*

Фамилия*

Отчество*

Компания

Телефон*

Email*

Настоящим, в соответствии с ч.2.ст.18 Закона Республики Беларусь от 10.11.2008 N 455-З(ред. от 11.05.2016) "Об информации, информатизации и защите информации" и Законом Республики Беларусь от 7 мая 2021 г. № 99-З «О защите персональных данных», отправляя данную форму, вы подтверждаете свое согласие на сбор, обработку и хранение ООО «СофтЛайнБел» Ваших персональных данных. ООО «СофтЛайнБел» гарантирует конфиденциальность получаемой от Вас информации. Сбор, обработка и хранение персональных данных осуществляется в целях эффективного оказания услуг и исполнения договоров.

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