Или история о том, как система Frieren помогла нам понять, что происходит в головах 360 студентов, и почему посещаемость всё-таки имеет значение


Пролог: Когда 360 студентов — это не просто число

Представьте себе: вы преподаватель курса "Объектно-ориентированное программирование" в МАИ. У вас 360 студентов, 16 лекций в семестре, 7 домашних заданий, и каждый студент считает, что его случай — особенный. А еще у вас есть ChatGPT, GitHub Copilot и куча других AI-инструментов, которые студенты используют так активно, что вы уже не понимаете, кто из них действительно понимает код, а кто просто копирует.

Знакомо? Если да, то добро пожаловать в клуб. Если нет — считайте, что вам повезло. Но мы решили не просто жаловаться, а сделать что-то полезное. Так родилась система Frieren — комплексная платформа для автоматизации образовательного процесса, которая не только упростила нашу жизнь, но и открыла глаза на некоторые интересные закономерности.


Часть 1: Frieren — не просто красивое имя

Название системы — отсылка к аниме (да, мы такие), но функциональность у неё вполне серьёзная. Frieren — это микросервисная архитектура, состоящая из:

  • Backend API (FastAPI) — RESTful API для всех операций

  • Frontend (Next.js) — веб-интерфейс для преподавателей

  • Telegram Bot (aiogram) — бот для студентов и преподавателей

  • N8N Workflows — автоматизация бизнес-процессов

  • RabbitMQ — асинхронная обработка событий

  • PostgreSQL — база данных

Архитектура системы Frieren
Архитектура системы Frieren

Звучит сложно? На самом деле, всё довольно просто: студент сканирует QR-код на лекции, система автоматически регистрирует посещаемость, отправляет данные в Google Sheets, а преподаватель получает уведомление. Домашние задания проверяются на AI-генерацию через OpenAI GPT-4, и всё это происходит без нашего участия.

Но это ещё не всё. Система также автоматически назначает варианты домашних заданий каждому студенту при регистрации. Больше никаких споров о том, кто какой вариант получил — всё справедливо и прозрачно. А когда студент отправляет работу, система сразу анализирует её на AI-генерацию и готовит предварительный отчёт для преподавателя.

Основные принципы анализа кода на "вайб-кодинг" :

  1. Стилистические паттерны: Проверка комментариев, избыточности, консистентности и шаблонности в именовании.

  2. Структурная логика: Поиск шаблонных, стандартизированных или излишне абстрактных решений, характерных для обучающих примеров ИИ.

  3. Типичные артефакты: Выявление ошибок, недочётов (дублирование, неиспользуемый код) или неестественных, неидиоматичных конструкций.

  4. Инновационность vs. стандартность: Оценка степени оригинальности, отклонения от типовых примеров документации и наличия контекстно-зависимых решений.

Но самое интересное началось, когда мы накопили данные.


Часть 2: Цифры, которые заставляют задуматься

Масштаб бедствия (или успеха?)

  • 360 студентов в системе

  • 7 преподавателей вели практику (и всем им система помогала проверять работы)

  • 98.4% сдали хотя бы одну работу (это хорошо!)

  • Средний балл: 82.5 из 120 возможных

  • Средний процент AI-генерации: 57.5%

  • Средняя посещаемость: 8.4 из 16 лекций (52.5%)

Интерфейс системы Frieren
Интерфейс системы Frieren

Представьте: 7 преподавателей проверяют работы 360 студентов. Без автоматизации это был бы кошмар. Но система взяла на себя рутинные задачи: назначение вариантов, предварительный анализ работ, выявление подозрительных случаев. Преподаватели получили готовые отчёты и могли фокусироваться на проверке качества кода, а не на поиске проблем.

Первое, что бросается в глаза: студенты активно используют AI. И это нормально. Но дальше начинается самое интересное.

Открытие №1: Посещаемость всё-таки имеет значение

Студенты, которые посещали 12–16 лекций из 16, имели в среднем на 15–20% выше баллы, чем те, кто приходил реже.

Но есть и исключения: мы обнаружили 25 «самоучек» — студентов с высокой успеваемостью (≥100 баллов) при низкой посещаемости (≤6 лекции). Это те самые ребята, которые могут пропустить лекцию, но всё равно написать отличный код. Правда, таких меньшинство.

Вывод: Регулярное посещение лекций — это не просто формальность. Оно действительно помогает. Но если вы гений-самоучка, система это тоже заметит.

Открытие №2: Золотая середина AI-использования

Вот тут начинается самое интересное. Мы проанализировали, как процент AI-генерации влияет на качество работ, и обнаружили любопытную закономерность:

  • Оптимальный диапазон: 55-75% AI → средний балл 89.2

  • Низкий AI (<40%): средний балл 76.4

  • Высокий AI (>80%): средний балл 71.8

Да, вы правильно прочитали. Умеренное использование AI даёт лучшие результаты, чем полный отказ или полная зависимость. Это как с кофе: одна чашка бодрит, десять — убивает.

Почему так происходит?

  1. Студенты с низким AI (<40%) часто тратят слишком много времени на рутинные задачи, которые можно было бы решить быстрее с помощью AI. Они «изобретают велосипед» вместо того, чтобы фокусироваться на понимании концепций.

  2. Студенты с высоким AI (>80%) копируют код, не понимая его. Когда приходит время объяснить решение или исправить ошибку, они теряются.

  3. Студенты с оптимальным AI (55-75%) используют AI как инструмент: они получают базовый код, но затем адаптируют его, понимают, как он работает, и улучшают. Это и есть правильный подход.

Открытие №3: Паттерны, которые рассказывают истории

Система автоматически выявила несколько интересных паттернов:

AI-зависимые студенты (12 человек):

  • AI > 80%, балл < 70

  • Проблема: они полагаются на AI, но не понимают код

  • Решение: индивидуальные беседы и задания с запретом AI

Самостоятельные студенты (31 человек):

  • AI < 40%, балл > 90

  • Это те, кто действительно понимает материал

  • Но они могли бы работать эффективнее, используя AI как помощника

Оптимальный баланс:

  • 55-75% AI — это "золотая середина"

  • Эти студенты показывают лучшие результаты


Часть 3: Как автоматизация изменила нашу работу

Для преподавателей: больше времени на важное

До автоматизации:

  • Ручная регистрация посещаемости на каждой лекции

  • Поиск подозрительных работ вручную

  • Трата времени на рутинные задачи

После автоматизации:

  • QR-коды регистрируют посещаемость автоматически

  • Система сама назначает варианты домашних заданий каждому студенту

  • Система сама анализирует работы на AI-генерацию

  • Преподаватель получает готовый отчёт с подозрительными случаями

  • Больше времени на индивидуальную работу со студентами

Результат: Мы экономим примерно 3-4 часа в неделю на рутинных операциях. Это время можно потратить на консультации, улучшение материалов или просто на отдых (да, преподаватели тоже люди). А для 7 преподавателей, которые работали с системой, это означало возможность эффективно проверять работы 360 студентов без потери качества.

Для студентов: прозрачность и удобство

Telegram-бот позволяет:

  • Быстро зарегистрироваться на лекцию (сканирование QR-кода)

  • Отправить домашнее задание одной командой

  • Получить уведомление о проверке работы

  • Посмотреть свои оценки и комментарии

Всё это работает 24/7, без необходимости писать преподавателю в личку в 2 часа ночи (хотя некоторые всё равно пишут, но это уже другая история).

Раннее выявление проблем

Система автоматически выделяет студентов с подозрительными паттернами:

  • Высокий AI % + низкий балл → нужна беседа

  • Низкая посещаемость + падающие оценки → нужна поддержка

  • Резкое изменение показателей → стоит разобраться

Это позволяет вмешаться вовремя, до того, как ситуация станет критической.


Часть 4: Современные реалии преподавания программирования

Эра AI-инструментов: новая реальность

ChatGPT, GitHub Copilot, Cursor, и куча других инструментов — это уже не будущее, это настоящее. Студенты используют их активно, и это нормально. Вопрос не в том, используют ли они AI, а в том, как они его используют.

Наша задача как преподавателей:

  • Не запрещать AI (это бесполезно)

  • Учить студентов эффективно использовать AI

  • Различать использование AI как помощника и полную зависимость от него

  • Фокусироваться на понимании, а не на копировании

Масштабирование без потери качества

360 студентов — это много. Но автоматизация позволяет эффективно работать с таким количеством, не теряя в качестве. Система обрабатывает регистрации, анализирует работы, выявляет проблемы — всё это происходит автоматически, а преподаватель фокусируется на том, что действительно важно: обучении.

Данно-ориентированный подход

Раньше мы оценивали успеваемость субъективно: "Эта группа хорошо работает", "Тот студент старается". Теперь у нас есть данные:

  • Точные цифры по посещаемости

  • Процент AI-генерации в каждой работе

  • Корреляции между различными факторами

  • Объективные выводы о том, что работает, а что нет

Это позволяет принимать решения на основе фактов, а не предположений.


Заключение

Автоматизация образовательного процесса через систему Frieren показала свою эффективность. Мы не только упростили рутинные задачи (назначение вариантов, регистрация посещаемости, предварительный анализ работ), но и получили ценную информацию о том, как студенты учатся и как они используют AI.

Главные выводы: Умеренное использование AI (55-75%) даёт лучшие результаты, посещаемость имеет значение для большинства студентов, а автоматизация позволяет 7 преподавателям эффективно работать с 360 студентами без потери качества.

Современные реалии требуют адаптации методик преподавания к эре AI-инструментов. Но это не проблема — это возможность сделать образование лучше, эффективнее и интереснее.

Система же система доступна на GitHub: https://github.com/DVDemon/frieren

Комментарии (12)


  1. ChePeter
    14.01.2026 14:25

    А почему на всех сгенерированных картинках голова смотрит мимо экрана дисплея?


    1. itmai Автор
      14.01.2026 14:25

      С картинкой случилось то же, что и с кодом сделаным с помощью AI. Вроде бы с ней все хорошо - но почему она такая, мы не знаем :-)


  1. sfirestar
    14.01.2026 14:25

    Хотелось бы всё-таки поподробнее узнать о том, как вы детектите сгенерированный ИИ код и как отличаете его от "человеческого"?


    1. itmai Автор
      14.01.2026 14:25

      Мы загружаем исходный код из Github-репозитория студента и для каждого файла выставляем "оценку" того, на сколько он может быть сгенерирован AI. Далее - вычисляем среднее.

      В исходниках нашего проекта (ссылка в статье) есть точный промпт того как мы проверяем.

      Если обобщить: то слишком универсальный/типовой код с красивыми именами переменных и отсутствующими оригинальными конструкциями - вызывает подозрения в том что он сгенерирован.


  1. nkrainov
    14.01.2026 14:25

    А как-то проверяется, что студент действительно был на лекции, а не, допустим, получил фото qr-кода от друга и таким образом отметился?

    В моём университете частая история, когда человек отдавал свою карточку-пропуск, по которой можно отмечать (все лекционные аудитории оборудованы ридерами), другу, в итоге человек имел большой процент посещаемости, несмотря на свое физическое отсутствие. Работает на всех предметах, где преподавателю лень считать людей в аудитории и проверять с количеством "приложивших" пропуск (или проводить по старинке перекличку)


    1. itmai Автор
      14.01.2026 14:25

      Действительно, изначально студенты просто пересылали QR код в "секретный чат" и посещяемость взлетала "до небес". После этого пришлось добавить еще один фактор - установить "максимальное количество регистраций" на лекцию.

      То есть, преподаватель перед тем как показать QR устанавливает через бот число студентов которые он видит (надо просто посчитать). В боте есть функция автоподсчета людей по фотографии (OpenCV + DLib FaceDetector) но она пока плохо работает на большом количестве студентов.

      Такой "второй фактор" имеет психологический эффект - если кто-то пересылает QR в "секретный чат" то он отнимает место у своего товарища за соседней партой. Возможно не лучшее решение, но, как показала практика - вполне рабочее.


  1. TadaoYamaguchi
    14.01.2026 14:25

    Я не студент и не программист, возможно поэтому не понимаю: почему важно чтобы студент не писал код с помощью AI.
    Ведь в реальной работе совсем другие критерии оценки качества работы программиста


    1. itmai Автор
      14.01.2026 14:25

      Мы обучаем студентов не "писать код" (это действительно могут делать AI помощники), мы обучаем техникам конструирования программ (абстракция, конструирование алгоритмов и т.д.). Это умение важно и в эру AI, поскольку позволяет правильно структурировать и формулировать задачу, а главное добиваться того что код не просто будет написан, но еще будет работать так как надо.

      Но и все еще есть большой класс алгоритмических задач, с которыми современные LLM пока не умеют справляться.


      1. TadaoYamaguchi
        14.01.2026 14:25

        Понятно, спасибо


  1. Misato_sun
    14.01.2026 14:25

    А насколько существенно в наше время вообще посещение лекций? Ведь можно найти кучу подкастов по интересующей теме. Очень надеюсь на ваш ответ- меня эта тема давно зацепила...


    1. itmai Автор
      14.01.2026 14:25

      Статистика показала, что те студенты, которые посещают лекции в среднем учатся лучше. И если относится к обучению как к "услуге" которую тебе оказывает ВУЗ, то не получать эту услугу - кажется не вполне рациональный поступок :-)

      Так же, на лекциях у нас часто возникают интересные обсуждения неочевидных моментов по изучаемому материалу, которые помогают проще и лучше разобраться в предмете.


  1. SimSonic
    14.01.2026 14:25

    Frieren — не просто красивое имя. Название системы — отсылка к аниме (да, мы такие), но функциональность у неё вполне серьёзная.

    Не знаю, что будет делать моя система, но заранее забиваю за собой название — Сайтама xD