Курс по формальным языкам: шаблон структуры репозитория для выполнения домашних работ, а также материалы курса и другая сопутствующая информация.
Актуальное:
- Таблица с текущими результатами
- Список задач
- Стиль кода как референс
- Материалы по курсу
- О достижимости с ограничениями в терминах формальных языков
Технологии:
- Python 3.8+
- Pytest для unit тестирования
- GitHub Actions для CI
- Google Colab для постановки и оформления экспериментов
- Сторонние пакеты из
requirements.txt
файла - Английский язык для документации или самодокументирующийся код
- Для выполнения домашних практических работ необходимо сделать приватный
fork
этого репозитория к себе вGitHub
. - Рекомендуется установить
pre-commit
для поддержания проекта в адекватном состоянии.- Установить
pre-commit
можно выполнив следующую команду в корне вашего проекта:pre-commit install
- Отформатировать код в соответствии с принятым стилем можно выполнив следующую команду в корне вашего проекта:
pre-commit run --all-files
- Установить
- Ссылка на свой
fork
репозитория размещается в таблице курса с результатами. - В свой репозиторий необходимо добавить проверяющих с
admin
правами на чтение, редактирование и проверкуpull-request
'ов.
- мягкий: воскресенье 23:59
- жёсткий: среда 23:59
- Каждое домашнее задание выполняется в отдельной ветке. Ветка должна иметь осмысленное консистентное название.
- При выполнении домашнего задания в новой ветке необходимо открыть соответствующий
pull-request
вmain
вашегоfork
. Pull-request
снабдить понятным названием и описанием с соответствующими пунктами прогресса.- Проверка заданий осуществляется посредством
review
вашегоpull-request
. - Как только вы считаете, что задание выполнено, вы можете запросить
review
у проверяющего.- Если
review
запрошено до мягкого дедлайна, то вам гарантированна дополнительная проверка (до жёсткого дедлайна), позволяющая исправить замечания до наступления жёсткого дедлайна. - Если
review
запрошено после мягкого дедлайна, но до жесткого дедлайна, задание будет проверено, но нет гарантий, что вы успеете его исправить.
- Если
- Когда проверка будет пройдена, и задание зачтено, его необходимо
merge
вmain
вашегоfork
. - Результаты выполненных заданий будут повторно использоваться в последующих домашних работах.
Часть задач, связанных с работой с GPGPU, будет помечена как опциональная. Это означает что и без их выполнения (при идеальном выполнении остальных задач) можно набрать полный балл за курс.
- Если ваша работа зачтена до жёсткого дедлайна, то вы получаете полный балл за домашнюю работу.
- Если ваша работа зачтена после жёсткого дедлайна, то вы получаете половину полного балла за домашнюю работу.
- Если ревью было запрошено до жёсткого дедлайна и задача зачтена сразу без замечаний, то вы всё ещё получаете полный балл за домашнюю работу.
- Исходный код практических задач по программированию размещайте в папке
project
. - Файлам и модулям даем осмысленные имена, в соответствии с официально принятым стилем.
- Структурируем код, используем как классы, так и отдельно оформленные функции. Чем понятнее код, тем быстрее его проверять и тем больше у вас будет шансов получить полный балл.
- Тесты для домашних заданий размещайте в папке
tests
. - Формат именования файлов с тестами
test_[какой модуль\класс\функцию тестирует].py
. - Для работы с тестами рекомендуется использовать
pytest
. - Для запуска тестов необходимо из корня проекта выполнить следующую команду:
python ./scripts/run_tests.py
- Для выполнения экспериментов потребуется не только код, но окружение и некоторая его настройка.
- Эксперименты должны быть воспроизводимыми (например, проверяющими).
- Эксперимент (настройка, замеры, результаты, анализ результатов) оформляется как Python-ноутбук, который публикуется на GitHub.
- В качестве окружения для экспериментов с GPGPU (опциональные задачи) можно использовать
Google Colab
ноутбуки. Для его создания требуется только учетная записьGoogle
. - В
Google Colab
ноутбуке выполняется вся настройка, пишется код для экспериментов, подготовки отчетов и графиков.
- В качестве окружения для экспериментов с GPGPU (опциональные задачи) можно использовать
.
├── .github - файлы для настройки CI и проверок
├── docs - текстовые документы и материалы по курсу
├── project - исходный код домашних работ
├── scripts - вспомогательные скрипты для автоматизации разработки
├── tasks - файлы с описанием домашних заданий
├── tests - директория для unit-тестов домашних работ
├── README.md - основная информация о проекте
└── requirements.txt - зависимости для настройки репозитория
- Семен Григорьев @gsvgit
- Егор Орачев @EgorOrachyov
- Вадим Абзалов @vdshk
- Рустам Азимов @rustam-azimov
- Екатерина Шеметова @katyacyfra