Несколько дней новогоднего волшебства:
Успейте начать обучение в 2018-ом году со скидкой до 30%!
Выбрать курс

Алгоритмы для разработчиков

Курс о разработке и использовании разнообразных алгоритмов и структур данных
Зачем нужно тестирование?

Длительность

5 месяцев

Начало

24 декабря

Занятия

Пн 20:00, Ср 20:00

Общая стоимость

50 000 ₽ 35 000 ₽

В месяц

12 500 ₽ 10 125₽

В кредит:

12500 ₽ в месяц

Хочу дешевле
Общая стоимость
50 000 ₽ 35 000 ₽
В месяц: 12 500 ₽ 10 125 ₽
В кредит: 12500 ₽
в месяц
Продолжительность
5 месяцев, 4 часа в неделю
Пн 20:00, Ср 20:00
Начало занятий
24 декабря
Что даст вам этот курс

  • Понимание принципов работы разнообразных алгоритмов, структур данных

  • Умение использовать готовые алгоритмы и структуры данных и создавать свои под поставленную задачу

  • Владение техникой вычисления сложности алгоритмов

  • Освоение продвинутых структур данных: хэш-таблиц, графов, деревьев поиска и многих других

  • Умение решать алгебраические задачи и задачи динамического программирования


Знание классических алгоритмов и структур данных — обязательное требование, которое предъявляют брендовые IT-компании к претендентам на вакансию Middle developer.

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

Курс предназначен для разработчиков, владеющих разными языками программирования. Он подходит и для Middle-специалистов, которые застоялись на месте, и для «джуниоров», которые хотят быстрее вырасти как профессионалы и избежать многих ошибок. И, конечно, курс по алгоритмам и структурам данных просто жизненно необходим всем тем, кто прогулял или недостаточно серьёзно отнёсся к занятиям по алгоритмизации в университете ;-)

И, конечно, разбираем примеры алгоритмов и делаем домашние задания не на псевдокоде, а на одном из языков: С++, Python, Java.


50+ работодателей ждут наших выпускников

Большое количество практических заданий

Всё о курсе «Алгоритмы для разработчиков», 19 декабря в 20:00
День Открытых Дверей — отличная возможность узнать подробнее о программе курса, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения. Формат проведения: онлайн-трансляция; участие свободное!
Ведет
Михаил
Степанов
Без алгоритмов и структур данных языки программирования мертвы. Это именно то, что вдыхает жизнь в Java, C++ и Python
Михаил Горшков
Преподаватель курса
Без алгоритмов и структур данных языки программирования мертвы. Это именно то, что вдыхает жизнь в Java, C++ и Python
Михаил Горшков
Преподаватель курса
Преподаватели
Михаил Горшков
Лаборатория Касперского
Михаил Степанов
Jet Infosystems
Валерий Мазнев
СТО в Mobile Angels
Программирую на С++ и Python в течение 18 лет, как хобби — играю на фортепиано. Работаю в Лаборатории Касперского, окончил курс по С++ в Otus и занимаюсь на курсе DataScience. Сейчас являюсь наставником на курсе С++. Специально для проекта OTUS создал программу "Алгоритмы для разработчиков".

Этот курс для тех, кто не проходил или пропустил алгоритмы в своем ВУЗе, а также для всех программистов, интересующихся данной темой: от любителей до профессионалов. Вы узнаете о популярных алгоритмах и структурах данных, научитесь их реализовывать и применять, сможете претендовать на вакансии в лучшие компании России и всего мира: Яндекс, Google, Facebook!

Присоединяйтесь, будет круто!
Михаил работает в отделе машинного обучения компании Jet Infosystems. Занимается проектами по агрегации отзывов, по анализу и оптимизации производства крупных промышленных компаний. В data science пришел из промышленного программирования на Python, где разрабатывал код для "толстого клиента" в проекте по созданию "умных окон".
Ранее учил талантливых школьников программированию, машинному обучению и программированию учебных моделей спутников.

Область интересов: data science, математика, космос и Python.
Мой взгляд на программирование: с великой силой приходит великая ответственность.
Опытный инженер-программист, системный аналитик, руководитель IT-проектов. Общий бэкграунд в сфере информационных технологий превышает 30 лет. Программировал на многих языках, включая Java, JavaScript, C#, C/C++, Pascal, Delphi, Basic, SWIFT, PHP, HTML, SQL, Fortran, Assembler (IBM System 370).

Окончил Московский Авиационный Институт (МАИ) по специальности «Инженер-системотехник». Имеет обширные знания по архитектуре software и hardware, владеет методиками проектирования, разработки и тестирования ПО: от драйверов устройств до прикладных систем. Участвовал в реализации крупных IT-проектов, неоднократно выступал на отраслевых конференциях и семинарах. Имеет навыки преподавательской деятельности.
Преподаватели
Михаил Горшков
Лаборатория Касперского
Программирую на С++ и Python в течение 18 лет, как хобби — играю на фортепиано. Работаю в Лаборатории Касперского, окончил курс по С++ в Otus и занимаюсь на курсе DataScience. Сейчас являюсь наставником на курсе С++. Специально для проекта OTUS создал программу "Алгоритмы для разработчиков".

Этот курс для тех, кто не проходил или пропустил алгоритмы в своем ВУЗе, а также для всех программистов, интересующихся данной темой: от любителей до профессионалов. Вы узнаете о популярных алгоритмах и структурах данных, научитесь их реализовывать и применять, сможете претендовать на вакансии в лучшие компании России и всего мира: Яндекс, Google, Facebook!

Присоединяйтесь, будет круто!
Михаил Степанов
Jet Infosystems
Михаил работает в отделе машинного обучения компании Jet Infosystems. Занимается проектами по агрегации отзывов, по анализу и оптимизации производства крупных промышленных компаний. В data science пришел из промышленного программирования на Python, где разрабатывал код для "толстого клиента" в проекте по созданию "умных окон".
Ранее учил талантливых школьников программированию, машинному обучению и программированию учебных моделей спутников.

Область интересов: data science, математика, космос и Python.
Мой взгляд на программирование: с великой силой приходит великая ответственность.
Валерий Мазнев
СТО в Mobile Angels
Опытный инженер-программист, системный аналитик, руководитель IT-проектов. Общий бэкграунд в сфере информационных технологий превышает 30 лет. Программировал на многих языках, включая Java, JavaScript, C#, C/C++, Pascal, Delphi, Basic, SWIFT, PHP, HTML, SQL, Fortran, Assembler (IBM System 370).

Окончил Московский Авиационный Институт (МАИ) по специальности «Инженер-системотехник». Имеет обширные знания по архитектуре software и hardware, владеет методиками проектирования, разработки и тестирования ПО: от драйверов устройств до прикладных систем. Участвовал в реализации крупных IT-проектов, неоднократно выступал на отраслевых конференциях и семинарах. Имеет навыки преподавательской деятельности.
Минимальные знания
  • Опыт программирования на одном из следующих языков: С++, Python, Java (начальный или средний уровень)
  • Знание элементарной математики в объёме средней школы
  • Минимальное знание алгоритмов и структур данных и желание развиваться в области их изучения
Процесс обучения
Обучение проходит онлайн, в формате вебинаров. Длительность этого курса составляет 5 месяцев, финальный месяц отводится для выполнения проектной работы и оттачивания полученных навыков.

Расписание занятий включает 2 вебинара в неделю по 2 академических часа и от 2 до 4 часов на домашнюю работу.


Во время обучения слушатель может задавать преподавателю уточняющие вопросы по материалам лекций, домашних заданий и выпускного проекта.
Программа обучения
Модуль 1
Введение в алгоритмы и структуры данных
Модуль 2
Сортировки
Модуль 3
Хэш-таблицы
Модуль 4
Деревья
Модуль 5
Графы
Модуль 6
Алгоритмы на строках
Модуль 7
Динамическое программирование
Модуль 8
Вероятностные алгоритмы и структуры данных
Модуль 9
Проектная работа
Введение в алгоритмы и структуры данных
Введение в алгоритмы, RAM-модель
Студенты смогут оценивать сложность алгоритмов, ознакомятся с эмулятором RAM-машины.
24 декабря, 20:00 — 21:30
Домашние задания: 1
1 Оценка вычислительной сложности алгоритма Евклида.
Запрограммировать алгоритм Евклида при помощи эмулятора RAM.
Дать детальную оценку сложности алгоритма Евклида при помощи эмулятора и опубликовать ее в слаке.
Дать обратную связь в слаке на 2 (два) выполненных задания других участников.
Опционально. Пройти 1 сontest на hackerrank. Прислать ссылку на submission.
Порядок роста функций. Простейшие структуры данных: массив, динамический массив, стек, очередь, очередь с приоритетами, списки, кучи
Студенты ознакомятся с использованием и реализацией простейших структур данных и научатся оценивать сложность алгоритмов.
9 января, 20:00 — 21:30
Домашние задания: 1
1 Реализация простой структуры данных, алгоритма на ней и оценка его сложности
Написать реализацию односвязного списка в jupyter notebook
Сделать два варианта алгоритма его разворота (рекурсия и цикл)
Оценить сложность алгоритмов при помощи нотаций о малое, о большое, омега малое, омега большое, тета
Опубликовать ссылку в слаке
Оценить работу другого студента
Опционально. Пройти 1 сontest на hackerrank. Прислать ссылку на submission.
Алгебраические алгоритмы: алгоритм Евклида, быстрое возведение в степень, решето Эратосфена, быстрое вычисление чисел Фибоначчи
Студенты ознакомятся с использованием и реализацией некоторых популярных алгебраических алгоритмов.
14 января, 20:00 — 21:30
Сортировки
Сортировка вставками, сортировка Шелла, сортировка выбором, пузырьковая сортировка
Студенты освоят алгоритмы сортировки вставками, выбором, пузырьком, сортировку Шелла. По окончании занятия студенты смогут реализовывать и правильно применять данные алгоритмы.
16 января, 20:00 — 21:30
Домашние задания: 1
1 Реализовать указанные алгоритмы сортировки и сделать их анализ
Реализовать алгоритмы сортировки вставками, выбором, пузырьком, merge sort, timsort.
Опционально - сравнить со стандартной реализацией по времени работы
Опционально - доказать корректность алгоритмов
Выложить ссылки в слак
Сделать ревью на работу других студентов
Опционально. Пройти 1 сontest на hackerrank. Прислать ссылку на submission.
Пирамидальная сортировка (heap sort), tree sort
Студенты смогут реализовывать и применять пирамидальную сортировку, tree sort.
23 января, 20:00 — 21:30
Сортировка слиянием, timsort. Быстрая сортировка
Студенты освоят и смогут реализовать алгоритмы быстрой сортировки, сортировки слиянием и timsort.
28 января, 20:00 — 21:30
Домашние задания: 1
1 Реализовать указанные алгоритмы и сделать их анализ
Реализовать алгоритмы heap sort, tree sort, быстрой сортировки.
Опционально - доказать корректность алгоритмов.
Выложить ссылку на реализацию в слак.
Сделать ревью на работу другого студента.
Опционально. Пройти 1 сontest на hackerrank. Прислать ссылку на submission.
Сортировка подсчетом, поразрядная сортировка, блочная сортировка (bucket sort)
Студенты освоят и смогут реализовать сортировку подсчетом, поразрядную сортировку, блочную сортировку.
30 января, 20:00 — 21:30
Медианы и порядковые статистики
Студенты научатся реализовывать алгоритмы для нахождения медианы и порядковых статистик.
4 февраля, 20:00 — 21:30
Домашние задания: 1
1 Реализовать указанные алгоритмы и сделать их анализ
Реализовать алгоритмы сортировки подсчетом, поразрядной сортировки, нахождения медиан и порядковых статистик
Опционально доказать корректность
Выложить в слак
Сделать ревью на работу другого студента
Опционально. Пройти 1 сontest на hackerrank. Прислать ссылку на submission.
Хэш-таблицы
Таблицы с прямой адресацией. Хэш-таблицы, хэш-функции. Метод цепочек (chaining).
Студенты смогут реализовывать хэш-таблицы с прямой адресацией, а также изучат работу хэш-функций и хэш-таблиц. Борьба с коллизиями будет разобрана на примере метода цепочек.
6 февраля, 20:00 — 21:30
Открытая адресация. Стратегии поиска.
Студенты смогут реализовывать хэш-таблицы с открытой адресацией. Будут рассмотрены различные стратегии поиска.
11 февраля, 20:00 — 21:30
Универсальное и идеальное хэширование.
Будет рассмотрено универсальное и идеальное хеширование, области их применения.
13 февраля, 20:00 — 21:30
Домашние задания: 1
1 Реализация хэш-таблицы с открытой адресацией, анализ реализации
Реализовать хэш-таблицу с открытой адресацией, вычислить время работы при вставке-поиске
Выложить в слак
Сделать ревью работы другого студента
Опционально. Пройти 1 сontest на hackerrank. Прислать ссылку на submission.
Деревья
Двоичные деревья поиска, декартовы деревья
Студенты освоят и смогут применять двоичные деревья поиска и декартовы деревья.
18 февраля, 20:00 — 21:30
Красно-черные деревья, расширяющиеся деревья, АВЛ-деревья
Студенты освоят и смогут применять красно-черные деревья, расширяющиеся деревья, АВЛ-деревья.
20 февраля, 20:00 — 21:30
Домашние задания: 1
1 Реализация красно-чёрного дерева, вставки и поиска
Реализовать самостоятельно красно-черное дерево, вставку и поиск на нём, замерить время вставки-поиска
Выложить в слак
Опционально. Сделать ревью работы другого студента
Опционально. Пройти 1 сontest на hackerrank. Прислать ссылку на submission.
B-деревья, B+-деревья. Деревья отрезков
Студенты освоят и смогут применять B-деревья и В+-деревья. Ознакомятся с деревьями отрезков.
25 февраля, 20:00 — 21:30
Графы
Поиск в ширину. Поиск в глубину, поиск компонент сильной связности. Алгоритм Косарайю.
Студенты освоят, смогут реализовывать и применять поиск в ширину и поиск в глубину. Будут разобраны алгоритмы поиска компонент сильной связности.
27 февраля, 20:00 — 21:30
Топологическая сортировка
Студенты освоят, смогут реализовывать и применять топологическую сортировку.
6 марта, 20:00 — 21:30
Минимальные остовные деревья. Алгоритмы Крускала и Прима
Студенты освоят, смогут реализовывать и применять алгоритмы нахождения минимальных остовных деревьев.
11 марта, 20:00 — 21:30
Домашние задания: 1
1 Реализовать алгоритмы топологической сортировки и нахождения минимального остовного дерева
Поиск кратчайшего пути в графе. Алгоритм Беллмана-Форда
Студенты освоят, смогут реализовывать и применять алгоритмы поиска кратчайшего пути в графе.
13 марта, 20:00 — 21:30
Алгоритмы Дейкстры, Флойда-Варшалла, Джонсона
Студенты освоят, смогут реализовывать и применять алгоритмы Дейкстры, Флойда-Варшалла, Джонсона.
18 марта, 20:00 — 21:30
Домашние задания: 1
1 Реализовать алгоритм Дейкстры
Heap manager, Garbage collector
Будет рассмотрена работа garbage collector'a на примере современных языков программирования.
Алгоритмы на строках
Алгоритм Бойера-Мура
Студенты освоят, смогут реализовывать и применять алгоритм Бойера-Мура.
20 марта, 20:00 — 21:30
Алгоритм Кнута-Морриса-Пратта
Студенты освоят, смогут реализовывать и применять алгоритм Кнута-Морриса-Пратта.
25 марта, 20:00 — 21:30
Домашние задания: 1
1 Реализовать алгоритмы Бойера-Мура и Кнута-Морриса-Пратта
Алгоритм Ахо-Корасика
Студенты освоят, смогут реализовывать и применять алгоритм Ахо-Корасика.
27 марта, 20:00 — 21:30
Код Хаффмана, алгоритм Лемпела-Зива. Run-length encoding.
Будет разобран run-length encoding (RLE). Студенты освоят кодирование Хаффмана, алгоритм Лемпела-Зива.
3 апреля, 20:00 — 21:30
Шифрование данных, базовые принципы и алгоритмы.
Будут разобраны основные алгоритмы шифрования данных.
Динамическое программирование
Динамическое программирование: вычисление чисел фибоначчи, наибольшая возрастающая подпоследовательность и др.
Студенты освоят и смогут применять метод динамического программирования для решения практических задач.
8 апреля, 20:00 — 21:30
Домашние задания: 1
1 Решить задачу на динамическое программирование
Вероятностные алгоритмы и структуры данных
Фильтр Блума
Студенты освоят, смогут реализовывать и применять фильтр Блума.
10 апреля, 20:00 — 21:30
Алгоритмы MinHash, SimHash
Студенты освоят, смогут реализовывать и применять алгоритмы MinHash, SimHash.
15 апреля, 20:00 — 21:30
Домашние задания: 1
1 Реализовать фильтр Блума, вероятностные алгоритмы
Алгоритмы HyperLogLog, Count-Min Sketch
Студенты освоят, смогут применять и реализовывать алгоритмы HyperLogLog и Count-Min Sketch.
17 апреля, 20:00 — 21:30
Поиск экстремума функции
Потск эстремума функции, основные методы. Многокритериальные задачи, область Поретто, свертка критериев.
Кэширование
Кеширование: структура кеша, стратегии кеширования, кеширование данных из БД, кеширование выполнения функций, кеширование в многопоточных системах
Проектная работа
Урок о проекте
Урок о проекте - какие могут быть проекты, что для этого надо сделать + вопросы по несделанным домашкам.
Промежуточная встреча
Обзор состояния дел по проекту, текущие вопросы студентов по их проектам.
Презентация проектов
Презентация проектов, рефлексия.
Заключительное занятие
Обзор пройденных тем. Студенты вспомнят пройденный материал.
22 апреля, 20:00 — 21:30
Выпускной проект
В рамках курса предусмотрена защита проекта. Это отдельная работа, на выполнение которой отводится последний месяц обучения. Проект включает в себя имплементацию сложного алгоритма и/или сложной структуры данных. При подготовке проектной работы студент может рассчитывать на консультации преподавателя и его экспертные советы.


  • написать кастомную хэш-таблицу

  • реализовать свой менеджер памяти с garbage collector

  • реализовать B-tree индекс для СУБД

  • любая тема на выбор студента, связанная с продвинутыми алгоритмами и структурами данных

Подглядеть
Адресация в хэш-таблицах
Михаил Степанов
После обучения вы

  • получите материалы по всем пройденным занятиям (видеозаписи вебинаров, выполненные домашние задания, выпускной проект)

  • сможете писать рациональный и хорошо структурированный код

  • получите сертификат об окончании курса

  • приобретёте навыки работы с алгоритмами и структурами данных, которые необходимы при реализации сложных проектов в крупных компаниях

  • получите приглашение пройти собеседование в компаниях-партнёрах (в случае успешного обучения)

Ваш сертификат
otus.ru
Константин Константинопольский
успешно закончил курс
«Алгоритмы для разработчиков»
Успешных заданий:
16 из 16
Проектная работа:
Распределённая система сетевого мониторинга
Виталий Чибриков
Генеральный директор
№ 0001
otus.ru
Константин Константинопольский
успешно закончил курс
«Алгоритмы для разработчиков»
Успешных заданий:
16 из 16
Проектная работа:
Распределённая система сетевого мониторинга
Виталий Чибриков
Генеральный директор
№ 0001
Общая стоимость
50 000 ₽ 35 000 ₽
В месяц: 12 500 ₽ 10 125 ₽
В кредит: ₽ в месяц
Продолжительность
5 месяцев
Начало занятий
24 декабря