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

Курс Алгоритмы и структуры данных — Prowid
Длительность курса
4 мес/ 32 урока
Индивидуально
В мес 200 AZN
В группе
В мес 150 AZN
При оплате за весь курс в группе
15% скидка
Оплата по частям
50/50
По подписке
от 30 AZN в мес
Алгоритмы и структуры данных — фундамент программиста: они учат писать быстрый, простой и правильный код и составляют основу технических собеседований. Курс проходит весь путь от Big-O до графов и объектно-ориентированного дизайна; каждый алгоритм разбирается по шагам, затем пишется в коде.

Идёт набор в новую группу — оставьте заявку, чтобы забронировать место

Или учитесь сами в личном кабинете → по подписке от 30 AZN в месяц

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

Что такое алгоритм, псевдокод, корректность и тестирование
Сложность: Big-O, время и память, амортизированный анализ, измерения
Рекурсия, мемоизация, backtracking, «разделяй и властвуй», жадные алгоритмы, введение в ДП
Массивы, строки, два указателя и скользящее окно
Линейный и двоичный поиск, бинарный поиск по ответу
Сортировки: простые и эффективные, сравнение и оценка
Абстрактные типы данных: stack, queue, deque, priority queue, map, set
Связные списки, реализация stack и queue
Хеш-таблицы, коллизии, LRU-кэш, Bloom filter
Деревья: BST, балансировка, heap, trie, дерево отрезков
Графы: BFS, DFS, Дейкстра, A*, минимальное остовное дерево, топологическая сортировка
Объектно-ориентированный дизайн: SOLID, UML, паттерны GoF, чистая архитектура
Практика: шаблоны типовых задач и стратегия собеседования
Итоговый проект
Как мы учим?

Этапы обучения

01

Вебинар

Студенты подключаются к уроку в прямом эфире. В конце каждого урока студентам отправляется видеозапись занятия.

02

Домашнее задание

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

03

Работа с ментором

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

04

Портфолио

За время курса вы выполните несколько проектов на разные темы — они покажут работодателям ваши навыки.

Самостоятельное обучение

Полная программа в личном кабинете

129 тем с теорией, примерами и практикой. Первые 4 — бесплатно, остальные — по подписке.

Введение и алгоритмическое мышлениетем: 5
  1. Что такое алгоритм
  2. Псевдокод и блок-схемы
  3. Корректность и инварианты цикла
  4. Тестирование алгоритмов и граничные случаи
  5. Измерение времени: timeit и perf_counter
Сложность алгоритмовтем: 10
  1. Зачем считать сложность
  2. Нотации Big-O, Ω и Θ
  3. Классы роста: от O(1) до O(n!)
  4. Правила подсчёта: циклы, вложенность, последовательные блоки
  5. Лучший, худший и средний случай
  6. Сложность по памяти
  7. Амортизированный анализ
  8. Сложность встроенных операций Python
  9. Анализ рекурсии и основная теорема
  10. Эмпирическая проверка: замеры против теории
Рекурсия и подходы к решению задачтем: 10
  1. Рекурсия и стек вызовов
  2. Мемоизация и lru_cache
  3. Перебор с возвратом: перестановки и подмножества
  4. Перебор с возвратом: N ферзей и судоку
  5. Разделяй и властвуй
  6. Жадные алгоритмы
  7. Динамическое программирование: введение
  8. ДП: задача о рюкзаке
  9. ДП: наибольшая общая подпоследовательность
  10. ДП: расстояние редактирования (Левенштейн)
Массивы и строки как структурытем: 6
  1. Массив в памяти и динамический массив
  2. Два указателя
  3. Скользящее окно
  4. Префиксные суммы
  5. Задачи на строки: палиндромы и анаграммы
  6. Разбор и сжатие строк
Алгоритмы поискатем: 8
  1. Линейный поиск
  2. Бинарный поиск
  3. Ловушки бинарного поиска и bisect
  4. Бинарный поиск по ответу
  5. Интерполяционный и прыжковый поиск
  6. Поиск подстроки: наивный и Рабина–Карпа
  7. Алгоритм КМП
  8. Quickselect: k-й по порядку элемент
Алгоритмы сортировкитем: 11
  1. Свойства сортировок: устойчивость и in-place
  2. Сортировка пузырьком
  3. Сортировка выбором
  4. Сортировка вставками
  5. Сортировка Шелла
  6. Сортировка слиянием
  7. Быстрая сортировка
  8. Пирамидальная сортировка
  9. Сортировка подсчётом, поразрядная и корзинами
  10. Timsort, sorted и key
  11. Сравнение сортировок на замерах
Абстрактные типы данныхтем: 4
  1. ADT и структура данных: интерфейс и реализация
  2. Каталог ADT: список, стек, очередь, дек, очередь с приоритетом, множество, словарь, граф
  3. Оформление ADT в Python: ABC, Protocol и тесты контракта
  4. Как выбрать структуру данных под задачу
Линейные структурытем: 8
  1. Односвязный список
  2. Двусвязный и циклический списки
  3. Стек и его реализация
  4. Применения стека: скобки, RPN, undo
  5. Очередь: на списке, на связном списке, кольцевой буфер
  6. Дек и монотонная очередь
  7. Очередь с приоритетом: введение
  8. Задачи на связные списки
Хеш-структурытем: 7
  1. Хеш-функции
  2. Хеш-таблица: метод цепочек
  3. Открытая адресация
  4. Коэффициент заполнения и рехеширование
  5. Как устроены dict и set в CPython
  6. Фильтр Блума
  7. Проектирование LRU-кэша
Деревьятем: 11
  1. Деревья: термины и обходы
  2. Двоичное дерево: реализация и свойства
  3. Бинарное дерево поиска: вставка и поиск
  4. BST: удаление узла
  5. AVL-деревья
  6. Красно-чёрные деревья: обзор
  7. B-деревья и базы данных
  8. Куча и heapq
  9. Префиксное дерево (trie)
  10. Дерево отрезков и дерево Фенвика
  11. Задачи на деревья
Графытем: 11
  1. Представление графов
  2. Поиск в глубину (DFS)
  3. Поиск в ширину (BFS)
  4. Алгоритм Дейкстры
  5. Беллман–Форд и Флойд–Уоршелл
  6. Алгоритм A*
  7. Топологическая сортировка
  8. Система непересекающихся множеств (Union-Find)
  9. Минимальное остовное дерево: Краскал и Прим
  10. Поиск циклов в графах
  11. Применение графов: карты, зависимости, соцсети
Объектно-ориентированный дизайнтем: 26
  1. От ООП к дизайну: связность и зацепление
  2. UML: диаграммы классов и последовательностей
  3. SOLID: принцип единственной ответственности (SRP)
  4. SOLID: принцип открытости/закрытости (OCP)
  5. SOLID: принцип подстановки Лисков (LSP)
  6. SOLID: принцип разделения интерфейсов (ISP)
  7. SOLID: принцип инверсии зависимостей (DIP)
  8. Композиция против наследования: решения в дизайне
  9. Порождающие паттерны: фабричный метод и абстрактная фабрика
  10. Паттерн Строитель (Builder)
  11. Одиночка (Singleton) и его проблемы
  12. Паттерн Адаптер
  13. Паттерн Декоратор (структурный)
  14. Паттерн Фасад
  15. Паттерн Стратегия
  16. Паттерн Наблюдатель
  17. Паттерн Команда
  18. Паттерн Состояние
  19. Паттерн Итератор
  20. Антипаттерны проектирования
  21. DRY, KISS, YAGNI и закон Деметры
  22. Слои и чистая архитектура
  23. Задача на проектирование: парковка
  24. Задача на проектирование: лифт
  25. Задача на проектирование: библиотека
  26. Задача на проектирование: банкомат
Практика и собеседованиятем: 7
  1. Шаблоны решения задач
  2. Разбор задач: лёгкий уровень
  3. Разбор задач: средний уровень
  4. Разбор задач: сложный уровень
  5. Как проходить алгоритмическое собеседование
  6. Оценка сложности собственного решения
  7. Типичные ошибки в алгоритмических задачах
Итоговый проекттем: 5
  1. Проект: визуализатор сортировок
  2. Проект: планировщик маршрутов на графе
  3. Проект: автодополнение на trie
  4. Проект: свой dict и LRU-кэш
  5. Итоговый тест по курсу

Группа и индивидуальные занятия — это преподаватель, проверка заданий и сертификат. Подписка — материалы, тренажёры и прогресс в своём темпе, без обратной связи преподавателя.

Курс Алгоритмы и структуры данных: как записаться

Заполните форму — сообщим дату старта ближайшей группы, расписание и условия оплаты. А можно сначала прийти на бесплатный пробный урок.

WhatsApp