АЛГОРИТМЫ И СТРУКТУРЫ ДАННЫХ
Изучите алгоритмы, чтобы оптимизировать код, быстро решать нестандартные задачи и масштабировать системы без костылей и багов.
Артем Верещака
Platform Software Engineer у
Speechify
former Tech Lead в Bolt

ЭТОТ КУРС ДЛЯ ВАС, ЕСЛИ ВЫ ХОТИТЕ:
о курсе
- Продолжительность:
10 недель
- Языки для практики:
JavaScript, Java и Python
Комплексный курс о том, как находить нестандартные решения в сложных рабочих задачах, оптимизировать строки программного кода и масштабировать IT-системы, опираясь на знания по алгоритмике.
В ПРОГРАММУ КУРСА ВХОДЯТ
Программа
-
01 блок
ВВЕДЕНИЕ
- Знакомство с курсом и лектором
- Введение в алгоритмы и структуры данных
Результаты: узнаете, что такое структуры данных и алгоритмы. Поймете, что такое сложность алгоритмов и как ее считать.
-
02 блок
МАССИВЫ ДАННЫХ
- Статические и динамические массивы данных
- LeetCode Problems Solving: массивы
- Case Study: массивы
Результаты: узнаете, что такое массивы и как с ними работать. Научитесь реализовывать типовые задачи на массивах, применять операции и действия над массивами, определять временную и пространственную сложность при работе с массивами. Сможете решать алгоритмические задачи разной сложности.
-
03 блок
СПИСКИ, СТЕКИ, ОЧЕРЕДИ, РЕКУРСИЯ
- Связанный список
- Создание стека и очереди поверх массива или списка
- Deque и ArrayDeque
- LeetCode Problems Solving: списки, стеки, очереди
- Case Study: списки, стеки, очереди
- Основы рекурсии
- Хвостовая рекурсия
- LeetCode Problems Solving: список и рекурсия
Результаты: узнаете, что такое связанные списки, стеки, очереди и как с ними работать. Научитесь осуществлять операции над ними, решать типовые задачи со связанными списками, по стекам и очередям, а также алгоритмические задачи разной сложности.
-
04 блок
АЛГОРИТМЫ ПОИСКА И СОРТИРОВКИ
- Алгоритмы поиска
- LeetCode Problems Solving: алгоритмы поиска
- Алгоритмы сортировки
- Сортировка слиянием и быстрая сортировка
- Сортировка: гибридные подходы
- LeetCode Problems Solving: алгоритмы сортировки
- Case Study: алгоритмы поиска и сортировки
Результаты: узнаете об основных алгоритмах поиска и сортировки и их реализации. Ознакомитесь с библиотеками сортировки. Научитесь реализовывать задачи по применению бинарного алгоритма и сортировать массивы данных. Сможете определить, какой алгоритм лучше подходит для решения конкретной задачи.
-
05 блок
ДЕРЕВЬЯ КАК СТРУКТУРЫ ДАННЫХ
- Дерево как структура данных
- Бинарное дерево поиска
- LeetCode Problems Solving: деревья
- Case Study: деревья
- Сбалансированные деревья
- Heap как структура данных
- Специальные деревья
- LeetCode Problems Solving: Heap и специальные деревья
- Case Study: деревья Advanced
Результаты: узнаете, какие бывают деревья, и научитесь находить общего предка, диаметр дерева, глубину узла и сумму ветвей. Поработаете с деревом поиска. Научитесь реализовывать обход дерева и поиск по нему. Узнаете о сбалансированных деревьях. Научитесь работать со специальными деревьями и решать классические задачи с использованием деревьев.
-
06 блок
ГРАФЫ КАК СТРУКТУРЫ ДАННЫХ
- Графы. Part 1
- Графы. Part 2
- LeetCode Problems Solving: графы
- Case Study: графы
Результаты: узнаете, какие бывают графы, как их задавать посредством матрицы или списка смежности. Научитесь реализовывать алгоритмы обхода и поиска, нахождения кратчайшего пути. Сможете решать типовые задачи на графы.
-
07 блок
ХЭШ-ТАБЛИЦА
- Хэш-таблица
- LeetCode Problems Solving: хэш-таблица
- Case Study: хэш-таблица
Результаты: узнаете о хэш-функциях и их назначении, хэш-таблицах и их свойствах. Научитесь применять хэш-таблицы и хэш-функции для решения задач.
-
08 блок
ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ЖАДНЫЕ АЛГОРИТМЫ
- Динамическое программирование
- LeetCode Problems Solving: динамическое программирование
- Жадные алгоритмы
- Case Study: динамическое программирование и жадные алгоритмы
Результаты: узнаете, что такое динамическое программирование, научитесь определять простые задачи на динамику и находить решения для них. Сможете применять динамическое программирование, оптимизировать time and space complexity, определять и выполнять задачи на динамику с разными подходами. Узнаете, что такое жадные алгоритмы, и научитесь решать проблемы с их помощью.
-
09 блок
ИТОГИ
- Подготовка к техническому интервью
- Итоги — Q&A
Результаты: узнаете, из каких этапов состоит кодинг интервью и как к нему подготовиться. Научитесь определить классические подходы и задания на собеседовании, реализовывать задачи во время интервью с ограниченными ресурсами и использовать информацию из описания для быстрого поиска решения. Сможете декомпозировать задачу.
лектор
Артем Верещака
Platform Software Engineer в Speechify, former Tech Lead в Bolt
-
техлид команды Rental Micromobility, проводит технические интервью для инженеров и разработчиков в Bolt
-
участвовал в написании бэкенда с нуля для аренды самокатов и велосипедов
-
вместе с командой спроектировал и запустил систему каршеринга [в тестовом режиме в Таллинне, Эстония]
-
занимался разработкой расширенной поисковой системы для рынка недвижимости Великобритании в OneDome
-
разрабатывал веб-приложение DB Compliance для внутреннего использования аудиторами в Luxoft
-
в течение трех лет успешно выпустил более 250 студентов курса «Алгоритмы и структуры данных»
РЕГИСТРАЦИЯ
Научитесь автоматизировать и ускорять рабочие задачи благодаря алгоритмам