Каталог/назад к курсам
ОбщееНачальный

Алгоритмы и структуры данных: полный курс

Алгоритмы и структуры данных на практике: от Big-O, поиска и сортировок до стеков/очередей, куч, деревьев и хеш-таблиц. 120+ задач с автопроверкой, визуализации и разборы собес-задач. В дорожной карте — расширенные модули: графы, геометрия, теория чисел (обновления включены).

Свободный темп обучения
15 модулей 94 урока
10 учащихся
#stepik-import

Описание

Программа курса построена таким образом, чтобы шаг за шагом вести вас от базовых понятий до сложных алгоритмических техник, необходимых для решения реальных задач в IT.

Курс включает в себя следующие ключевые аспекты:

Теоретическая база:

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

Практическая направленность:

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

Многоуровневый подход:

Курс структурирован в виде модулей, начиная с базовых понятий и заканчивая продвинутыми техниками, такими как динамическое программирование, графы и хэш-таблицы. Такой подход позволяет каждому учащемуся выбрать удобный темп обучения и постепенно повышать уровень сложности.

Подготовка к профессиональным вызовам:

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

Поддержка:

Наша команда оперативно отвечает на все вопросы по содержанию курса и реагирует на замечания.

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

Вы можете задать любой вопрос автору в телеграмм @alexey_stepik

Обновления:

22.04.2025 - Обновлена теоретическая часть в асимптотиках

23.04.2025 - Обновлены проекты, теперь они сдаются через рецензирование

24.04.2025 - Добавлена новая теория в списки, массивы, очереди и стэки.

25.04.2025 - Обновлена теория на алгоритмы поиска.

28.04.2025 - Обновлена теория по сортировкам, добавлены новые задачи.

05.05.2025 - Переработана теория по кучам

28.06.2025 - Расширена теория по AVL, Treap, Красно-черному дереву и Splay

Автор курса

Алексей Малышкин

Разрабатываю образовательные материалы по программированию, машинному обучению и анализу данных. Темы: Python-разработка, аналитика, ML-инструменты (LangChain, vector databases, AI agents), компьютерное зрение. Стараюсь объяснять технические концепции понятно и структурировано. Ранее преподавал на Stepik и обучил более 2000 студентов.

Программа

Секция 1

Введение в алгоритмы и структуры данных

Модуль уже открыт
Урок 1
Краткий обзор структуры курса
Урок 2
Что такое алгоритмы?
Секция 2

Оценка сложности алгоритмов

Модуль уже открыт
Урок 1
Асимптотическая сложность и нотация большого O
Урок 2
Пространственная сложность (потребление памяти)
Урок 3
O, o, Θ, Ω(осторожно, матан)
Урок 4
Таблица распространенных сложностей
Урок 5
Примеры оценки сложности алгоритмов
Урок 6
Задачи
Секция 3

Основные структуры данных

Модуль уже открыт
Урок 1
Массивы
Урок 2
Списки: односвязанные, двусвязанные
Урок 3
Применение списков
Урок 4
Очередь и стэк: принципы FIFO и LIFO
Урок 5
Реализация и задачи
Урок 6
Задачи
Урок 7
Проект 1: Стэк
Урок 8
Проект 2: Очередь
Секция 4

Алгоритмы поиска и сортировки

Модуль уже открыт
Урок 1
Линейный и бинарный поиски
Урок 2
Модификации и тесты на алгоритмы поиска
Урок 3
Сортировка пузырьком
Урок 4
Сортировка вставками
Урок 5
Сортировка слиянием (merge sort)
Урок 6
Быстрая сортировка (Quick Sort)
Урок 7
Quick Select
Урок 8
Детерменированный Quick Sort
Урок 9
Задачи
Урок 10
Проект 3: детерминированный Quick Sort
Секция 5

Кучи и алгоритмы на их основе

Модуль уже открыт
Урок 1
Двоичная куча: свойства, использование в алгоритмах.
Урок 2
Построение кучи
Урок 3
Встроенные кучи в C++ и Python
Урок 4
Задачи
Секция 6

Дерево отрезков

Модуль уже открыт
Урок 1
Что такое ДО?
Урок 2
Построение дерева
Урок 3
Обновление значений
Урок 4
Обработка запросов
Урок 5
Сжатие координат
Урок 6
Неявное дерево отрезков
Урок 7
Задачи
Урок 8
Проект 4: Дерево отрезков
Секция 7

Бинарные деревья

Модуль уже открыт
Урок 1
Что такое дерево?
Урок 2
Что такое бинарное дерево поиска (BST)
Урок 3
Операции в бинарном дереве поиска
Урок 4
Обходы дерева
Урок 5
Проверка дерева на соответствие BST
Урок 6
Минимум и максимум в BST
Урок 7
Уравновешенные BST
Урок 8
Использование BST в реальных задачах
Урок 9
Задачи
Секция 8

Сбалансированные деревья

Модуль уже открыт
Урок 1
Типы сбалансированных деревьев
Урок 2
AVL-дерево
Урок 3
Splay-дерево
Урок 4
Декартово дерево
Урок 5
Красно-черное дерево
Урок 6
Задачи
Урок 7
Проект 5: Set
Секция 9

Хэш-таблицы

Модуль уже открыт
Урок 1
Основная идея и примеры
Урок 2
Коллизии: как их обрабатывать
Урок 3
Частотный анализ
Урок 4
Хранение уникальных элементов
Урок 5
Простая хэш-таблица на основе массива
Урок 6
Обработка коллизий метод цепочек
Урок 7
Задачи
Секция 10

Алгоритмы на графах

Модуль уже открыт
Урок 1
Введение в графы
Урок 2
Обходы графа (DFS и BFS)
Урок 3
Компоненты связанности
Урок 4
Кратчайшие пути
Урок 5
Поиск минимального остовного дерева
Урок 6
Топологическая сортировка
Урок 7
Алгоритм Флойда-Уоршелла
Урок 8
Алгоритм А и его примение
Секция 11

Геометрические алгоритмы

Модуль уже открыт
Урок 1
Введение в геометрию
Урок 2
Определение выпуклого многоугольника
Урок 3
Пересечение отрезков
Урок 4
Выпуклая оболочка (Convex Hull)
Урок 5
Алгоритм триангуляции Делоне
Урок 6
Геометрические алгоритмы в графике
Секция 12

Теория чисел и криптография

Модуль уже открыт
Урок 1
Основы теории чисел
Урок 2
Расширенный алгоритм Евклида
Урок 3
Быстрое возведение в степень
Урок 4
Решето Эратосфена и тесты простоты
Урок 5
Китайская теорема об остатках
Урок 6
RSA и основы криптографии
Секция 13

Динамическое программирование и оптимизация

Модуль уже открыт
Урок 1
Базовые принципы ДП
Урок 2
Классические задачи ДП
Урок 3
ДП с восстановлением ответа
Урок 4
Задача о рюкзаке
Урок 5
ДП по деревьям
Урок 6
ДП по маскам
Урок 7
Комбинированные техники ДП
Секция 14

Параллельные и потоковые алгоритмы

Модуль уже открыт
Урок 1
Основы многопоточного программирования
Урок 2
MapReduce и обработка больших данных
Урок 3
Алгоритмы для многопоточных систем
Урок 4
Lock-free структуры данных
Урок 5
Параллельные алгоритмы сортировки
Секция 15

Завершающий модуль

Модуль уже открыт
Урок 1
Итоги курса
Поддержка