Алгоритмы и структуры данных для разработчиков
Алгоритмы и структуры данных — непростая область знаний, нужная при этом и дата-сайентистам, и аналитикам, и программистам, а также представителям других специальностей. Поэтому мы решили открыть новый пятимесячный курс для разработчиков уровня junior и middle.
Что нужно для поступления
- умение программировать, опыт работы с одним или несколькими популярными языками;
- знания математики на уровне первого курса технического университета;
- базовое понимание алгоритмов и структур данных и умение работать с ними;
- возможность уделять обучению от 10 часов в неделю.
Что предстоит изучить
Обучение длится пять месяцев — в совокупности это 70 часов теории и 80 часов практики. Программа состоит из пяти блоков.
Первый месяц. Знакомство с алгоритмами и структурами данных, изучение основных операций и практика выполнения реальных задач с бинарным поиском.
- Асимптотическая сложность алгоритмов. O-нотация.
- Алгоритм Евклида. Решето Эратосфена.
- Линейный и бинарный поиск.
- Понятие структуры данных. Связный список.
- Массивы и два указателя.
- Стек и очередь.
Второй месяц. Базовые алгоритмы. Знакомство с жадными алгоритмами, создание рекурсивных алгоритмов и решение задач с популярными методами сортировок.
- Рекурсия и оценка сложности рекурсивных алгоритмов.
- Сортировка пузырьком, вставками и выбором.
- Быстрая сортировка. Сортировка слиянием.
- Сортировка подсчётом.
- Понятие жадного алгоритма.
Третий месяц. Графы — освоение дерева поиска, обучение решению задач с использованием специальных деревьев. Знакомство с понятием графов, их видами и способами представления в памяти.
- Бинарные деревья.
- Очередь с приоритетом и пирамидальная сортировка.
- Сбалансированные (АВЛ) деревья.
- Специальные деревья.
- Определение графа. Способы представления графа в памяти.
- Обход в ширину и глубину. Компонент связности.
- Алгоритмы поиска кратчайшего пути в графе A*.
- Построение минимального остовного дерева.
Четвёртый месяц. Хеш-таблицы и алгоритмы на строках — изучение хеш-функций и проблемы коллизий. Рассмотрение основных алгоритмов и структур данных для работы со строками.
- Хеширование, отображение и хеш-функции.
- Способы разрешения коллизий и открытая адресация.
- Хеш-таблицы.
- Префиксное дерево.
- Алгоритмы поиска подстроки в строке.
- Алгоритм Хаффмана.
Пятый месяц. Знакомство с динамическим программированием, вероятностными алгоритмами, фильтром Блума и HyperLogLog. Задачи на двумерную динамику.
- Динамическое программирование.
- Одномерная динамика.
- Двумерная динамика.
- Понятие вероятностных алгоритмов и фильтр Блума.
- HyperLogLog.
За время обучения вы создадите репозиторий и наполните его реализациями широкого спектра алгоритмов и структур данных. Это будет своеобразным дипломным проектом на курсе. Репозиторий украсит ваше портфолио и поможет в прохождении собеседований.
Какие навыки вы получите во время обучения
- Фундаментальные знания классических алгоритмов.
- Понимание практической значимости использования алгоритмов для решения рабочих задач.
- Умение оценивать сложность работы алгоритмов и структур данных.
- Опыт реализации классических алгоритмов.
- Опыт и навыки для решения алгоритмических задач.
Новые знания помогут вам повысить квалификацию и решать более сложные задачи. После курса вы смело можете рассчитывать на более высокую зарплату.
Преподаватели
Илья Лыско, дата-сайентист в Lamoda. Разрабатывает решения с применением машинного обучения в ритейле. Занимается рекомендательными системами, помогая пользователям найти и подобрать нужные товары.
Сергей Романчук, технический директор в Forly Capital. Руководит разработкой аналитических алгоритмов прогнозирования финансовых рынков криптовалюты Forly Capital. Раньше работал инженером-исследователем в концерне «Калашников», занимался разработкой средств сбора данных о ICO-проектах с последующим скорингом в Squilla LLC.
Алексей Петренко, Python Developer, фрилансер. Разрабатывает IT-решения по автоматизации процессов учёта наличия и движения людей и технических средств для Министерства обороны РФ. За 20 лет в IT написал программы на более чем 30 языках программирования.
Получить дополнительную информацию и оставить заявку на обучение вы можете на странице курса.