Математика для программистов
Лучшие практики, после изучения которых вы сможете быстрее изучать новые языки программирования и фреймворки
В декабре
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: Защита проектных работ
Также вы можете получить полную программу, чтобы убедиться, что обучение вам подходит
Выпускной проект
Каждый курс завершается финальным проектом, который предстоит защитить перед преподавателями и командой. Вам будет, что обсудить на собеседовании!
Вы можете выбрать одну из предложенных преподавателем тем или реализовать свою идею.
Преподаватели
Эксперты-практики делятся опытом, разбирают кейсы студентов и дают развернутый фидбэк на домашние задания
Прошедшие
мероприятия
Корпоративное обучение для ваших сотрудников
- Курсы OTUS верифицированы крупными игроками ИТ-рынка и предлагают инструменты и практики, актуальные на данный момент
- Студенты работают в группах, могут получить консультации не только преподавателей, но и профессионального сообщества
- OTUS проверяет знания студентов перед стартом обучения и после его завершения
- Простой и удобный личный кабинет компании, в котором можно видеть статистику по обучению сотрудников
- Сертификат нашего выпускника за 5 лет стал гарантом качества знаний в обществе
- OTUS создал в IT более 120 курсов по 7 направлениям, линейка которых расширяется по 40-50 курсов в год
Сертификат о прохождении курса
OTUS осуществляет лицензированную образовательную деятельность. В конце обучения вы получите сертификат OTUS о прохождении курса и удостоверение о повышении квалификации.
После обучения вы:
- Получите материалы по пройденным занятиям (видеозаписи курса и дoполнительные материалы)
- Создадите свой проект, который поможет при прохождении собеседований
- Повысите свою ценность и конкурентоспособность как IT-специалист
- Получите сертификат об окончании курса
Математика для программистов
Стоимость в рассрочку
Стоимость указана для оплаты физическими лицами
вычета до 13% стоимости обучения. Оставьте заявку и менеджер вас проконсультирует
+7 499 938-92-02 бесплатно