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

Backend

Практический курс, который поможет развить алгоритмическое мышление и повысить производительность своих программ.

  • Длительность: 5 месяцев,  4 академических часа в неделю (Пн 20:00, Ср 20:00), старт 28 июля
  • Стоимость: 60 000 рублей
  • Страница курса: https://otus.ru/lessons/algorithm/

Что даст вам этот курс

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

В программу входят самые известные прикладные алгоритмы, знание которых, как правило, требуется от претендентов на Middle и Senior-должности в крупных IT-компаниях. А также разбираются способы решения задач олимпиадного уровня.

Для кого этот курс?

Для бэкенд-разработчиков и системных программистов, которые пишут софт и приложения, в т.ч. мобильные. В первую очередь курс призван помочь Junior-специалистам усилить свои фундаментальные навыки программирования.

Особенности курса

  • Интерактивные вебинары. Преподаватели используют современные педагогические методики, чтобы вовлечь студентов в тему и помочь им лучше усвоить знания. Каждое занятие — это заряд алгоритмической энергии, который поможет вам в интенсивном обучении и выполнении самостоятельной работы, а разнообразие тем позволит сохранить запал до конца курса.
  • Глубокое погружение в темы. Каждый алгоритм вы изучите «на пальцах», на конкретных визуальных примерах, исследуете разные способы его реализации. Существует тысячи и тысячи самых разных алгоритмов, на изучение которых можно потратить многие годы. Нет смысла изучать их все сразу, мы ценим ваше время, поэтому отобрали самые важные, интересные и популярные алгоритмы. Вы пройдете такие актуальные темы как битовая арифметика, рекурсия, динамическое программирование, теория графов и др. Модуль 9 посвящен продвинутым алгоритмическим трендам, которые рассчитаны на опытных специалистов.
  • Можно проходить курс на любом языке программирования. На вебинарах преподаватели интерактивно рисуют и демонстрируют, как работает каждый алгоритм, некоторые из них пишем с нуля прямо на уроке, используя C#, Java или Python, после чего вы сможете самостоятельно написать этот алгоритм на вашем любимом языке программирования. Благодаря подробным объяснениям и визуализации, идея каждого алгоритма станет понятна.
  • Свое приложение для автопроверки. Вы напишете свою простую систему тестирования, с помощью которой сможете проверять часть заданий по заготовленным преподавателями тестам.
  • Проектная работа для портфолио. К концу курса вы напишете свое приложение и сможете представлять его на собеседовании. Многие студенты придумывают и реализуют интересные проекты: распознавание рукописных цифр, генерация прохождения лабиринтов, решение заданий судоку и так далее.

Demo Day курса «Алгоритмы и структуры данных», 5 июля в 20:00

Demo Day — отличная возможность задать все вопросы по алгоритмам и структурам данных, узнать подробнее о программе курса, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения.

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

Готовьте вопросы, сдавайте вступительный тест и присоединяйтесь!

Алгоритм сжатия данных — код Хаффмана. Создание Архиватора. День 1, 19 июля в 20:00


На первом занятии бесплатного 2-дневного интенсива мы:

  • поговорим об алгоритмах сжатия данных различными способами,
  • дадим определение префиксного кода,
  • сформулируем правила создания дерева для кода Хаффмана,
  • вручную с визуализацией создадим код для короткого текста,
  • обговорим способы хранения частотной таблицы символов,
  • а также потренируемся восстанавливать сжатую информацию.

Регистрируйтесь сейчас — напомним перед вебинаром!

Алгоритм сжатия данных — код Хаффмана. Создание Архиватора. День 2, 20 июля в 20:00

На втором занятии бесплатного 2-дневного интенсива мы:

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

В конце интенсива мы протестируем работу созданного архиватора на файлах разного типа, сделаем выводы о преимуществах и недостатках префиксного кода Хаффмана.

Регистрируйтесь сейчас — напомним перед вебинаром!

Преподаватели

Михаил Горшков, Лаборатория Касперского

Работаю в Лаборатории Касперского, окончил курс по С++ в Otus и осваиваю область Data Science. Сейчас являюсь наставником на курсе С++. Специально для проекта OTUS создал программу «Алгоритмы для разработчиков». Программирую на С++ и Python в течение 18 лет, как хобби — играю на фортепиано.

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

Присоединяйтесь, будет круто!

Евгений Волосатов

Профессиональный программист. Преподаватель языка Java в колледже.
Автор видеокурсов по C#, Java, PHP

20 лет опыта ведущим программистом в разных фирмах и опыта преподавания в университете, колледже. 6 лет опыта ведения вебинаров и создания видеокурсов.

Три самых крупных завершенных проекта:
PHP. Служба знакомств в интернете — PHP, MySQL, FreeBSD, C/C++
C#. Программа расчёта заработной платы на АЭС — C#, MS-SQL Server
Java. Видеокурс создания игры Сапёр на Java: https://goo.gl/24DgBg

Статьи на Habrahabr:
Как я создавал методику изучения C# — habr.com/post/239825/
Об альтернативном образовании и про C# — habr.com/post/257957/
Изучение C# — Практический подход — habr.com/post/304142/

Участие в IT-конференциях в Литве, призовое место в конкурсе программирования InfoBalt, призовое место на республиканской олимпиаде по математике и информатике

С окончания школы в 1996 году постоянно преподавал информатику в университете, школе, на кружках, в ДДТ, на предприятиях, в колледже. С 2013 года ведет вебинары онлайн, записывает видеокурсы https://www.VideoSharp.info/

В 2002 году закончил Вильнюсский государственный университет по специальности «Магистр математики и информатики», а в 2008 году по специальности «Учитель профессии».

«В детстве меня вдохновила «Занимательная ***» серия книг Я. И. Перельмана. Считаю своим призванием создать занимательную методику обучения программированию.»

Александр Ключев, Zynga senior developer

Уже 10 лет в IT, 7 из которых посвящено C++
Начинал профессиональную карьеру c компании Motorola, область телекоммуникаций, позднее заинтересовался разработкой игр.

Поработал в разных российских и зарубежных игровых студиях над различными игровыми проектами
SocialQuantum: Megapolis, Wild West 3D, Ice age 3D
Keywords Studios: Mortal Kombat, Injustice, F1
В данный момент работаю в компании Zynga над мобильным движком
для всех игровых проектов компании.

Окончил Санкт-Петербургский Электротехнический Университет ЛЭТИ, факультет компьютерных технологий и информатики (ФКТИ)
После окончания университета, работал на кафедре автоматизированных систем управления (в качестве ассистента — вел лабораторные работы).

Андрей Иванов

Один из разработчиков academy.cppstudio.com — бесплатного интерактивного сервиса по обучению С++. Свыше 5 лет опыта разработки приложений на C++ и C#.
Используемые технологии и фрэймворки:
WPF, WinForms, EF6, ASP.NET MVC5, ASP.NET Core 2.

Михаил Степанов, Data Scientist Insilico Medicine

Сейчас занимается глубоким обучением для разработки новых лекарственных препаратов. Занимался проектами по агрегации отзывов, по анализу и оптимизации производства крупных промышленных компаний, в том числе проектами по face detection, face recognition, pose estimation. Оптимизировал модели для запуска на портативных или маломощных устройствах.

Ранее учил талантливых школьников программированию, машинному обучению и программированию учебных моделей спутников.

Владислав Родин, Руководитель разработки

В настоящее время занимает должность руководителя разработки, преподает в Московском Физико-Техническом Институте и на портале foxminded.

Выпускник МФТИ, начал программировать на С++, работал инженером-исследователем на проекте вычислительного программного комплекса МФТИ.

С 2017 года занимается Java Enterprise разработкой.

Работал Java-разработчиком в таких компаниях как НСПК и Яндекс. Занимался проблемами высокой нагрузки, работая как на Spring’овом (Spring Boot, Spring Core, Spring Data, Spring Batch и т.д.) так и на Java EE’шном стеках. Улучшал инфраструктуру проектов, внедряя CI/CD и отлаживая процесс миграции БД. Строил С4- архитектурные схемы для проектов, в которых принимал участие.

Является автором статей по backend-разработке на habr.com; спикер Рит++ 2020; обладатель сертификата Oracle Certified Assotiate Java SE 8 Programmer.

Необходимые знания

  • Опыт программирования на любом языке программирования (начальный или средний уровень)
  • Знание элементарной математики в объёме средней школы
  • Минимальное знание алгоритмов и структур данных и желание развиваться в области их изучения

Процесс обучения

Обучение проходит онлайн, в формате вебинаров. Длительность этого курса составляет 5 месяцев, финальный месяц отводится для выполнения проектной работы и оттачивания полученных навыков.

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

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

Программа обучения

В процессе обучения вы получите комплексные знания и навыки.

Модуль 1

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

C 28 июля

Тема 1. Циклы и рекурсия

Тема 2. Как выполнять домашние задания

Тема 3. Алгебраические алгоритмы

Тема 4. Битовая арифметика

Тема 5. Базовые структуры данных

Модуль 2

Алгоритмы сортировки

C 18 августа

Тема 6. Простые сортировки

Тема 7. Пирамидальная сортировка

Тема 8. Быстрая и внешняя сортировка

Тема 9. Линейная сортировка

Модуль 3

Деревья поиска

C 1 сентября

Тема 10. Двоичные деревья поиска АВЛ

Тема 11. Красно-чёрные деревья

Тема 12. Другие варианты деревьев поиска

Модуль 4

Хеш-таблицы

C 13 сентября

Тема 13. Хэш-функции и хэш-таблицы

Тема 14. Разрешение коллизий

Тема 15. Универсальное и идеальное хэширование

Модуль 5

Теория графов

C 29 сентября

Тема 16. Определения и представления

Тема 17. Поиск и сортировка

Тема 18. Минимальный скелет

Тема 19. Кратчайший путь

Тема 20. Управление памятью

Тема 21. Задача коммивояжёра

Модуль 6

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

C 20 октября

Тема 22. Алгоритм Бойера-Мура

Тема 23. Алгоритм Ахо-Корасика

Тема 24. Алгоритм Кнута-Морриса-Пратта

Тема 25. Алгоритмы сжатия

Тема 26. Шифрование данных

Модуль 7

Динамическое программирование

C 15 ноября

Тема 27. Алгоритмы кэширования

Тема 28. Динамическое программирование

Модуль 8

Олимпиадное программирование

C 22 ноября

Тема 29. Сложная задача

Тема 30. Dancing Links

Модуль 9

Вероятностные алгоритмы

C 29 ноября

Тема 31. Фильтр Блума

Тема 32. Алгоритмы MinHash, SimHash

Тема 33. Алгоритмы HyperLogLog, Count-Min Sketch

Модуль 10

Проектная работа

C 8 декабря

Тема 34. Выбор темы и организация проектной работы

Тема 35. Консультация по проектам и домашним заданиям

Тема 36. Защита проектных работ

Тема 37. Подведение итогов курса

Выпускной проект

В рамках курса предусмотрена защита проекта. Это отдельная работа, на выполнение которой отводится последний месяц обучения. Проект включает в себя имплементацию сложного алгоритма и/или сложной структуры данных. При подготовке проектной работы студент может рассчитывать на консультации преподавателя и его экспертные советы. Примеры тем выпускного проекта:

  • написать кастомную хэш-таблицу
  • реализовать свой менеджер памяти с garbage collector
  • реализовать B-tree индекс для СУБД
  • любая тема на выбор студента, связанная с продвинутыми алгоритмами и структурами данных

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

  • получите материалы по всем пройденным занятиям (видеозаписи вебинаров, выполненные домашние задания, выпускной проект)
  • сможете писать рациональный и хорошо структурированный код
  • получите сертификат об окончании курса
  • приобретёте навыки работы с алгоритмами и структурами данных, которые необходимы при реализации сложных проектов в крупных компаниях
  • получите приглашение пройти собеседование в компаниях-партнёрах (в случае успешного обучения)

Дата выдачи сертификата: 1 февраля 2022 года.

Оцените автора