https://github.com/gsvgit/high-performance-graph-analysis-course
https://github.com/gsvgit/high-performance-graph-analysis-course
Last synced: 8 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/gsvgit/high-performance-graph-analysis-course
- Owner: gsvgit
- License: apache-2.0
- Created: 2022-03-09T11:30:15.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-05-22T14:08:04.000Z (about 3 years ago)
- Last Synced: 2025-01-30T00:51:08.479Z (over 1 year ago)
- Language: Python
- Size: 971 KB
- Stars: 0
- Watchers: 3
- Forks: 29
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/JetBrains-Research/formal-lang-course/actions/workflows/code_style.yml)
[](https://github.com/psf/black)
---
# Курс по высокопроизводительному анализу графов
Курс по высокопроизводительному анализу графов: шаблон структуры репозитория для выполнения домашних работ,
а также материалы курса и другая сопутствующая информация.
Актуальное:
- [Таблица с текущими результатами](https://docs.google.com/spreadsheets/d/1VAfnSGd63GulSdig8TLISOXBF7MMIUm3egO4U_jdugI/edit?usp=sharing)
- [Стиль кода как референс](https://www.python.org/dev/peps/pep-0008/)
Технологии:
- Python 3.8+
- Pytest для unit тестирования
- Pygraphblas для реализации алгоритмов
- GitHub Actions для CI
- Сторонние пакеты из `requirements.txt` файла
- Английский язык для документации или самодокументирующийся код
## Работа с проектом
- Для выполнения домашних практических работ необходимо сделать `fork` этого репозитория к себе в `GitHub`.
- Рекомендуется установить [`pre-commit`](https://pre-commit.com/#install) для поддержания проекта в адекватном состоянии.
- Установить `pre-commit` можно выполнив следующую команду в корне вашего проекта:
```shell
pre-commit install
```
- Отформатировать код в соответствии с принятым стилем можно выполнив следующую команду в корне вашего проекта:
```shell
pre-commit run --all-files
```
- Ссылка на свой `fork` репозитория размещается в [таблице](https://docs.google.com/spreadsheets/d/1VAfnSGd63GulSdig8TLISOXBF7MMIUm3egO4U_jdugI/edit?usp=sharing) курса с результатами.
- В свой репозиторий необходимо добавить проверяющих с `admin` правами на чтение, редактирование и проверку `pull-request`'ов.
## Домашние практические работы
### Дедлайны
Дедлайны для каждой задачи указываются отдельно.
### Выполнение домашнего задания
- Каждое домашнее задание выполняется в отдельной ветке. Ветка должна иметь осмысленное консистентное название.
- При выполнении домашнего задания в новой ветке необходимо открыть соответствующий `pull-request` в `main` вашего `fork`.
- `Pull-request` снабдить понятным названием и описанием с соответствующими пунктами прогресса.
- Проверка заданий осуществляется посредством `review` вашего `pull-request`.
- Как только вы считаете, что задание выполнено, вы можете запросить `review` у проверяющего.
- Если `review` запрошено **до мягкого дедлайна**, то вам гарантированна дополнительная проверка (до жёсткого дедлайна), позволяющая исправить замечания до наступления жёсткого дедлайна.
- Если `review` запрошено **после мягкого дедлайна**, но **до жесткого дедлайна**, задание будет проверено, но нет гарантий, что вы успеете его исправить.
- Когда проверка будет пройдена, и задание **зачтено**, его необходимо `merge` в `main` вашего `fork`.
- Результаты выполненных заданий будут повторно использоваться в последующих домашних работах.
### Получение оценки за домашнюю работу
- Если ваша работа **зачтена** _до_ **жёсткого дедлайна**, то вы получаете **полный балл за домашнюю работу**.
- Если ваша работа **зачтена** _после_ **жёсткого дедлайна**, то вы получаете **половину полного балла за домашнюю работу**.
## Код
- Исходный код практических задач по программированию размещайте в папке `project`.
- Файлам и модулям даем осмысленные имена, в соответствии с официально принятым стилем.
- Структурируем код, используем как классы, так и отдельно оформленные функции. Чем понятнее код, тем быстрее его проверять и тем больше у вас будет шансов получить полный балл.
## Тесты
- Тесты для домашних заданий размещайте в папке `tests`.
- Формат именования файлов с тестами `test_[какой модуль\класс\функцию тестирует].py`.
- Для работы с тестами рекомендуется использовать [`pytest`](https://docs.pytest.org/en/6.2.x/).
- Для запуска тестов необходимо из корня проекта выполнить следующую команду:
```shell
python ./scripts/run_tests.py
```
## Эксперименты
- Для выполнения экспериментов потребуется не только код, но окружение и некоторая его настройка.
- В качестве окружения используем только [`Google Colab`](https://research.google.com/colaboratory/) ноутбуки. Для его создания требуется только учетная запись `Google`.
- Создаем ноутбук, ссылка на ноутбук также размещается в [таблице](https://docs.google.com/spreadsheets/d/1VAfnSGd63GulSdig8TLISOXBF7MMIUm3egO4U_jdugI/edit?usp=sharing) курса.
- В `Google Colab` ноутбуке выполняется вся настройка, пишется код для экспериментов, подготовки отчетов и графиков.
## Структура репозитория
```text
.
├── .github - файлы для настройки CI и проверок
├── docs - текстовые документы и материалы по курсу
├── project - исходный код домашних работ
├── scripts - вспомогательные скрипты для автоматизации разработки
├── tasks - файлы с описанием домашних заданий
├── tests - директория для unit-тестов домашних работ
├── README.md - основная информация о проекте
└── requirements.txt - зависимости для настройки репозитория
```
## Контакты
- Семен Григорьев [@gsvgit](https://github.com/gsvgit)
- Рустам Азимов [@rustam-azimov](https://github.com/rustam-azimov)
- Екатерина Шеметова [@katyacyfra](https://github.com/katyacyfra)