/formal-lang-course

Курс по формальным языкам: шаблон для домашних работ + материалы

Primary LanguageJupyter NotebookApache License 2.0Apache-2.0

Check code style Code style

Formal Language Course

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

Актуальное:

Технологии:

  • 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 ноутбуке выполняется вся настройка, пишется код для экспериментов, подготовки отчетов и графиков.

Эксперименты:

Структура репозитория

.
├── .github - файлы для настройки CI и проверок
├── docs - текстовые документы и материалы по курсу
├── project - исходный код домашних работ
├── scripts - вспомогательные скрипты для автоматизации разработки
├── tasks - файлы с описанием домашних заданий
├── tests - директория для unit-тестов домашних работ
├── README.md - основная информация о проекте
└── requirements.txt - зависимости для настройки репозитория

Контакты