Pull to refresh

К вопросу о борьбе со списыванием

Reading time 3 min
Views 2.2K
Я так понимаю, тут есть преподаватели, ведущие практики всевозможные. Вот, делюсь с ними (выставляю на обсуждение) педагогической мыслью :) Все мы знаем, как сложно победить тягу студента к списыванию и копированию различных решений из интернета (кстати, это совсем даже не плохо — в повседневной практике, например, программирования копипаст является полезным инструментом, но он должен быть разумным). Ниже описан способ хоть какого-то противодействия бездумному копипасту при помощи систем контроля версий.



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

Но бороться с 'тупым' списыванием всё-равно надо. И тут в голову приходит мысль: у нас же есть замечательные системы контроля версий плюс замечательный ресурс github.com (вообще, подойдёт любой, который позволяет удобно просматривать изменения, сделанные между commit'ами, просто Github — это как теорема о существовании, такие ресурсы есть).

Ничего нам не мешает поставить перед студентом такое необходимое для зачёта решения задачи: она должна быть выложена в виде репозитория на Github'е, при этом этапы работы над заданием должны быть отмечены отдельными commit'ами и сопровождены вменяемыми аннотациями.

Какая от этого выгода: (1) студент учится работать с системой контроля версий; (2) преподаватель легко может определить ситуацию, когда один репозиторий склонирован/скопирован с другого, то есть, когда студент занялся бездумным копипастом; (3) если студент всё же занимается копипастом, то вынужден копипастить с умом, по кусочкам, давая логичные аннотации тем частям работы, которые он постепенно копирует, чтобы создать видимость того, что работа не выполнена за один шаг — уже неплохо, есть шанс, что через такое копирование студент хоть что-то осознает.

(4) если же студент решает через последовательность checkout'ов и commit'ов из старого репозитория автоматически сделать новый (то есть, когда студент неким скриптом делает checkout очередного коммита из существующего репозитория, правит даты создания файлов и commit'ит этот псевдо-новый кусочек в новый репозиторий), то такая ситуация отслеживается, если мы просим его выкладывать результат в виде git-репозитория, для которого легко генерируются логи со списком всех комментариев и преподаватель может просто поискать по тексту комментариев похожий лог, и проверить, насколько похожи две работы. Или же для репозитория можно сгенерировать один большой patch, суммирующий историю изменений с момента создания репозитория. По таким патчам тоже можно легко отследить подобное воссоздание нового репозитория по старому.

Вот. В итоге, требование сдавать работы в виде репозиториев каких-нибудь современных систем контроля версий с аннотацией шагов работы над программой вполне может усложнить жизнь безыдейным и бездумным копипастерам.

Tags:
Hubs:
+28
Comments 146
Comments Comments 146

Articles