Skip to content

Repository files navigation

Автоматное программирование систем управления

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

МТУ МИРЭА, Институт искусственного интеллекта, кафедра промышленной информатики. Автор — Хлебников Андрей.

О курсе

Курс построен тремя «этажами», и это же порядок работы над задачей.

Этаж На какой вопрос отвечает Лекции
Теория что конечный автомат может и чего не может в принципе 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 && make

make 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}; печатается на титульном листе каждой лекции.

About

Курс лекций и практических занятий по дисциплине "Автоматное программирование систем управления"

Topics

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages