Giter Site home page Giter Site logo

ilyaivantsov / formal-lang-course-ivantsov Goto Github PK

View Code? Open in Web Editor NEW

This project forked from formallanguageconstrainedpathquerying/formal-lang-course

0.0 0.0 0.0 2.02 MB

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

License: Apache License 2.0

Python 94.08% ANTLR 5.92%

formal-lang-course-ivantsov's Introduction

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'ов.

Домашние практические работы

Дедлайны

  • мягкий: TODO 23:59
  • жёсткий: TODO 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 - зависимости для настройки репозитория

Контакты

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.