Ко всем курсам Event-менеджмент Excel и Google Таблицы MBA PR-менеджмент Аналитика для руководителей Антикризисный менеджмент Арт-менеджмент Бухгалтерский учет Геймификация Деловые переговоры и коммуникация Документационное обеспечение Закупки и тендеры Кадровое делопроизводство и охрана труда Клиентский сервис Комьюнити-менеджмент Консалтинг Коучинг Курсы для директоров Маркетплейсы и e-commerce Менеджмент в индустрии моды Менеджмент в образовании Музыкальный менеджмент Нетворкинг Операционный менеджмент Открытие бизнеса Подбор и управление персоналом Продакт-менеджмент Разработка онлайн-курсов Рекрутмент Ресторанный менеджмент Создание презентаций Спортивный менеджмент Строительство и недвижимость Тимбилдинг Управление бизнесом Управление командами Управление продажами Управление проектами Управление производством Управление разработкой и IT Финансовый менеджмент

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

Вы научитесь

Благодаря этому курсу вы сможете разобраться, как связаны друг с другом математическая теория и программирование. Вы узнаете, как первое применимо ко второму, и научитесь строить модели. У вас будет возможность понять, почему языки программирования выглядят именно так, и получите возможность посмотреть на их устройство изнутри.Этот курс отлично подойдёт тем, кто только начинает развиваться в сфере IT, и позволит приобрести фундаментальные знания. Также он будет полезен уже работающим специалистам, которые желают заполнить пробелы в знаниях и повысить свою квалификацию. После прохождения обучения вам станет проще осваивать новые языки программирования и фреймворки.
Тип курса
Онлайн
Тип обучения
Курс
Локация
Длительность
5 месяцев
Стоимость
55000 ₽
Помощь в трудоустройстве
Да
Выдача сертификата
Да
Вы научитесь
#01
Понимать роль импликации в программировании
#02
Разбираться
#03
как устроены языки программирования
#04
Применять навык построения математических моделей
#05
Понимать связь между математической теорией и программированием
#06
Использовать DDD (Domain Driven Design) с микросервисной архитектурой
Программа курса

Программа состоит из 7 блоков, в каждый из которых входит несколько полезных тем. В конце обучения вам предстоит выполнить проект по одной из предложенных задач (разработать синтаксический анализатор языка программирования, вывод типов для языка C# или интерпретатор команд виртуальной машины Java). Также у вас есть возможность самостоятельно предложить тему, над которой вы хотели бы поработать. 

Вычисления

В модуль входит 3 темы. Разберётесь, в чём состоят ограничения модели вычислений и как они проявляются на практике. Научитесь определять проблемы сложности для произвольного проекта, обсудите основные виды сложности. Изучите некоторые неразрешимые проблемы. Научитесь объяснять, как они влияют на разработку ПО.

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

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

Изучите некоторые неразрешимые проблемы. Научитесь объяснять, как они влияют на разработку ПО.

Логика

В модуль входит 9 тем. Узнаете, как построить таблицу истинности булевой функции, произвести простейшие эквивалентные преобразования логических формул, проверить систему булевых функций на полноту. Обсудите применение импликации в программировании. Сможете построить СКНФ, СДНФ булевой функции. Научитесь производить эквивалентные преобразования логических формул с целью их упрощения. Научитесь проводить логический вывод в произвольном исчислении, обсудите свойства полноты и непротиворечивости. Узнаете, как произвести эквивалентные преобразования в исчислении высказываний и в исчислении предикатов. Научитесь производить доказательство свойств безопасности программ. Обсудите влияние противоречивости логики Хоара на разработку ПО. Разберётесь, почему и когда стоит отказаться от глобальных переменных с точки зрения полноты логик Хоара. Узнаете, как определить множество классов эквивалентности по произвольной процедуре, методу. Сможете построить множество тестов по классам эквивалентности. Изучите применение TDD с точки зрения логики Хоара. Научитесь определять код, использующий полиморфизм. Изучите 7 видов полиморфизма. Будете знать, как определять инвариант типа данных. Научитесь определять арифметику через лямбда-функции. Узнаете, как определить операторы языков программирования через лямбда-функции.

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

Сможете построить СКНФ, СДНФ булевой функции. Научитесь производить эквивалентные преобразования логических формул с целью их упрощения.

Научитесь проводить логический вывод в произвольном исчислении, обсудите свойства полноты и непротиворечивости.

Узнаете, как произвести эквивалентные преобразования в исчислении высказываний и в исчислении предикатов.

Научитесь производить доказательство свойств безопасности программ. Обсудите влияние противоречивости логики Хоара на разработку ПО. Разберётесь, почему и когда стоит отказаться от глобальных переменных с точки зрения полноты логик Хоара.

Узнаете, как определить множество классов эквивалентности по произвольной процедуре, методу. Сможете построить множество тестов по классам эквивалентности. Изучите применение TDD с точки зрения логики Хоара.

Научитесь определять код, использующий полиморфизм. Изучите 7 видов полиморфизма.

Будете знать, как определять инвариант типа данных.

Научитесь определять арифметику через лямбда-функции. Узнаете, как определить операторы языков программирования через лямбда-функции.

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

В модуль входит 5 тем. Изучите классификацию формальных языков Хомского. Сможете определить распознающую грамматику. Научитесь определять LL(1) грамматики, избавляться от рекурсий в начале правил, проверять критерий LL(1) грамматики. Узнаете, как строить автомат с магазинной памятью по LL(1) грамматике. Продолжите изучать начатую тему, посвящённую LR(1) - грамматикам, и углублять свои знания. Научитесь определять регулярные грамматики, проводить их проверку на соответствие критерию регулярности. Узнаете, как определять регулярные выражения. Разберётесь, как применять генератор компиляторов для построения синтаксических анализаторов.

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

Научитесь определять LL(1) грамматики, избавляться от рекурсий в начале правил, проверять критерий LL(1) грамматики. Узнаете, как строить автомат с магазинной памятью по LL(1) грамматике.

Продолжите изучать начатую тему, посвящённую LR(1) - грамматикам, и углублять свои знания.

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

Разберётесь, как применять генератор компиляторов для построения синтаксических анализаторов.

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

В этот модуль входит 5 тем. Научитесь переводить различные виды циклов в машинные команды. Узнаете историю развития циклов с точки зрения проблемы остановки машины Тьюринга. Изучите современный подход для реализации циклических операций. Научитесь преобразовывать выражение в обратную польскую запись. Сможете, пользуясь обратной польской записью, составлять тройки для преобразования в машинный код. Разберётесь, как преобразовывать вызов процедуры в машинный код. Усвоите разницу между прямым и обратным порядком передачи параметров с точки зрения ограничения возможности языков программирования. Будете знать разницу между вызовом процедуры и метода и понимать различия между вызовом виртуального метода и "обычного". Узнаете способы организации локальных переменных. Будете знать подход к определению ситуаций с выходом за границы диапазонов массива. Научитесь применять RAII, изучите особенности работы с рекурсивными функциями. Узнаете методы организации динамической кучи. Освоите приемы работы сборки мусора. Изучите механизм работы оператора new.

Научитесь переводить различные виды циклов в машинные команды. Узнаете историю развития циклов с точки зрения проблемы остановки машины Тьюринга. Изучите современный подход для реализации циклических операций.

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

Разберётесь, как преобразовывать вызов процедуры в машинный код. Усвоите разницу между прямым и обратным порядком передачи параметров с точки зрения ограничения возможности языков программирования. Будете знать разницу между вызовом процедуры и метода и понимать различия между вызовом виртуального метода и "обычного".

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

Узнаете методы организации динамической кучи. Освоите приемы работы сборки мусора. Изучите механизм работы оператора new.

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

В этом модуле 4 темы. Обсудите определение абстрагирования как сюръективного отображения. Изучите эффект переполнения и округления через алгебры, а также ограничения абстрагирования. Научитесь строить абстрагирования. Разберёте достаточное условие постоянной скорости разработки, изучите алгоритм применения SOLID принципов. Будете уметь, пользуясь алгоритмом применения SOLID принципов, писать код, устойчивый к изменениям требований. Разберёте примеры применения SOLID принципов в популярных фреймворках. Узнаете, как найти код, удовлетворяющий SOLID.

Обсудите определение абстрагирования как сюръективного отображения. Изучите эффект переполнения и округления через алгебры, а также ограничения абстрагирования. Научитесь строить абстрагирования.

Разберёте достаточное условие постоянной скорости разработки, изучите алгоритм применения SOLID принципов.

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

Разберёте примеры применения SOLID принципов в популярных фреймворках. Узнаете, как найти код, удовлетворяющий SOLID.

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

В модуль входит 6 тем. Разберёте понятие Race Condition, обсудите отличие последовательного выполнения кода от выполнения в несколько потоков, а также процессы, свободные от взаимного вмешательства. Научитесь применять методы распараллеливания программ. Сможете сформулировать классические задачи многопоточного программирования. Научитесь применять потоко-безопасную очередь для написания потокобезопасного кода. Научитесь применять условные события для написания потокобезопасных тестов. Научитесь объяснять проектные решения с помощью CAP-теоремы. Сможете применить CAP-теорему. Разберёте свойство согласованности. Разберёте алгоритмы Paxos и Raft. Сможете объяснить отличие вычислений, основанных на системе обмена сообщениями, от вычислений на основе частично-определенных функций. Узнаете, как реализовать архитектуру Fog Cutter.

Разберёте понятие Race Condition, обсудите отличие последовательного выполнения кода от выполнения в несколько потоков, а также процессы, свободные от взаимного вмешательства. Научитесь применять методы распараллеливания программ.

Сможете сформулировать классические задачи многопоточного программирования. Научитесь применять потоко-безопасную очередь для написания потокобезопасного кода.

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

Научитесь объяснять проектные решения с помощью CAP-теоремы. Сможете применить CAP-теорему. Разберёте свойство согласованности.

Разберёте алгоритмы Paxos и Raft.

Сможете объяснить отличие вычислений, основанных на системе обмена сообщениями, от вычислений на основе частично-определенных функций. Узнаете, как реализовать архитектуру Fog Cutter.

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

Модуль посвящён проектной работе и состоит из 3 тем. Выберете и обсудите тему проекта, спланируете свою работу над ней. Ознакомитесь с регламентом работы над проектом. У нас будет возможность задать вопросы по проекту, ДЗ и курсу, которые у вас ещё остались.  Вам предстоить защитить свой проект и получить рекомендации экспертов.

Выберете и обсудите тему проекта, спланируете свою работу над ней. Ознакомитесь с регламентом работы над проектом.

У нас будет возможность задать вопросы по проекту, ДЗ и курсу, которые у вас ещё остались. 

Вам предстоить защитить свой проект и получить рекомендации экспертов.

Отзывы о данном курсе
На этот курс ещё нет отзывов.
Otus
Школа
Otus – это платформа для онлайн-образования, предоставляющая авторские курсы для специалистов в сфере IT. Курсы не предназначены для новичков – они ориентированы на специалистов с опытом, поэтому перед зачислением на курс вам нужно будет пройти тест.