Существуют ли средства, предотвращающие списывание студентов на экзамене по программированию, сдаваемом на компьютерах?

Я преподаю курс «Введение в информатику», где мы в основном занимаемся программированием на C. Мне выделили лабораторию для преподавания курса, но студентов больше, чем доступных компьютеров. Кроме того, я не контролирую эти компьютеры, и почти каждый студент имеет права администратора на них. Также часто студенты приносят свои ноутбуки в класс и подключаются к Wi-Fi в кампусе, который я вообще не могу контролировать.

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

Существуют ли программные инструменты, которые могут помочь разрешить использование компьютера, но при этом предотвратить несанкционированное сотрудничество?

+1 Та же проблема существует (обычно) в компонентах лаборатории вычислительной физики. С нетерпением жду прочтения ответов.
Извините, но этот вопрос кажется мне не по теме по двум причинам. 1. Существуют ли программные инструменты, которые могут помочь использовать компьютер и избежать плагиата? Если вы ищете программное обеспечение, чтобы ваши ученики не списывали; Вы можете задать свой вопрос на SoftwareRecommendations.SE . 2. Ваш вопрос касается не только научных кругов, но и менеджера компании, который хочет проверить своих сотрудников с помощью компьютерного экзамена?
Этот вопрос кажется не по теме, потому что это запрос на покупку программного обеспечения. Попробуйте рекомендации по программному обеспечению — но сначала посмотрите их мета, чтобы узнать, как спрашивать, там.
Этот вопрос может помочь вам, так как он касается программного обеспечения для плагиата, но не для программирования.
@Enthusiastic, согласно этому метасообщению , сообщество не считает вопросы программного обеспечения не относящимися к теме, если в остальном они являются нормальными вопросами (концентрированными, а не слишком широкими)
Если ваш работодатель не предоставляет вам надлежащие условия, это не ваша вина, и вы не можете нести ответственность за любые последствия отсутствия надлежащих условий (при условии, что вы запросили их). В конечном счете, все, что вы можете сделать, это быть максимально бдительными и регулярно спрашивать учащихся, что делает их код, чтобы убедиться, что они знают, что он делает, и уверены в том, что он делает.
Экзамены - это небольшие алгоритмы, которые нужно решить, и изначально я планировал... разрешить использование компьютера... чтобы студенты могли проверить правильность своих алгоритмов. - Почему? Разве учащиеся не должны быть в состоянии сами понять, прежде чем приступить к их реализации, верны ли их алгоритмы?
Категорически не согласен с близким голосованием. Это вопрос о педагогике информатики , а не только о рекомендациях по программному обеспечению. Педагогические вопросы строго по теме.
Написанный экзамен. Серьезно. Вы преподаете информатику (или так вы говорите), а не компьютерную грамотность.
Я знаю некоторых учителей, которые используют какую-то программу, называемую заблокированным браузером. Хотя я действительно не знаю, будет ли она работать с компьютерами учеников. Если бы в лаборатории было достаточно компьютеров, вы также могли бы отключить кабель Ethernet... надеюсь, это поможет.
Если они используют свой собственный компьютер, вам, конечно же, никогда не следует заставлять их устанавливать на него программное обеспечение...
Вы можете погуглить «PRAKTOMAT», чтобы увидеть, что возможно. Хотя я считаю, что этот проект связан с Java, он может помочь вам с вашей оценкой.
Не могли бы вы сделать мне одолжение? Всех, кого вы обнаружите "мошенничающими", отправляйте ко мне. В реальном мире программирования мы называем это «решением проблем», и я не могу найти достаточно слов.
Мне почему-то не разрешено отвечать прямо; тем не менее, мне разрешено комментировать. Эта проблема не имеет решения. Коммерческие нерешения делают неприятные вещи с рассматриваемой машиной, в то время как мошенники просто научились использовать другой компьютер или мобильный телефон и вводить ответ.
Иногда психологический подход работает лучше всего. Вы должны сказать своему ученику, что вы будете «MOSS» их ответы, чтобы найти похожий код: theory.stanford.edu/~aiken/moss (как указано ниже). Это будет препятствовать сотрудничеству.
Один важный момент: экзамены обычно критичны ко времени, по крайней мере, на моих курсах мы всегда бежали на пределе, чтобы закончить все вопросы в отведенное время. Таким образом, вам не нужно ничего особенного, чтобы они не могли обманывать, просто сделайте это немного сложным и трудоемким, и большинство людей не будут беспокоиться и вместо этого потратят свое драгоценное время на решение проблем!
«почти каждый студент имеет права администратора для них», тогда в программном обеспечении вы ничего не можете сделать. Вы можете решить эту проблему на сетевом уровне с помощью соответствующих брандмауэров, но это не поможет вам, если учащийся использует свое собственное устройство и подключается к сети, которую вы не контролируете, тогда, что касается технических решений, у вас нет реальных вариантов. . Права администратора == делай что хочешь с компом.

Ответы (9)

В моем университете в Великобритании есть два вида оценивания курсов программирования. Пройдено/не пройдено «практические», когда учащимся даются задачи по программированию, и им явно разрешено обсуждать их друг с другом и искать в Интернете. Когда студент будет готов представить свое решение, демонстратор просмотрит его и задаст вопросы и т. д., чтобы убедиться, что студент понимает, почему он написал код, который написал. Студенты не получают за это оценку, которая засчитывается в их общую оценку за год, но они должны «сдать» практические занятия, чтобы пройти год.

Затем есть письменные экзамены без доступа к компьютеру. Есть вопросы вроде «напишите какой-нибудь код, который решит эту проблему», а также более концептуальные «почему это так? Когда бы вы использовали это? вопросы. Для битов «запись кода» маркеры будут вычитать очень мало баллов за простые синтаксические ошибки и тому подобное. Вопрос не столько в том, «может ли студент написать программу, которая скомпилируется с первой попытки?» как «может ли студент придумать хороший алгоритм, который решает проблему и дать разумное выражение ее в коде?». Обратите внимание, что эти курсы (в моем университете) никогда не предназначены для конкретных языков; это такие курсы, как «функциональное программирование», «объектно-ориентированное программирование» или «машинное обучение», каждый из которых будет использовать определенный язык,

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

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

После окончания британского университета, где мы сдавали практические экзамены «зачет/незачет» и письменные экзамены, я вынужден не согласиться с вашим последним абзацем. Я ненавидел его не потому, что у меня не было доступа к Интернету, я ненавидел его потому, что лист бумаги не является хорошей IDE. Мне часто требовалось 3-4 цикла "написать код -> увидеть недостаток, который можно исправить чертой посередине -> переписать все упражнение, потому что нет места". Это тривиально сделать даже в Блокноте, но так сложно и долго на бумаге. Однако я не могу себе представить, чтобы прокторы когда-либо согласились на экзамен с какой-либо электроникой.
Также распространен в Соединенных Штатах и ​​даже в технических частях собеседований при приеме на работу. 2 из моих последних 4 заставляли меня писать на бумаге или на доске, как я буду выполнять определенные действия на языке, а последний в основном задавал мне вопросы, специфичные для языка. Он не должен компилироваться, но он должен иметь смысл!
Что касается вопросов «почему это так?»: я всегда ненавижу, когда мой профессор задает вопрос типа «почему этот код компилируется?» потому что мой ответ всегда "потому что нет ошибки!" :)Если вы спросите: «Почему ___ делает ___?» вопросы, пожалуйста, задавайте их в форме, которая имеет только один конкретный ответ.
Мой университет в Новой Зеландии был во многом таким же, вплоть до классов, которые использовали любой язык, который им нравился, за исключением какого-либо компонента «рассуждения» или какого-либо прямого взаимодействия с людьми, делающими выставление оценок. Помню, в то время мне не нравилось писать код на бумаге. Однако, побывав некоторое время в реальном мире, я обнаружил, что университетские экзамены — это единственное место, где вы когда-либо хотели бы, чтобы программист работал в одиночку без доступа к Интернету. Не лучшая подготовка к реальности.
+1, это может быть вводный урок CS, но это просто означает, что сейчас лучшее время, чтобы научить студентов тому, что CS на самом деле не о компьютерах!
@Magus: но тогда экзамены не предназначены для подготовки студентов к реальности, даже если курс, который они изучают, был. Способы оценки программистов на самом деле, вероятно, не подходят для оценки студентов, хотя было бы интересно попробовать. Поместите 8 студентов в комнату с 200 000 базой кода и кучей пользовательских историй и скажите им, что у них есть 2 недели, чтобы закрыть как можно больше незавершенных запросов функций, чтобы удовлетворить команду контроля качества ;-)

Рассмотрим две вещи, которые (почти) уникальны для информатики:

  • изучение методов программирования в Интернете является стандартной практикой, а stackexchange.com является хитом №1 по многим запросам. Требовать, чтобы кто-то запоминал детали, не является отраслевой практикой. Я бы не стал браться за работу по программированию в любом месте, где указано «нет доступа в Интернет». И я обращаюсь к ссылкам на функции по 10 раз в день, чтобы проверить такие вещи, как имя_функции и имя_функции или заменить (игла, стог сена) / заменить (стог сена, игла) головные боли.

  • Вполне вероятно, что 10 студентов дадут почти идентичные результаты для простых алгоритмов. Просто не так уж много способов ответить «написать функцию для усреднения значений в массиве». Давайте посмотрим: цикл, сумма, счет. вары i, s, c. Если вы обучали стандартному форматированию кода, вполне возможно, что вы могли бы получить 8/10 абсолютно идентичных ответов, но при этом ни одного читерства. Это обычная проблема для процессоров читерства/плагиата, которые не настроены для CS.

Удачи, и возвращайтесь с любым решением, которое сработало для вас.

«Вполне вероятно, что 10 студентов дадут почти идентичные результаты для простых алгоритмов». Не стоит недооценивать воображение студентов ;-)
«Требовать, чтобы кто-то запоминал детали, не является отраслевой практикой». Хммм... Требовать от студента знания синтаксиса и идиомы языка - стандартная практика. Точно так же, чтобы знать отличительные особенности и наиболее распространенные приложения структур данных и алгоритмов, изучаемых на вводном занятии.
При жестком ограничении времени не хватает времени, чтобы все прогуглить.
@dmckee - идиомы, конечно. Но синтаксис? Я гуглю синтаксис каждый день и считаюсь одним из лучших программистов, если не лучшим, в своей компании.
Он преподает c. Я не использую его регулярно, и единственное, что мне нужно посмотреть, это приоритет менее часто используемых операторов. Я согласен, что вам, возможно, придется поискать синтаксис в большом языке, но c настолько мал, что вы можете назвать его «милым». Ну, я также просматриваю синтаксис указателя функции, если (запрещаю FSM) мне нужно идти по этому пути.
@MassimoOrtolano, как человек, который оценивал работу первокурсников CS, Питер очень в курсе. Оценивать задания мне было легко и быстро, так как почти все они были одинаковыми. «Да, этот такой же, как и предыдущий, 100%!» Очевидно, что не у каждого студента был одинаковый кодовый символ для символа, но сходство было поразительным в течение трех лет, когда я выполнял эту работу. За все время мне пришлось провести только одно расследование академического проступка, и это оказалось простой ошибкой с коммунальным принтером.
@BrianS: На самом деле ваш комментарий косвенно содержит несколько интересных моментов, которые стоило бы обсудить, которые также зависят от страны, но это завело бы обсуждение слишком далеко. Все, что я могу здесь сказать, это то, что на моем самом первом экзамене в качестве учителя, прежде чем оценивать работы, я подготовил таблицу, в которой перечислялись возможные, по моему мнению, ошибки с соответствующими отметками, которые нужно было вычесть; сегодня, примерно 15 лет спустя, ясно, что мне всегда не удавалось предсказать возможные ошибки, и что воображение студентов гораздо более развито, чем мое. PS: я работаю в сфере, отличной от CS.
@peter: «Я бы не стал браться за работу по программированию в любом месте, где указано «нет доступа к Интернету»», хотя есть некоторые вполне респектабельные работы, где доступ в Интернет требует таких значительных усилий, что вы должны прекратить это делать по тривиальным причинам. Например, у AV-компании может быть лаборатория без доступа в Интернет, точка. Если вы хотите что-то найти, вы проходите через службу безопасности и используете другую машину. Или это может быть несколько более расслабленно, с двумя разными машинами, которые, по крайней мере, находятся в одной комнате.
@SteveJessop Я не возражал бы против политики безопасности, в которой говорилось: «Этот ящик предназначен для кодирования, а другой — для Интернета». Работает на меня, работает на них, показывает, что у них хорошее чувство равновесия.

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

На самом деле, это не так сложно проверить: студент должен большую часть времени работать в среде IDE и лишь время от времени просматривать страницы. Если кому-то кажется, что вы слишком много просматриваете, вы можете сделать более тщательный осмотр. GMail или Facebook будут нагло светиться на экране.

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

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

Хотя вы можете не считать это программным инструментом: пользовательский дистрибутив Linux, который загружается напрямую со съемного носителя и содержит только необходимые инструменты разработки (без браузера, возможно, даже с удалением драйверов Ethernet / Wi-Fi) сделает это; просто заставьте их загрузить это для экзамена.

(Если кто-то сможет — в установленные сроки и с помощью предоставленных инструментов — написать драйверы и браузер, он получит не только проходной балл, но и предложение о работе.)

Да, пользовательский Linux считается программным инструментом. Или инструменты, если вы хотите пойти глубже. Кроме того, если вы хотите углубиться, поместите Linux на перезаписываемый носитель и настройте IDE для записи на этот носитель. Затем учащиеся могут сдать носители в конце задания, если это необходимо. Также отключите монтирование жестких дисков.
Наш администратор просто заблокировал установленный дистрибутив linux, отключив нелокальные сетевые маршруты (и это было на курсе по работе с сетями, поэтому нам нужен был доступ к определенным серверам для проверки нашей работы). Конечно, у студентов не было прав администратора, это звучит как очень плохая идея...

Решение, использованное моим профессором, состоит в том, чтобы разрешить учебник в классе (или любой другой лист бумаги), но не доступ в Интернет; даже доступа к компьютеру нет. Весь экзамен был на бумаге.

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

Как студент, я думаю, что в этом методе нет ничего плохого. Конечно, другие могут не согласиться.

+1 Я хотел предложить бумагу. Я думаю, что заставлять студентов выполнять некоторые компьютерные экзамены на бумаге — хороший метод обучения. Помимо предотвращения мошенничества, это помогает бросить вызов чрезмерной зависимости современного мира от Интернета (не говоря уже о том, что я лучше, конечно). Это также отличный способ убедиться, что учащиеся усваивают знания; студенты не могут рассчитывать на то, что будут пользоваться Интернетом каждые 5 минут, если они получат настоящую работу по программированию - им придется знать наизусть.
Этот. В любом случае, они не будут изучать реальное программирование в университете, так зачем беспокоиться? Научите их понятиям и игнорируйте синтаксические «ошибки».

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

Студенты должны платить за программное обеспечение, которое выполняет функции, ожидаемые от вируса? Думаю, лучше я напишу свое эссе на столе кровью.
@Pharap, это не так. Мне не нравится эта практика, но это довольно эффективное средство защиты от читерства, позволяющее учащимся напечатать эссе на знакомом им устройстве. Он достаточно эффективен и упрощает выставление оценок по сравнению с письменными экзаменами, написанными на скорую руку. Если у вас есть лучшее решение, вы можете заработать немного денег.
Я бы сказал, что возможность заблокировать систему — это что-то полезное для вируса. Если это просто полноэкранный текстовый процессор/офисный пакет, который не закроется, пока не истечет определенное время, это не так уж плохо. Лично я по-прежнему считаю, что ничто не заменит того, чтобы студенты использовали предоставленные компьютеры (с указанными компьютерами, имеющими строгое управление правами).
@Pharap, отличительной чертой вируса является то, что его вызов не является добровольным и что существует злонамеренная цель. Возможность выполнения также полезна для вируса, но не все исполняемые файлы являются вирусами. Просто невозможности бросить курить недостаточно для предотвращения мошенничества; остальная часть машины также должна быть заблокирована. Некоторые позволяют вместо этого сдавать экзамены с ручкой и бумагой, если у вас нет программного обеспечения, но большинство студентов в наши дни более эффективно работают на своей собственной клавиатуре. Наличие достаточного количества лабораторий, заполненных компьютерами для экзаменов в юридической школе, и не более того, является непомерно высокой стоимостью для многих юридических школ.
Конечно, Blackboard CMS предоставляет заблокированный браузер (используемый для прохождения викторин и экзаменов), который имеет аналогичную цель: доступ возможен только к браузеру.

Существуют ли программные инструменты, которые могут помочь использовать компьютер и избежать плагиата?

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

Пожалуйста, не надо. Мы уже производим множество «программистов», которые не могут программировать всю свою жизнь. Пусть пользуются литературой во время экзамена, все равно на рабочем месте могут пользоваться...
@Davor Я ничего не писал о запрете студентам использовать литературу во время экзамена. Действительно, они не смогут использовать онлайн-литературу, но вполне могут принести на экзамен свои собственные книги.
Мы уже производим множество «программистов», которые не могут программировать всю свою жизнь. Пусть пользуются литературой во время экзамена, все равно могут использовать ее на рабочем месте. - О, ирония.
Если целью курса информатики является подготовка мастеров (программистов), то здесь что-то серьезно не так.
@Raphael Как и во многих дисциплинах, у CS есть программы, преследующие несколько целей. Один из них, конечно, заключается в продвижении современного уровня техники, но в качестве побочного эффекта они создают группу людей, которые найдут работу программистами, но (надеюсь) принесут более глубокие теоретические знания, чем их менее образованные коллеги. Большая часть технической работы может быть выполнена с людьми, которые имеют очень целенаправленное образование и подготовку, но часто бывает полезно иметь несколько глубоких мыслителей, слоняющихся вокруг.
@dmckee Хотя я согласен с вашим последним предложением, вывод «ученые-компьютерщики иногда работают программистами, поэтому мы должны учить их программированию» является заблуждением. Вы учите инженеров-механиков сварке или инженеров-электриков паять? (Я не думаю, что нам следует обсуждать это здесь, поскольку это уводит нас от темы вопроса.)
@Davor Ваши предположения (и выводы) неверны. Желающим программистам нечего делать в научно-ориентированном университете. Зачем стучать в башню из слоновой кости и просить плотника? Пусть программисты обучат будущих программистов (это называется «ученичество»), и и ваша, и моя проблема будут решены. Забавно, что вы предполагаете, что исследователи могут сделать эту работу.
@ Рафаэль - проблема в том, что университеты не ориентированы на науку, а просто отдельные высокомерные профессора, которые считают ниже себя обучать «мастерству». И ваше предложение обучать инженеров-программистов, как сантехников, говорит мне о том, насколько вы понятия не имеете, о чем говорите. Еще раз, просто остановитесь, пожалуйста.
@Davor Может быть, вам нужен межкультурный опыт. Ваше утверждение определенно неверно здесь, в Германии. У нас даже есть своя высшая школа прикладных наук, наши университеты ориентированы на исследования. Но согласитесь, кажется, мне не стоит тратить время на «дискуссию» с вами, поскольку вы не можете увидеть разницу между программистом, инженером-программистом и учеными-компьютерщиками.
Целью дизайна образования CS не должно быть обучение программированию, точно так же, как цель дизайна английского Lit. образование не должно учить правописанию. Это просто естественный способ выразить действительное содержание образования. И чтобы оставаться в теме, не могли бы вы забанить лит. студент от использования средства проверки орфографии в Word?!

Ну, я не проверял, есть ли для этого реальные программные инструменты, но я расскажу вам, что я делал раньше. Количество подходов к правильному решению весьма ограничено; если это проблема типа экзамена, вы должны ожидать получения многих почти идентичных или даже фактически идентичных ответов - как указывает @Peter . Но

изобретательность заблуждения безгранична, а творчество заблудших безгранично...

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

Проблема, по-видимому, заключается в несанкционированном сотрудничестве (т. е. учащиеся могут помогать друг другу, обмениваясь информацией), а не в том, что учащиеся передают идентичный код.
Трудно, если вообще возможно, обнаружить (или предотвратить) общение студентов в компьютерном классе. Студент, который понимает концепции, сдаст аналогичный, но работающий код (обычный), студент, который не понимает, сдаст аналогичный неработающий код, что должно вызвать тревогу.

Двумя такими программами являются MOSS и JPlag:

http://theory.stanford.edu/~aiken/moss/

Moss (для измерения сходства программного обеспечения) — это автоматическая система для определения сходства программ. На сегодняшний день основное применение Moss заключается в обнаружении плагиата на уроках программирования. С момента своего создания в 1994 году Moss очень эффективно справился с этой ролью. Алгоритм moss значительно лучше других алгоритмов обнаружения читерства (по крайней мере, известных нам).

http://jplag.ipd.kit.edu/

JPlag — это система, которая находит сходство между несколькими наборами файлов исходного кода. Таким образом, он может обнаружить плагиат программного обеспечения. JPlag не просто сравнивает байты текста, но знает о синтаксисе языка программирования и структуре программы и, следовательно, устойчив к многим попыткам скрыть сходство между плагиатными файлами. В настоящее время JPlag поддерживает Java, C#, C, C++, Scheme и текст на естественном языке.

Инструменты, похожие на эти (не уверен, какие именно), использовались в обеих школах, в которых я был. Студентов ловили и наказывали даже после того, как они переименовали переменные и изменили порядок функций в файле.

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