как PRO за 5 месяцев

Курс для разработчиков, готовых выйти на новый уровень в карьере за короткий срок

формат
Онлайн
дата старта
скоро

Изучи алгоритмы
и структуры данных

Уровень Pro – продвинутый уровень
Алгоритмы и структуры данных
/
/
Уверенно решать хитрые алгоритмические задачи на собеседованиях
Достоверно считать временную сложность алгоритма
Смело браться за сложные проекты и находить элегантные решения
01
02
03
Стек или список?
Как мне снизить затраты по памяти?
Какая здесь временная сложность?
Подойдёт ли тут бинарный поиск?
Как избежать коллизий в моем хешировании?
Можно ли здесь применить алгоритм Дейкстры?
Дерево отрезков или корневая декомпозиция?
Можно ли здесь применить алгоритм Дейкстры?
Дерево отрезков или корневая декомпозиция?
Стек или список?
Как мне снизить затраты по памяти?
Ориентированный граф или неориентированный граф?
Можно ли здесь применить алгоритм Дейкстры?
Дерево отрезков или корневая декомпозиция?
Ориентированный граф или неориентированный граф?
Какая здесь временная сложность?
Подойдёт ли тут бинарный поиск?
Как избежать коллизий в моем хешировании?
Какая здесь временная сложность?
Подойдёт ли тут бинарный поиск?
Как избежать коллизий в моем хешировании?
Посмотрите по-новому на знакомые алгоритмы и структуры данных, освежите знания
Научитесь воспроизводить
с нуля любой алгоритм
и писать собственные

Начнете уверенно себя чувствовать при прохождении технических собеседований в любые
IT-компании мира

После обучения на курсе вы:

Сможете сравнивать структуры данных
и выбирать оптимальный вариант для конкретной задачи
Поймете как увеличивать производительность кода благодаря пониманию временной сложности и затратам по памяти
Начинающим разработчикам, чтобы заложить фундамент для успешных технических собеседований в сильные компании
Разработчикам, которые стремятся на уровень выше - на позиции Middle и Senior. Получите выгодное преимущество на фоне других кандидатов

Кому подойдет курс

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

Фундаментальная теоретическая база

Много практики и решения алгоритмических задач

Что вас ждет на курсе

Подготовка к техническому собеседованию

Прокачаетесь
в математике

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

Домашние задания и обратная связь

Будете самостоятельно решать задачи с установленным дедлайном и получать комментарии ментора. На онлайн-вебинарах сможете задавать вопросы преподавателю.

Алгоритмическое мышление крутой навык, который никогда не оставит без интересных проектов

Глубокое знание алгоритмов и структур данных позволит вам создавать продукты будущего.

Топ-менеджеры крупных IT-компаний в свое время начинали с олимпиадного программирования.

Технологические компании ценят сотрудников с алгоритмическим мышлением.
Персонального координатора
Личные консультации
Помощь и поддержку
Дружное сообщество
который следит за вашим прогрессом и остается с вами на связи весь курс
с менторами и постоянная обратная связь по проделанной работе
по всем учебным вопросам в течение 1 часа в рабочее время
которое общается 24/7 в Slack и на вебинарах. Групповые проекты и работа в командах

Чтобы обучение было эффективным, мы обеспечиваем вам

Линейные структуры данных.
3 недели

Краткая программа курса

Введение в алгоритмы и структуры данных
Определение асимптотики, оценка времени работы программы, оценка затраченной памяти
Односвязные и двусвязные списки, работа с ними
01
Практика
Реализация игрушечного менеджера памяти при помощи LRU и LFU кэша

Рекурсия и комбинаторика.
1 неделя

Рекурсивные переборы, переборы всех комбинаторных объектов
Перестановки, разбиение на слагаемые, строки Фибоначчи
Перебор битовых масок
02
Практика
Упорядочивание данных во внешней памяти и поиск по ним. Программа для решения кроссвордов судоку

Сортировки и поиск.
2 недели

Сортировки, использование встроенной функции sort в языках
Алгоритм бинарного поиска. Бинарный поиск по ответу
03
Практика
Сортировка больших файлов с данными, потенциально не помещающихся в оперативную память

Хеширование.
3 недели

Принцип хеширования. Парадокс дней рождения. Известные алгоритмы хеширования.
Полиномиальное хеширование
Алгоритмы на строках
Хеш-таблица, встроенная реализация, собственная реализация
04
Практика
Генератор magnet-ссылок для файлов и папок

Графы.
3 недели

Графы. Представление графов и алгоритм DFS
Графы. Задача о поиске кратчайшего пути в графе, алгоритм BFS
Алгоритм Дейкстры
05
Практика
Travel planner - постройка кратчайшего маршрута для путешествия

Деревья.
5 недель

Графы. Представление деревьев. Алгоритмы на деревьях
Кучи
Бинарное дерево поиска, работа с ним
Красно-черное дерево, AVL-дерево
Деревья Хаффмана
06
Практика
Реализация алгоритма Liquid Resize

Карьерный блок.
2 недели

Фишки прохождения технических собеседований в крупные IT-компании
Mock-интервью «Собеседование в Amazon»

Получите подробную программу курса

Динамическое программирование.
2 недели

Задачи динамического программирования. Базовые применения. Префиксные суммы
Задачи динамического программирования. Сложные задачи. Задача о рюкзаке
Конечные автоматы. Регулярные выражения
07
Практика
Архиватор файлов
08
Эмуляция собеседования, используемого в учебных целях и максимально приближенное к реальному собеседованию

Вы будете учиться у топовых специалистов

Павел Труфанов
Преподаватель олимпиадного программирования, призер всероссийских олимпиад по программированию.
Преподаватель школ Летово и Фоксфорд, преподаватель выездных школ МФТИ
Дмитрий Никулин
Старший разработчик в команде беспилотных автомобилей Яндекса. Ассистент на онлайн-курсе по reinforcement learning от ВШЭ на Coursera. В прошлом разработчик-исследователь в Samsung AI Center
Арслан Акназаров
Ментор курса, призёр и участник множества олимпиад, в том числе заключительного этапа Всероссийской олимпиады школьников по информатике. Android-разработчик
Сейчас преподает алгоритмы и структуры данных на различных сборах.
Светлана Радченко
Обучалась в «Школе 21», сейчас учит подростков олимпиадному программированию в ЛКЛ (г. Пермь).
Также вела занятия по курсу алгоритмов и структур данных в ведущих школах г. Москвы. Преподает на двухгодичном курсе программирования на Python в Яндекс.Лицее
Сергей Цаплин
Бэкенд-разработчик VKontakte. Работал в Huawei RRI. Стажировался в World Quant и Google. Финалист студенческого чемпионата мира по программированию и VK Cup. Преподает алгоритмы и структуры данных старшим школьникам, руководит учебным направлением в пермском летнем компьютерном лагере.
Никита Мещеряков
3D Rendering Engineer в Huawei. Призер всесибирской олимпиады по программированию.
Умение программировать на 1 из языков: С++, Java, Python
Понимание принципов ООП
Базовые знания математики уровня старших классов
01
02
03

Требования к участникам курса

Почему так?
Чтобы выполнять домашние задания и создавать проекты
Оплата сразу со скидкой

Два варианта оплаты обучения

54 000
{{price_before_wo_installment}} ₽
Цена фиксированная при оплате онлайн одним платежом.
Оплата сразу после регистрации.
Осталось 5 мест
Оплата в рассрочку
4500 ₽/мес.
{{price_before}} ₽
При покупке в рассрочку на 12 месяцев от наших партнеров.
Оплата сразу после регистрации.
Осталось 5 мест
Записаться на курс c оплатой сразу
Записаться на курс c оплатой в рассрочку

Часто задаваемые вопросы

Почему на этом курсе нельзя учиться с нуля?
Курс создан специально для разработчиков с опытом, чтобы прокачать имеющиеся знания. Усваивать материал и выполнять домашние задания без подготовки не получится. 
В каких областях применяются алгоритмы и структуры данных?
Классические структуры данных есть везде. Любой, кто писал на C++, сталкивался с vector и unordered_map, предпочитающие Java знают ArrayList и HashMap как свои пять пальцев, а адепты Python не могут пройти мимо list и dict. Это базовые кирпичики, которые есть в любой программе. То же касается и алгоритмов: сортировка в представлении не нуждается, бинарный поиск незаменим всегда, когда в упорядоченном массиве данных нужно что-то найти, а графы появляются в областях от конвейерной обработки мультимедийных данных до менеджмента установленных пакетов. Понимание устройства алгоритмов и структур данных позволяет заглянуть под капот современных программ и понять, что у них внутри.
На каком языке программирования проходит обучение?
Теория — без привязки к языку программирования. Примеры реализации алгоритмов и практические задания — на C++, Java, Python (список дополняется).
Смогу ли я совмещать обучение с работой/учебой?
Да, обучение на курсе предполагает занятость 10-12 часов в неделю, что соответствует 1,5-2 часа в день. Большинство наших студентов совмещает обучение на курсе с основной занятостью и успешно доходят до конца.
Где будет проходить обучение и что мне нужно, чтобы учиться?
Курс проходит в онлайн-формате на нашей обучающей платформе. Это значит, что каждую неделю вы изучаете материалы и выполняете домашние задания. Проверка заданий проходит в два этапа: автоматические тест-кейсы проверяют код на работоспособность и отсутствие багов, а ментор дает обратную связь по выполненным проектам.
Для обучения вам нужен ноутбук с доступом в Интернет.