Skip to content

Latest commit

 

History

History
391 lines (293 loc) · 17 KB

File metadata and controls

391 lines (293 loc) · 17 KB

Система оценивания

Детальное описание системы оценивания курса "Продуктовая разработка бэкенда".

Общая структура

Максимальный балл: 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: Основы бэкенд-разработки (50 баллов)

Практические задания (30 баллов)

Модуль 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 Интеграция всех модулей, защита

Промежуточное тестирование (10 баллов)

Формат: Online тест (неделя 8-9)

Темы:

  • HTTP протокол и REST API (2 балла)
  • aiohttp и Python async (2 балла)
  • SQLAlchemy и PostgreSQL (2 балла)
  • Тестирование (pytest) (2 балла)
  • Безопасность (JWT, hashing) (2 балла)

Типы вопросов:

  • Множественный выбор
  • Анализ кода
  • Написание кода (короткие функции)

Итоговое задание семестра (10 баллов)

Задание: Создать полноценное 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 недели

Семестр 2: Микросервисы и продуктовая разработка (50 баллов)

Практические задания (20 баллов)

Модуль 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 Выполнение минимальных требований

Pull Requests в общий проект (20 баллов)

Критерии оценивания 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
  • Рефакторинг существующего кода
  • Добавление тестов
  • Оптимизация производительности
  • Исправление багов
  • Улучшение документации

Code Review участие (5 баллов)

Критерии:

Активность Баллы Требования
Минимальное участие 2 5+ качественных review за семестр
Активное участие 3 10+ качественных review
Очень активное 4 15+ качественных review
Эксперт 5 20+ качественных review, помощь другим

Качественный review включает:

  • Конструктивные комментарии
  • Проверку функциональности
  • Предложения по улучшению
  • Проверку тестов
  • Проверку безопасности

Типы комментариев:

  • CRITICAL (блокирует merge): +3 балла за найденную проблему
  • MAJOR (желательно исправить): +2 балла
  • MINOR/SUGGESTION: +1 балл
  • PRAISE (похвала): +0.5 балла

Финальная защита (5 баллов)

Формат: Презентация своего вклада в проект (10 минут + 5 минут вопросы)

Критерии:

Критерий Баллы Описание
Презентация 2 Структура, ясность, визуализация
Технические детали 2 Глубина понимания, объяснение решений
Ответы на вопросы 1 Знание кода, архитектурные решения

Требования к презентации:

  • Обзор реализованной функциональности
  • Архитектурные решения
  • Проблемы и их решения
  • Метрики (покрытие тестами, производительность)
  • Демонстрация работы

Дополнительные баллы (+15)

Рефакторинг существующего кода (+5)

Задача Баллы Критерии
Малый рефакторинг 1 Улучшение 1-2 функций/классов
Средний рефакторинг 2 Рефакторинг модуля, улучшение структуры
Большой рефакторинг 3-5 Значительное улучшение архитектуры

Примеры:

  • Извлечение дублирующегося кода
  • Применение design patterns
  • Улучшение performance
  • Разделение ответственности (SRP)

Добавление тестов к чужому коду (+5)

Задача Баллы Критерии
Unit тесты 1-2 Покрытие функций/классов
Integration тесты 2-3 Тесты с БД, API endpoints
E2E тесты 3-5 Полные сценарии использования

Требования:

  • Покрытие >80%
  • Качественные тесты (не только happy path)
  • Edge cases покрыты
  • Документация тестов

Документация и best practices (+5)

Задача Баллы Критерии
Улучшение 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

Open Source вклад

Задача Баллы
Bug fix в используемой библиотеке +3
Feature в используемой библиотеке +5
Создание полезного инструмента +5

Менторство

Задача Баллы
Помощь другим студентам (5+ человек) +2
Проведение воркшопа/демо +3
Создание обучающих материалов +3

Примеры расчета итоговой оценки

Пример 1: Отличник

Семестр 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

Пример 2: Хорошист

Семестр 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

Пример 3: На грани

Семестр 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 - более уверенно)

Апелляция оценки

Если вы не согласны с оценкой:

  1. Отправьте запрос на апелляцию в течение 3 дней
  2. Укажите конкретные пункты несогласия
  3. Предоставьте доказательства (ссылки на PR, commits, и т.д.)
  4. Апелляция рассматривается в течение 5 дней

Контакты:

FAQ

Q: Можно ли пересдать задание? A: Да, в течение 1 недели после deadline с штрафом -20%

Q: Засчитываются ли PR с багами? A: Только после исправления багов в follow-up PR

Q: Как получить максимальный балл? A: Качественно выполнять все задания + активно участвовать в проекте + брать бонусные задачи

Q: Можно ли работать в команде? A: В финальном проекте - да, но оценка индивидуальная по вашему вкладу

Q: Что если не успел сдать все задания? A: Лучше сдать меньше заданий, но качественно. Есть бонусы для компенсации.


Успехов в курсе! Качество важнее количества! 🚀