Детальное описание системы оценивания курса "Продуктовая разработка бэкенда".
Максимальный балл: 100 + 15 бонусных
Распределение:
- Семестр 1: 50 баллов
- Семестр 2: 50 баллов
- Бонусы: до 15 баллов
Итоговая оценка (по 10-балльной шкале):
- 95-115: 10 (Outstanding - выдающийся результат)
- 90-94: 9 (Excellent - отлично)
- 85-89: 8 (Very Good - очень хорошо)
- 75-84: 7 (Good - хорошо)
- 65-74: 6 (Satisfactory - удовлетворительно)
- 55-64: 5 (Adequate - достаточно)
- 45-54: 4 (Poor - слабо)
- 35-44: 3 (Very Poor - очень слабо)
- 25-34: 2 (Fail - неудовлетворительно)
- < 25: 1 (Complete Fail - полный провал)
Модуль 1: Веб-разработка и API (8 баллов)
| Неделя | Задание | Баллы | Критерии |
|---|---|---|---|
| 1 | HTTP протокол, настройка окружения | 1 | Успешная настройка, базовое понимание HTTP |
| 2 | TODO API на aiohttp | 2 | CRUD endpoints, валидация, правильные статусы |
| 3 | Подключение PostgreSQL | 2 | SQLAlchemy модели, миграции, CRUD с БД |
| 4 | Аутентификация JWT | 2 | Регистрация, логин, защищенные endpoints |
| 5 | Pagination, file uploads | 1 | Корректная реализация, edge cases |
Модуль 2: Качество и тестирование (8 баллов)
| Неделя | Задание | Баллы | Критерии |
|---|---|---|---|
| 6 | Unit тесты | 2 | Покрытие >70%, fixtures, parametrize |
| 7 | Integration тесты | 2 | Тесты с БД, изоляция, test containers |
| 8 | CI/CD pipeline | 2 | GitHub Actions, автоматические тесты |
| 9 | Логирование | 2 | Structlog, логи событий и ошибок |
Модуль 3: Кэширование и производительность (8 баллов)
| Неделя | Задание | Баллы | Критерии |
|---|---|---|---|
| 10 | Redis кэширование | 2 | Кэш для запросов, TTL, invalidation |
| 11 | Async endpoints | 2 | Полностью async код, asyncpg, aioredis |
| 12 | Background jobs | 2 | Celery/arq, очередь, обработка задач |
| 13 | Оптимизация запросов | 2 | Индексы, решение N+1, профилирование |
Модуль 4: TypeScript и контракты (6 баллов)
| Неделя | Задание | Баллы | Критерии |
|---|---|---|---|
| 14 | Express сервер | 2 | TypeScript, типизация, базовые routes |
| 15 | OpenAPI/Swagger | 2 | Документация API, code generation |
| 16 | Итоговая работа семестра 1 | 2 | Интеграция всех модулей, защита |
Формат: Online тест (неделя 8-9)
Темы:
- HTTP протокол и REST API (2 балла)
- aiohttp и Python async (2 балла)
- SQLAlchemy и PostgreSQL (2 балла)
- Тестирование (pytest) (2 балла)
- Безопасность (JWT, hashing) (2 балла)
Типы вопросов:
- Множественный выбор
- Анализ кода
- Написание кода (короткие функции)
Задание: Создать полноценное REST API с аутентификацией
Требования:
- aiohttp приложение (1 балл)
- PostgreSQL с миграциями (1 балл)
- JWT аутентификация (1 балл)
- Redis кэширование (1 балл)
- Unit и integration тесты (2 балла)
- CI/CD pipeline (1 балл)
- Документация API (1 балл)
- Code quality (ruff, mypy, black) (1 балл)
- Деплой (локально или облако) (1 балл)
Deadline: Конец 16 недели
Модуль 5: Docker и деплой (5 баллов)
| Неделя | Задание | Баллы | Критерии |
|---|---|---|---|
| 17 | Dockerfile для приложения | 1 | Оптимизированный образ, правильная структура |
| 18 | docker-compose setup | 2 | Multi-container, volumes, networks |
| 19 | CI/CD с Docker | 1 | Build и push образов в CI |
| 20 | Деплой на VPS | 1 | Working deployment, health checks |
Модуль 6: Микросервисная архитектура (7 баллов)
| Неделя | Задание | Баллы | Критерии |
|---|---|---|---|
| 21 | Проектирование архитектуры | 1 | Domain boundaries, diagram |
| 22 | Разделение на сервисы | 2 | 2+ сервиса, HTTP коммуникация |
| 23 | Event-driven взаимодействие | 2 | RabbitMQ, events между сервисами |
| 24 | Saga pattern | 1 | Distributed transaction, компенсация |
| 25 | Resilience patterns | 1 | Circuit breaker, retries, timeouts |
Модуль 7: Продвинутые темы (5 баллов)
| Неделя | Задание | Баллы | Критерии |
|---|---|---|---|
| 26 | API versioning | 1 | v1 и v2 API, backward compatibility |
| 27 | Rate limiting | 1 | Защита от abuse, Redis для лимитов |
| 28 | Distributed tracing | 2 | Трейсинг через сервисы, Jaeger/Zipkin |
| 29 | Load testing | 1 | Locust/k6, анализ bottlenecks |
Модуль 8: Финальный проект (3 балла - базовые задания)
| Неделя | Задание | Баллы | Критерии |
|---|---|---|---|
| 30-32 | Базовые задания проекта | 3 | Выполнение минимальных требований |
Критерии оценивания PR:
| Критерий | Баллы | Описание |
|---|---|---|
| Функциональность | 5 | Код работает, решает задачу, нет багов |
| Код качество | 5 | Следует style guide, DRY, SOLID |
| Тесты | 4 | Unit и integration тесты, покрытие >70% |
| Документация | 2 | Docstrings, README, comments где нужны |
| Code Review | 2 | Ответы на комментарии, исправления |
| CI/CD | 2 | Проходит все проверки, нет ошибок |
Минимальные требования:
- Минимум 5 успешно смердженных PR за семестр
- Каждый PR минимум 3 балла (из 6)
- Средний балл за PR умножается на 3.33
Примеры задач для PR:
- Реализация нового endpoint
- Рефакторинг существующего кода
- Добавление тестов
- Оптимизация производительности
- Исправление багов
- Улучшение документации
Критерии:
| Активность | Баллы | Требования |
|---|---|---|
| Минимальное участие | 2 | 5+ качественных review за семестр |
| Активное участие | 3 | 10+ качественных review |
| Очень активное | 4 | 15+ качественных review |
| Эксперт | 5 | 20+ качественных review, помощь другим |
Качественный review включает:
- Конструктивные комментарии
- Проверку функциональности
- Предложения по улучшению
- Проверку тестов
- Проверку безопасности
Типы комментариев:
- CRITICAL (блокирует merge): +3 балла за найденную проблему
- MAJOR (желательно исправить): +2 балла
- MINOR/SUGGESTION: +1 балл
- PRAISE (похвала): +0.5 балла
Формат: Презентация своего вклада в проект (10 минут + 5 минут вопросы)
Критерии:
| Критерий | Баллы | Описание |
|---|---|---|
| Презентация | 2 | Структура, ясность, визуализация |
| Технические детали | 2 | Глубина понимания, объяснение решений |
| Ответы на вопросы | 1 | Знание кода, архитектурные решения |
Требования к презентации:
- Обзор реализованной функциональности
- Архитектурные решения
- Проблемы и их решения
- Метрики (покрытие тестами, производительность)
- Демонстрация работы
| Задача | Баллы | Критерии |
|---|---|---|
| Малый рефакторинг | 1 | Улучшение 1-2 функций/классов |
| Средний рефакторинг | 2 | Рефакторинг модуля, улучшение структуры |
| Большой рефакторинг | 3-5 | Значительное улучшение архитектуры |
Примеры:
- Извлечение дублирующегося кода
- Применение design patterns
- Улучшение performance
- Разделение ответственности (SRP)
| Задача | Баллы | Критерии |
|---|---|---|
| Unit тесты | 1-2 | Покрытие функций/классов |
| Integration тесты | 2-3 | Тесты с БД, API endpoints |
| E2E тесты | 3-5 | Полные сценарии использования |
Требования:
- Покрытие >80%
- Качественные тесты (не только happy path)
- Edge cases покрыты
- Документация тестов
| Задача | Баллы | Критерии |
|---|---|---|
| Улучшение README | 1 | Подробные инструкции, примеры |
| Архитектурная документация | 2 | ADR, диаграммы, объяснения |
| Туториал/Guide | 2-3 | Пошаговое руководство для новых |
| Презентация/доклад | 3-5 | Доклад о технологии/подходе |
Примеры:
- Architecture Decision Records (ADR)
- API документация с примерами
- Onboarding guide для новых разработчиков
- Best practices guide по конкретной теме
| Нарушение | Штраф | Описание |
|---|---|---|
| Опоздание сдачи задания | -10% за день | Максимум -50% |
| Плагиат | -100% + отчисление | Нулевая толерантность |
| Failing CI в merged PR | -2 балла | За каждый случай |
| Некачественный код в production | -3 балла | Критические баги после merge |
| Нарушение style guide | -1 балл | Систематическое нарушение |
| Игнорирование code review | -2 балла | Нет ответов/исправлений |
| Задача | Баллы |
|---|---|
| Настройка мониторинга (Prometheus/Grafana) | +3 |
| Настройка centralized logging | +2 |
| Улучшение CI/CD pipeline | +2 |
| Автоматизация deploy | +3 |
| Задача | Баллы |
|---|---|
| Bug fix в используемой библиотеке | +3 |
| Feature в используемой библиотеке | +5 |
| Создание полезного инструмента | +5 |
| Задача | Баллы |
|---|---|
| Помощь другим студентам (5+ человек) | +2 |
| Проведение воркшопа/демо | +3 |
| Создание обучающих материалов | +3 |
Семестр 1:
- Практические задания: 28/30 (выполнены почти все)
- Тест: 9/10
- Итоговое задание: 9/10
- Итого: 46/50
Семестр 2:
- Практические задания: 18/20
- Pull Requests: 18/20 (6 отличных PR)
- Code Review: 5/5 (20+ качественных review)
- Финальная защита: 5/5
- Итого: 46/50
Бонусы:
- Рефакторинг: +3
- Тесты: +2
- Документация: +2
- Итого: +7
Общий балл: 46 + 46 + 7 = 99 → Оценка: 10
Семестр 1:
- Практические задания: 24/30
- Тест: 7/10
- Итоговое задание: 7/10
- Итого: 38/50
Семестр 2:
- Практические задания: 15/20
- Pull Requests: 15/20 (5 хороших PR)
- Code Review: 3/5 (10 review)
- Финальная защита: 4/5
- Итого: 37/50
Бонусы:
- Рефакторинг: +1
- Итого: +1
Общий балл: 38 + 37 + 1 = 76 → Оценка: 7
Семестр 1:
- Практические задания: 20/30 (не все сдано)
- Тест: 6/10
- Итоговое задание: 6/10
- Итого: 32/50
Семестр 2:
- Практические задания: 12/20
- Pull Requests: 12/20 (5 PR с минимальным качеством)
- Code Review: 2/5 (мало участия)
- Финальная защита: 3/5
- Итого: 29/50
Бонусы: 0
Общий балл: 32 + 29 = 61 → Оценка: 5
Совет: Добавить хотя бы +4 балла бонусами → 65 (оценка 6 - более уверенно)
Если вы не согласны с оценкой:
- Отправьте запрос на апелляцию в течение 3 дней
- Укажите конкретные пункты несогласия
- Предоставьте доказательства (ссылки на PR, commits, и т.д.)
- Апелляция рассматривается в течение 5 дней
Контакты:
- Email: course-admin@example.com
- Telegram: @course_admin
- GitHub Issues с тегом
grade-appeal
Q: Можно ли пересдать задание? A: Да, в течение 1 недели после deadline с штрафом -20%
Q: Засчитываются ли PR с багами? A: Только после исправления багов в follow-up PR
Q: Как получить максимальный балл? A: Качественно выполнять все задания + активно участвовать в проекте + брать бонусные задачи
Q: Можно ли работать в команде? A: В финальном проекте - да, но оценка индивидуальная по вашему вкладу
Q: Что если не успел сдать все задания? A: Лучше сдать меньше заданий, но качественно. Есть бонусы для компенсации.
Успехов в курсе! Качество важнее количества! 🚀