Математика для программистов

Лучшие практики, после изучения которых вы сможете быстрее изучать новые языки программирования и фреймворки

30 июля

5 месяцев

Онлайн

Вт/Чт 20:00 Мск

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


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


- Для уже действующих разработчиков, желающих повысить свою квалификацию.

Почему нужно изучать этот курс?

- Курс даст вам базу программирования и после изучения этих основ вы будете легче и быстрее изучать новые языки программирования и фреймворки, за счет понимания, как устроены языки и процесс выполнения компьютерной программы на процессоре;

- Знания на курсе позволят вам легче и быстрее обнаруживать ошибки в вашем коде;

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

- Курс ликвидирует частые пробелы в знаниях разработчиков, например, понимание импликации и ее роль в программировании;

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

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

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

  - Сейчас в разработке активно используется DDD (Domain Driven Design) с микросервисной архитектурой. DDD пропагандирует разработку по модели. Весь курс показывает применение математических моделей к программированию, то есть вырабатывается навык построения моделей;

  -  Курс показывает, как устроены языки программирования изнутри. Данный курс затрагивает тему, почему языки так устроены, как процессор обрабатывает конструкции языков высокого уровня

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

Обучение проходит онлайн: вебинары, общение с преподавателями и вашей группой в Telegram, сдача домашних работ и получение обратной связи от преподавателя.

Вебинары проводятся 2 раза в неделю по 2 ак. часа и сохраняются в записи в личном кабинете. Вы можете посмотреть их в любое удобное для вас время.

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

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

Оптимальная нагрузка

Возможность совмещать учебу с работой

Портфолио

Индивидуальная разработка итоговой проектной работы 

Перспективы

 

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

Партнеры

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

  • Получите помощь с оформлением резюме, портфолио и сопроводительного письма
  • Разместите свое резюме в базе OTUS и сможете получать приглашения на собеседования от партнеров
Формат обучения

Интерактивные вебинары


2 занятия по 2 ак.часа в неделю. Доступ к записям и материалам остается навсегда

Обратная связь


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

Активное комьюнити


Чат в Telegram для общения преподавателей и студентов

Программа

Вычисления

Модель вычислений - это фундамент, на котором строится все программирование. Она определяет как возможности, так и ограничения, которые возможно преодолеть только сменив модель. После этого модуля студенты смогут объяснить прикладное значение модели вычислений и влияние фундаментальных ограничений на модели подходы к написанию программного кода

Тема 1: Программа как функция

Тема 2: Проблемы, сложности разработки ПО

Тема 3: Понятие алгоритмической неразрешимости. Наиболее известные алгоритмически неразрешимые проблемы

Логика

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

Тема 1: Булевы функции. Таблица истинности. Теорема Поста. Смысл импликации с точки зрения теории множеств и объектно-ориентированного программирования // ДЗ

Тема 2: СКНФ, СДНФ. Упрощение логических формул // ДЗ

Тема 3: Исчисления и логический вывод. Полнота и непротиворечивость // ДЗ

Тема 4: Исчисления высказываний и предикатов

Тема 5: Исчисление программирования // ДЗ

Тема 6: Тесты как классы эквивалентности // ДЗ

Тема 7: Полиморфизм, инкапсуляция как следствие логического вывода

Тема 8: Тип как предикат. Изоморфизм Карри-Говарда

Тема 9: Бестиповое лямбда-исчисление // ДЗ

Формальные языки

Умение строить формальные языки используется при построении наглядных и эффективных DSL моделей. Знание теории синтаксического анализа позволяет осознанно применять грамматику для осознаного построения крнструкций в недавно изученных языках программирования

Тема 1: Понятие формального языка. Способы определения. Форма Бэкуса-Науэра. Классификация Хомского

Тема 2: LL(1) - грамматики. Часть 1 // ДЗ

Тема 3: LR(1) - грамматики. Часть 2

Тема 4: «Регулярные языки и грамматики» // ДЗ

Тема 5: Генераторы компиляторов // ДЗ

Реализация конструкций языков программирования

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

Тема 1: Циклы. Проблема остановки Машины Тьюринга

Тема 2: Выражения. Обратная польская запись и задача генерации машинного кода

Тема 3: Представления процедур, функций и методов объектов

Тема 4: Представление локальных переменных в памяти

Тема 5: Способы организации кучи и реализация оператора new. Работа с сырой памятью. Сборка мусора.

ОПП концепции

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

Тема 1: Абстрагирование как сюръективное отображение

Тема 2: Достаточное условие постоянной скорости разработки

Тема 3: Написание кода в соответствии с достаточным условием постоянной скорости разработки // ДЗ

Тема 4: Обзор архитектурных решений фреймворков, которые обладают признаком постоянной скорости разработки

Распределенное и многопоточное программирование

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

Тема 1: Базовые понятия. Взаимное вмешательство. Критерий процессов свободных от взаимного вмешательства. Методы распараллеливания программ

Тема 2: Критические секции и мьютексы. Семафоры. Реализация потокобезопасных очередей // ДЗ

Тема 3: Условные события // ДЗ

Тема 4: Метки Лампорта. Проблема синхронизации часов в распределенных системах. CAP теорема. Виды распределенных систем

Тема 5: Алгоритмы PAXOS, Raft

Тема 6: Система обмена сообщениями

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

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

Тема 1: Выбор темы и организация проектной работы // Проект

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

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

Также вы можете получить полную программу, чтобы убедиться, что обучение вам подходит

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


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

Вы можете выбрать одну из предложенных преподавателем тем или реализовать свою идею.

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

Руководитель курса

Евгений Тюменцев

Евгений Непомнящий

Разработчик

IT Sense

Анатолий Бурнашев

SRE expert

Эксперты-практики делятся опытом, разбирают кейсы студентов и дают развернутый фидбэк на домашние задания

Ближайшие мероприятия

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

Как 7 студентов и филолог делали технически сложный проект
Евгений Тюменцев
Что делать, если у Вам неопытная команда, а надо делать сложную задачу? Можно написать заявление об увольнении, а потом с ужасом рассказывать в интернете про прошлые места работы. А можно попробовать выстроить процессы так, чтобы получить требуемый результат. Мы не будем на уроке обсуждать, какая из этих двух стратегий правильная, но поговорим о том, как математика может помочь выстроить архитектуру приложения, которая позволит решить эту трудную задачу....
26 июля в 17:00
Открытый вебинар

Прошедшие
мероприятия

Евгений Тюменцев
Открытый вебинар
Факты из математики, которые могут облегчить жизнь разработчику
Евгений Тюменцев
Открытый вебинар
Разработка своего языка программирования с помощью ANTLR
Оставьте заявку, чтобы получить доступ ко всем записям прошедших мероприятий. Записи всех мероприятий появятся в этом блоке

Корпоративное обучение для ваших сотрудников

Отус помогает развивать высокотехнологичные Команды. Почему нам удаётся это делать успешно:
  • Курсы OTUS верифицированы крупными игроками ИТ-рынка и предлагают инструменты и практики, актуальные на данный момент
  • Студенты работают в группах, могут получить консультации не только преподавателей, но и профессионального сообщества
  • OTUS проверяет знания студентов перед стартом обучения и после его завершения
  • Простой и удобный личный кабинет компании, в котором можно видеть статистику по обучению сотрудников
  • Сертификат нашего выпускника за 5 лет стал гарантом качества знаний в обществе
  • OTUS создал в IT более 120 курсов по 7 направлениям, линейка которых расширяется по 40-50 курсов в год

Сертификат о прохождении курса

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

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

  • Получите материалы по пройденным занятиям (видеозаписи курса и дoполнительные материалы)
  • Создадите свой проект, который поможет при прохождении собеседований
  • Повысите свою ценность и конкурентоспособность как IT-специалист
  • Получите сертификат об окончании курса

Частые вопросы

Почему OTUS?
Мы обучаем IT-сотрудников уже 6 лет, через OTUS прошли 20 000 студентов. Специализируемся на программах для людей с опытом, а ещё – быстро переформатируем учебные программы под изменения в сфере информационных технологий.
Обязательно ли выполнять и защищать выпускной проект?
Для получения сертификата OTUS и УПК (удостоверение повышения квалификации государственного образца) необходимо сдать проект. Кроме того, проект необязательно защищать перед аудиторией, а можно сдать в чате с преподавателем. Для получения УПК также понадобится предъявить документ об образовании.
Обязательно ли выполнять все домашние задания?
Да, если хотите хорошо отточить навыки. На курсе будут практические домашние задания, их выполнение занимает примерно 2-3 часа.
Помогаете ли вы с трудоустройством после курса?
В Otus Club проводятся вебинары на тему трудоустройства, разбор резюме, прохождения собеседований, особенности реферальных программ при найме. Также обратим ваше внимание, что преподаватели курса занимают ведущие позиции в разных компаниях. Будьте активны, выполняйте домашние задания, стройте network с сокурсниками и преподавателями, и вам будет проще найти работу, расширив свои контакты.
Смогу ли я совмещать учебу с работой?
Да. Программа курса рассчитана на студентов, у которых мало времени. Лекции проводим дважды в неделю, домашние задания — не чаще 1 раза в неделю.
Что, если в середине курса я не смогу продолжать обучение?
Вы можете бесплатно перейти в другую группу. Но только один раз.
Я могу вернуть деньги?
Да, мы можем вернуть деньги за то время курса, которое вы ещё не успели отучиться. Например, если курс длится пять месяцев, а вы отучились один, мы вернём деньги за оставшиеся четыре месяца.
Может ли мой работодатель оплатить курс?
Да. Когда свяжетесь с нашим менеджером, уточните, что оплачивать курс будет ваш работодатель.
Остались вопросы?
Оставляйте заявку и задавайте вопросы менеджеру, команда курса с ним на связи и постарается дать вам исчерпывающую информацию.