Учебный курс: конечный автомат как модель вычислений, инженерный метод проектирования управляющих программ и практика их реализации на языке Си.
МТУ МИРЭА, Институт искусственного интеллекта, кафедра промышленной информатики. Автор — Хлебников Андрей.
Курс построен тремя «этажами», и это же порядок работы над задачей.
| Этаж | На какой вопрос отвечает | Лекции |
|---|---|---|
| Теория | что конечный автомат может и чего не может в принципе | 2, 4, 5, 10, 11 |
| Синтез | как получить автомат по описанию задачи и превратить его в схему или код | 3, 7, 8, 12 |
| Реализация и проверка | как убедиться, что написанный автомат делает то, что задумано | 6, 9 |
Двенадцать лекций: алфавиты и языки, модели Мили и Мура, синтез схемы по таблице переходов, ДКА и НКА, теорема Клини, регулярные выражения и лексический анализ, автоматное программирование, statecharts и кодогенерация, верификация на SPIN, машина Тьюринга и вычислимость, клеточные автоматы, язык описания автоматов Takt.
К ним — три приложения (Git, требования к коду курса, справочник по стандарту Си), пять лабораторных работ и практикум: каждый разобранный алгоритм есть в виде работающей программы, и почти всякое утверждение лекции можно проверить запуском.
Требования к слушателю: дискретная математика, основы теории графов, программирование на Си.
| Путь | Что это |
|---|---|
lectures/ |
лекции, приложения и лабораторные на typst; реестр — course.typ |
practices/ |
практикум: единый CMake-проект, ISO C90, тесты на Catch2 |
docs/ |
отчёты и справочные документы курса |
Лекции (нужен typst 0.15):
cd lectures && make fix && makemake fix доустанавливает шрифты и прогревает кэш пакетов, make собирает
PDF под читаемыми именами в out/. Отдельные цели: make book — сводный том
одним документом, make pack — комплект для раздачи, make one L=03-synthesis
— одна лекция. Полный список — make help.
Практикум:
cmake -S . -B build && cmake --build build -j
ctest --test-dir build --output-on-failureВесь код курса — ISO C90 без расширений и без предупреждений. Оформление
задаётся .clang-format и проверяется скриптом:
./scripts/check-style.sh # проверить
./scripts/check-style.sh --fix # переформатироватьКомплект PDF выкладывается
релизами при смене
минорной версии. Версия курса ведётся в lectures/course.typ и обязана
совпадать с тегом вида v{MAJOR}.{MINOR}.{BUILD}; печатается на титульном
листе каждой лекции.