Студенты обожают ChatGPT. В идеале, они хотят закоротить профессора и чатгопоту напрямую, то есть посылать задачу от профессора гопоте, пересылать ответ профессору, возражения слать гопоте назад итд - пока не получится решения. Лучше всего это делать скриптом, чтобы студент вообще не был вовлечен в решение задачи и занимался своими студенческими делами, пока чатгопота и профессор разговаривают.
Как же обломать крылья этой мечте?
Можно использовать факт, что гопота - это статический анализатор текста. “Статический” означает что если какой-то информации в тексте задачи нет, а также ее нет в тренировочных данных гопоты - то для гопоты этой информации нет во вселенной вообще, оно пытается гадать и попадает пальцем в небо. Хотя во вселенной такая информация вполне может существовать - просто чтобы ее получить, нужно запустить некую программу.
Иными словами, чтобы не дать гопоте прорваться, нужно чтобы критичная для решения задачи информация не присутствовала в условии, а возникала в процессе решения в результате процесса, который гопота не может повторить. Например:
1. Критичная информация: количество тактов между событиями. Процесс, который гопота не может повторить: симуляция на уровне регистровых передач.
2. Критичная информация: задержка на пути комбинационной логики. Процесс, который гопота не может повторить: логический синтез из языков описания аппаратуры.
Мы с соратниками по Школе Синтеза Цифровых Схем сконструировали такую задачу и я опробовал ее на ~30 студентах, которые контактировали меня в LinkedIn с просьбой дать им рекомендацию. Я попросил каждого написать конвейерный блок на языке описания аппаратуры SystemVerilog, который реализует вычисление простой формулы с плавающей точкой. Формула у каждого студента индивидуальна. Два требования: блок студента должен использовать данные мною подблоки для сложения, умножения и вычитания, а также данное мною тестовое окружение.
Вот как выглядит задание:
Дальше -
https://habr.com/ru/articles/902400/