Что делать, если ученик размещает свою (домашнюю) работу на github

В то время как использование github для исходного кода, как правило, является тем, что я люблю поощрять, если студент помещает туда свою домашнюю работу (информатика), другим, как правило, легко найти и скопировать, что создает искушение использовать его в качестве «базы» для своих. собственную (идентичную в большинстве случаев) домашнюю работу - хотя я понимаю преимущества использования github (версионирование, простой переход между машинами, возможности совместной работы), и отдельный студент, который его использует, подтвердил, что это действительно его учетная запись, и может объяснить код хорошо, я все еще чувствую себя некомфортно с этим.

Кто-нибудь еще занимался этим вопросом? Как вы справиться с этим? Есть ли в университете какая-то политика в отношении открытой публикации работ, созданных студентами? (даже если это часть задания)?

В качестве примечания, моя общая политика в отношении «очень похожих» заданий заключается в том, что тот, кто отправил его первым, получает баллы, а другие работы не получают никаких баллов, однако я обычно прошу студентов объяснить свой код и как он работает. , почему они выбрали X вместо Y и т. д. в таких случаях в первую очередь.

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

  1. Студент не сможет продемонстрировать свою работу (например, ссылку на свой github в своем резюме).
  2. Студент не будет студентом вечно, и, таким образом, репозиторий не сможет быть приватным бесплатно на неопределенный срок.
  3. У меня очень мало контроля (и интереса в его контроле) после окончания урока, поэтому студент может решить сделать хранилище общедоступным после окончания урока.
Битбакет бесплатен.
Разве они не могут разместить его на github в частном репозитории, недоступном для других студентов?
Частные репозитории GitHub бесплатны для студентов: github.com/edu . Как учитель, вы также можете получить материал. Они называют это «Запросить скидку», но для студентов это «Микро-аккаунт (обычно 7 долларов в месяц) с пятью частными репозиториями, пока вы учитесь».
@yakatz - я думаю, это было бы решением, я посмотрю на это - спасибо!
Обратите внимание, что Github обрабатывает образовательную учетную запись вечно.
Как насчет локального репозитория git? Если вам нужно резервное копирование в облаке, вы можете использовать его вместе с Dropbox и т. д.
Откровенно говоря, пункты 2 и 3 вы в любом случае абсолютно не контролируете. Проще всего было бы тонко изменить задание, чтобы «прошлогоднее решение» не сработало.
«Есть ли в университете какая-то политика в отношении открытой публикации работ, созданных студентами?» Это вы нам расскажите: есть ли такая политика в вашем вузе?
@fkraiem нет, в настоящее время это не так и позволяет профессорам иметь дело по своему усмотрению, таким образом, это моя личная политика в отношении подобных заданий. Я спрашиваю, какая политика есть в других учреждениях.
Я не вижу большой разницы в том, чтобы обсуждать задание со своими сверстниками за обедом, за исключением того, что код более доступен.
Я вижу огромное отличие от обсуждения задания со своими сверстниками за обедом, потому что код более доступен.
"ничего не делать" здесь кажется разумным вариантом.

Ответы (8)

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

Делает это намного сложнее для автогрейдера
@ user2813274 Индивидуальная обратная связь поможет учащемуся узнать больше, поэтому оно того стоит.
@ user2813274: Что именно? Я не компьютерщик, но программирую для удовольствия. Он каким-то образом получает доступ к сложности кода?
@user1997744 autograder — это сайт, на котором учащиеся могут загружать свой код, выполнять его и оставлять отзывы, если он проходит / не проходит — в основном то же самое, что и модульный тест, однако я могу скрыть тестовые примеры от студентов, чтобы они не кодируйте для конкретных сценариев и упускайте общее решение.
@ user2813274: Я полагаю, после этого вы сами изучаете код? Потому что два студента могут получить общее решение, но один фрагмент кода может быть не так хорошо написан, эффективен и т. д.
@user1997744 user1997744 автооценщик - это дополнительный инструмент, который учащиеся могут использовать перед тем, как сдать задание (хотя он довольно хорошо коррелирует с тем, как они обычно справляются ..)
@ user2813274 Можно поместить любую личную информацию (например, личные интересы) в блок комментариев, а затем использовать какое-либо программное обеспечение, такое как MOSS от Stanford (а также отправить любые другие версии задания, которые вы найдете в Интернете).

Я думаю, что ваш пункт 1 в корне противоречит предотвращению совместного использования / копирования домашних заданий. Если кто-то может продемонстрировать свою работу, он может продемонстрировать ее своим однокурсникам. Ваши пункты 2 и 3 предполагают, что вы хотите повторно использовать одно и то же задание снова и снова при повторном обучении в классе, что делает этот конфликт еще более неизбежным. Невозможно разрешить студентам публично делиться своей работой с кем-либо, кто захочет их нанять, и в то же время держать ее в секрете от своих однокурсников.

Вы ничего не можете сделать, чтобы навсегда скрыть все, что ученик делает в вашем классе. Я думаю, что лучшее решение — потребовать, чтобы студенты сохраняли конфиденциальность своей работы во время урока (используя учетную запись Github edu, Bitbucket, локальное репозиторий git и т. д.), а затем позволить им делать все, что они захотят. Это означает, что вам придется давать новые задания каждый раз, когда вы проводите урок, но я думаю, что в любом случае это хорошая практика.

Здесь нужно сбалансировать многое, и «лучшее» решение несколько субъективно.

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

Еще одна вещь, которую следует учитывать: в моем студенческом университете не было общекафедральной политики по общедоступному контролю версий (и я не помню, чтобы у профессоров была такая политика). Однако я помню, как слышал, что размещение кода на общедоступном GitHub нарушает общую политику против плагиата. Такая двусмысленность вредна для всех. Независимо от того, что вы решите, это правильный путь, я бы порекомендовал четко указать ваши ожидания в отношении общедоступного контроля версий.

Похоже, в этом обсуждении упущен один момент: по крайней мере, в США студенты владеют авторскими правами на свою (нетривиальную) работу. Как правообладатели они могут воспроизводить, распространять и демонстрировать свои работы. Конечно, они также могут создавать производные работы. Так что ограничение прав студентов может быть даже незаконным.

Авторское право требует превышения определенного «порога оригинальности». Решение простой задачи программирования может быть недостаточно оригинальным, чтобы гарантировать авторское право.
Если решение простой задачи по программированию недостаточно оригинально, чтобы заслужить авторское право, вероятно, недостаточно оригинально и то, что этот студент публикует свою работу в программе грантов — решения таких простых задач по программированию легко доступны в Интернете.

Вы можете попробовать автоматическое обнаружение плагиата, такое как MOSS, разработанное Стэнфордом. Он обнаруживает сходство между файлами кода, независимо от того, как названы переменные, порядок выполнения и т. д. Затем человек может вручную просмотреть сходство и решить, не является ли это плагиатом. Более того, насколько я помню, MOSS позволяет вводить общую кодовую базу, а это означает, что «стартовый код», предоставленный всем студентам, не будет учитываться при определении сходства.

Он «пытается» обнаружить плагиат. Есть несколько других программ, но ни одна из них не выявляет плагиат полностью.

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

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

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

Игнорируй это.

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

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

И github — это одно, но у студентов есть внутренние файловые серверы, вики и другие способы организовать обмен текущими домашними заданиями или даже полным набором заданий за прошлый год.

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

Если вы действительно видите, что код скопирован между двумя студентами, вы можете его не принять. Но это нужно делать, сравнивая их решения, а не мониторя гитхаб. Они могут копировать в частном порядке или они могли работать вместе, и вам нужно решить это на основе представления их работы.

Когда они действительно смогут повторно использовать код предыдущего года, вы можете подумать об изменении заданий таким образом, чтобы код нельзя было использовать, по крайней мере, не понимая его.

Оптимальное решение — сопровождать автоматическую оценку кода проверкой кода лицом к лицу, когда учащиеся должны объяснить вам свой код, и вы также можете попросить их внести незначительные изменения онлайн, чтобы убедиться, что они знают, что они делают. делал. Если вы сделаете это, вам не придется беспокоиться о копировании, так как код-ревью скажет вам, насколько хорошо они знают материал.

Проблема в том, что это решение требует много работы — не менее 15 минут на ученика в неделю. У меня нет на это достаточного бюджета, поэтому я использую неоптимальное решение: делаю еженедельные задания только на 10%-20% от итоговой оценки, чтобы стимул копировать был минимальным. При этом я слежу за тем, чтобы итоговый экзамен содержал вопросы, очень похожие на задания. Таким образом, учащиеся, самостоятельно выполнившие домашнее задание, получат на выпускном экзамене более высокую оценку, чем копировщики.