Благодаря этому курсу вы сможете разобраться, как связаны друг с другом математическая теория и программирование. Вы узнаете, как первое применимо ко второму, и научитесь строить модели. У вас будет возможность понять, почему языки программирования выглядят именно так, и получите возможность посмотреть на их устройство изнутри.
Этот курс отлично подойдёт тем, кто только начинает развиваться в сфере IT, и позволит приобрести фундаментальные знания. Также он будет полезен уже работающим специалистам, которые желают заполнить пробелы в знаниях и повысить свою квалификацию. После прохождения обучения вам станет проще осваивать новые языки программирования и фреймворки.
Этот вебинар позволит вам больше узнать о процессе обучения. По ходу занятия у учащихся есть возможность задавать вопросы наставнику и разбирать кейсы.
Программа состоит из 7 блоков, в каждый из которых входит несколько полезных тем. В конце обучения вам предстоит выполнить проект по одной из предложенных задач (разработать синтаксический анализатор языка программирования, вывод типов для языка C# или интерпретатор команд виртуальной машины Java). Также у вас есть возможность самостоятельно предложить тему, над которой вы хотели бы поработать.
В модуль входит 3 темы.
Разберётесь, в чём состоят ограничения модели вычислений и как они проявляются на практике.
Научитесь определять проблемы сложности для произвольного проекта, обсудите основные виды сложности.
Изучите некоторые неразрешимые проблемы. Научитесь объяснять, как они влияют на разработку ПО.
В модуль входит 9 тем.
Узнаете, как построить таблицу истинности булевой функции, произвести простейшие эквивалентные преобразования логических формул, проверить систему булевых функций на полноту. Обсудите применение импликации в программировании.
Сможете построить СКНФ, СДНФ булевой функции. Научитесь производить эквивалентные преобразования логических формул с целью их упрощения.
Научитесь проводить логический вывод в произвольном исчислении, обсудите свойства полноты и непротиворечивости.
Узнаете, как произвести эквивалентные преобразования в исчислении высказываний и в исчислении предикатов.
Научитесь производить доказательство свойств безопасности программ. Обсудите влияние противоречивости логики Хоара на разработку ПО. Разберётесь, почему и когда стоит отказаться от глобальных переменных с точки зрения полноты логик Хоара.
Узнаете, как определить множество классов эквивалентности по произвольной процедуре, методу. Сможете построить множество тестов по классам эквивалентности. Изучите применение TDD с точки зрения логики Хоара.
Научитесь определять код, использующий полиморфизм. Изучите 7 видов полиморфизма.
Будете знать, как определять инвариант типа данных.
Научитесь определять арифметику через лямбда-функции. Узнаете, как определить операторы языков программирования через лямбда-функции.
В модуль входит 5 тем.
Изучите классификацию формальных языков Хомского. Сможете определить распознающую грамматику.
Научитесь определять LL(1) грамматики, избавляться от рекурсий в начале правил, проверять критерий LL(1) грамматики. Узнаете, как строить автомат с магазинной памятью по LL(1) грамматике.
Продолжите изучать начатую тему, посвящённую LR(1) - грамматикам, и углублять свои знания.
Научитесь определять регулярные грамматики, проводить их проверку на соответствие критерию регулярности. Узнаете, как определять регулярные выражения.
Разберётесь, как применять генератор компиляторов для построения синтаксических анализаторов.
В этот модуль входит 5 тем.
Научитесь переводить различные виды циклов в машинные команды. Узнаете историю развития циклов с точки зрения проблемы остановки машины Тьюринга. Изучите современный подход для реализации циклических операций.
Научитесь преобразовывать выражение в обратную польскую запись. Сможете, пользуясь обратной польской записью, составлять тройки для преобразования в машинный код.
Разберётесь, как преобразовывать вызов процедуры в машинный код. Усвоите разницу между прямым и обратным порядком передачи параметров с точки зрения ограничения возможности языков программирования. Будете знать разницу между вызовом процедуры и метода и понимать различия между вызовом виртуального метода и "обычного".
Узнаете способы организации локальных переменных. Будете знать подход к определению ситуаций с выходом за границы диапазонов массива. Научитесь применять RAII, изучите особенности работы с рекурсивными функциями.
Узнаете методы организации динамической кучи. Освоите приемы работы сборки мусора. Изучите механизм работы оператора new.
В этом модуле 4 темы.
Обсудите определение абстрагирования как сюръективного отображения. Изучите эффект переполнения и округления через алгебры, а также ограничения абстрагирования. Научитесь строить абстрагирования.
Разберёте достаточное условие постоянной скорости разработки, изучите алгоритм применения SOLID принципов.
Будете уметь, пользуясь алгоритмом применения SOLID принципов, писать код, устойчивый к изменениям требований.
Разберёте примеры применения SOLID принципов в популярных фреймворках. Узнаете, как найти код, удовлетворяющий SOLID.
В модуль входит 6 тем.
Разберёте понятие Race Condition, обсудите отличие последовательного выполнения кода от выполнения в несколько потоков, а также процессы, свободные от взаимного вмешательства. Научитесь применять методы распараллеливания программ.
Сможете сформулировать классические задачи многопоточного программирования. Научитесь применять потоко-безопасную очередь для написания потокобезопасного кода.
Научитесь применять условные события для написания потокобезопасных тестов.
Научитесь объяснять проектные решения с помощью CAP-теоремы. Сможете применить CAP-теорему. Разберёте свойство согласованности.
Разберёте алгоритмы Paxos и Raft.
Сможете объяснить отличие вычислений, основанных на системе обмена сообщениями, от вычислений на основе частично-определенных функций. Узнаете, как реализовать архитектуру Fog Cutter.
Модуль посвящён проектной работе и состоит из 3 тем.
Выберете и обсудите тему проекта, спланируете свою работу над ней. Ознакомитесь с регламентом работы над проектом.
У нас будет возможность задать вопросы по проекту, ДЗ и курсу, которые у вас ещё остались.
Вам предстоить защитить свой проект и получить рекомендации экспертов.
Просмотр обучающих видеороликов
Делаете все тогда, когда вам это удобно и в подходящем вам темпе
Объяснение возникших вопросов, закрепление пройденного материала и исправление ошибок
Данный проект, показывающий ваши навыки, будет прекрасным дополнением к вашему портфолио
Познакомитесь с площадками для поиска работы, узнаете, как успешно пройти стажировку, и получите доступ к бирже с вакансиями компаний-партнёров
Именно вы решаете, когда и сколько заниматься. Обычно студенты тратят на обучение от трех до пяти часов в неделю.
Все преподаватели - опытные эксперты-практики, которые будут поддерживать вас на протяжении всего обучения.