Курс "Программирование на Python".
Полезные ссылки:
Технологии:
- 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'ов.
Обратите внимание, что если проверка запрошена, но выполнены не все требования к решению (не проходит CI, не все пункты задачи выполнены, ответили не на все поставленные вопросы, не соблюли все требования к отчёту), то детальной проверки задачи не проводится, а попытка сдачи сгорает. Скорее всего, в таком случае единственным результатом проверки будет что-то в духе "задача решена не полностью".
- Каждое домашнее задание выполняется в отдельной ветке. Ветка должна иметь осмысленное название.
- Текст коммитов (commit message) должен быть адекватным и отражать суть происходящего.
- Название файла должно отражать его содержимое (например, название алгоритма).
- При выполнении домашнего задания в новой ветке необходимо открыть соответствующий
pull-requestвmainвашегоfork. Pull-requestснабдить понятным названием и описанием с соответствующими пунктами прогресса.- Название
Pull-requestдолжно иметь формуФамилия. Task №X. - Описание с пунктами прогресса можно взять из текста соответствующего задания.
- Название
- Проверка заданий осуществляется посредством
reviewвашегоpull-request. - На все написанные в ходе ревью комментарии/замечания должен быть написан ответ/комментарий
- Как только вы считаете, что задание выполнено, вы можете запросить
reviewу проверяющего. Обратите внимание, что CI должен проходить. - Количество проверок ограничено тремя. Первый запрос
reviewдолжен быть до дедлайна. После двух неудачных проверок баллы за задачу сгорают. - Когда проверка будет пройдена, и задание зачтено, его необходимо
mergeвmainвашегоfork.
- Если
reviewзапрошено до дедлайна и ваша работа зачтена, то вы получаете полный балл за домашнюю работу. - Если
reviewзапрошено после дедлайна и ваша работа зачтена, то вы получаете половину полного балла за домашнюю работу.
- Исходный код практических задач по программированию размещайте в папке
project. - Файлам и модулям даем осмысленные имена, в соответствии с официально принятым стилем.
- Структурируем код, используем как классы, так и отдельно оформленные функции.
- К функциям, классам, модулям должна быть написана документация.
- Тесты для домашних заданий размещайте в папке
tests. - Формат именования файлов с тестами
test_[какой модуль\класс\функцию тестирует].py. - Для работы с тестами рекомендуется использовать
pytest. - Для запуска тестов необходимо из корня проекта выполнить следующую команду:
python ./scripts/run_tests.py
.
├── .github - файлы для настройки CI и проверок
├── project - исходный код домашних работ
├── scripts - вспомогательные скрипты для автоматизации разработки
├── tasks - файлы с описанием домашних заданий
├── tests - директория для unit-тестов домашних работ
├── README.md - основная информация о проекте
└── requirements.txt - зависимости для настройки репозитория
Оценка за курс складывается из баллов, полученных за работу в семестре.
Задачи разделены на взвешенные блоки, где коэффициент это баллы за летучку (контрольная работа на 5 минут).
Пусть например, в курсе два блока по 2 задачи и 2 летучки. Пусть за первые две задачи получено 5 баллов, за оставшиеся 1 и 2 соответственно.
Пусть за летучки получено 1 и 0.5 баллов. Тогда оценка за курс:
Баллы конвертируются в оценки следующим образом:
| Балл | ECTS | Классика |
|---|---|---|
| (90 -- 100] | A | 5 |
| (80 -- 90] | B | 4 |
| (70 -- 80] | C | 4 |
| (60 -- 70] | D | 3 |
| (50 -- 60] | E | 3 |
| [0 -- 50] | F | 2 |
- Павел Алимов @Krekep