Я преподаю курс «Введение в информатику», где мы в основном занимаемся программированием на C. Мне выделили лабораторию для преподавания курса, но студентов больше, чем доступных компьютеров. Кроме того, я не контролирую эти компьютеры, и почти каждый студент имеет права администратора на них. Также часто студенты приносят свои ноутбуки в класс и подключаются к Wi-Fi в кампусе, который я вообще не могу контролировать.
Экзамены — это небольшие алгоритмы, которые нужно решить, и изначально я планировал — как и другие преподаватели курса — позволить студентам использовать компьютер (из лаборатории или свой собственный) для проверки правильности своих алгоритмов. Однако в нынешнем положении вещей, я думаю, студентам довольно легко обмануть: они могут использовать Facebook, электронную почту или любой интернет-инструмент для обмена исходным кодом или информацией.
Существуют ли программные инструменты, которые могут помочь разрешить использование компьютера, но при этом предотвратить несанкционированное сотрудничество?
В моем университете в Великобритании есть два вида оценивания курсов программирования. Пройдено/не пройдено «практические», когда учащимся даются задачи по программированию, и им явно разрешено обсуждать их друг с другом и искать в Интернете. Когда студент будет готов представить свое решение, демонстратор просмотрит его и задаст вопросы и т. д., чтобы убедиться, что студент понимает, почему он написал код, который написал. Студенты не получают за это оценку, которая засчитывается в их общую оценку за год, но они должны «сдать» практические занятия, чтобы пройти год.
Затем есть письменные экзамены без доступа к компьютеру. Есть вопросы вроде «напишите какой-нибудь код, который решит эту проблему», а также более концептуальные «почему это так? Когда бы вы использовали это? вопросы. Для битов «запись кода» маркеры будут вычитать очень мало баллов за простые синтаксические ошибки и тому подобное. Вопрос не столько в том, «может ли студент написать программу, которая скомпилируется с первой попытки?» как «может ли студент придумать хороший алгоритм, который решает проблему и дать разумное выражение ее в коде?». Обратите внимание, что эти курсы (в моем университете) никогда не предназначены для конкретных языков; это такие курсы, как «функциональное программирование», «объектно-ориентированное программирование» или «машинное обучение», каждый из которых будет использовать определенный язык,
Это также побуждает студентов изучать способы проектирования и написания доказуемо правильных программ: если они могут рассуждать о программах на более глубоком уровне, чем интуиция, то написание программ на бумаге является лучшей проверкой этого, чем позволить им экспериментировать и тестировать до тех пор, пока не будет получен результат». выглядит правильно 'для входных данных, которые они ему дали.
Кажется, это хороший способ избежать списывания оценок, которые имеют значение, и способствовать четкому пониманию важного материала курса. Тем не менее, многие студенты ненавидят писать код на бумаге без доступа к SO или компилятору!
:)
Если вы спросите: «Почему ___ делает ___?» вопросы, пожалуйста, задавайте их в форме, которая имеет только один конкретный ответ.Рассмотрим две вещи, которые (почти) уникальны для информатики:
изучение методов программирования в Интернете является стандартной практикой, а stackexchange.com является хитом №1 по многим запросам. Требовать, чтобы кто-то запоминал детали, не является отраслевой практикой. Я бы не стал браться за работу по программированию в любом месте, где указано «нет доступа в Интернет». И я обращаюсь к ссылкам на функции по 10 раз в день, чтобы проверить такие вещи, как имя_функции и имя_функции или заменить (игла, стог сена) / заменить (стог сена, игла) головные боли.
Вполне вероятно, что 10 студентов дадут почти идентичные результаты для простых алгоритмов. Просто не так уж много способов ответить «написать функцию для усреднения значений в массиве». Давайте посмотрим: цикл, сумма, счет. вары i, s, c. Если вы обучали стандартному форматированию кода, вполне возможно, что вы могли бы получить 8/10 абсолютно идентичных ответов, но при этом ни одного читерства. Это обычная проблема для процессоров читерства/плагиата, которые не настроены для CS.
Удачи, и возвращайтесь с любым решением, которое сработало для вас.
На одном из моих предметов по программированию нам разрешили конспекты занятий, наши собственные решения упражнений и интернет; но нет связи с другими студентами (электронная почта, facebook...). На самом деле ничто не мешало им, просто лектор слонялся вокруг.
На самом деле, это не так сложно проверить: студент должен большую часть времени работать в среде IDE и лишь время от времени просматривать страницы. Если кому-то кажется, что вы слишком много просматриваете, вы можете сделать более тщательный осмотр. GMail или Facebook будут нагло светиться на экране.
Вы, конечно, можете быть более скрытным, например, использовать Lynx для входа в свою почту. Но на самом деле, если вы можете это сделать, вы, вероятно, сможете написать простой алгоритм без обмана.
Хотя вы можете не считать это программным инструментом: пользовательский дистрибутив Linux, который загружается напрямую со съемного носителя и содержит только необходимые инструменты разработки (без браузера, возможно, даже с удалением драйверов Ethernet / Wi-Fi) сделает это; просто заставьте их загрузить это для экзамена.
(Если кто-то сможет — в установленные сроки и с помощью предоставленных инструментов — написать драйверы и браузер, он получит не только проходной балл, но и предложение о работе.)
Решение, использованное моим профессором, состоит в том, чтобы разрешить учебник в классе (или любой другой лист бумаги), но не доступ в Интернет; даже доступа к компьютеру нет. Весь экзамен был на бумаге.
Сам экзамен заключался в разработке некоторых алгоритмов или, возможно, в создании некоторых классов; материал, для которого учебник бесполезен, но он все же дает вам возможность найти названия и основные понятия.
Как студент, я думаю, что в этом методе нет ничего плохого. Конечно, другие могут не согласиться.
Юридические школы решают эту проблему в течение многих лет, заставляя студентов покупать программное обеспечение для экзаменов, которое блокирует их системы и позволяет им использовать программное обеспечение для сдачи экзамена только во время экзамена. Однако были проблемы . Кроме того, экзамены в юридической школе обычно представляют собой эссе или другие нефункциональные вопросы, тогда как для экзамена по программированию также может потребоваться компилятор. Я не знаю версии этого, которая позволяет использовать текстовый редактор, терминал и компилятор.
Существуют ли программные инструменты, которые могут помочь использовать компьютер и избежать плагиата?
Я не могу ответить на поставленный выше вопрос и был бы удивлен эффективностью такого инструмента. Итак, я предлагаю другое решение: сдать экзамены на бумаге, отсканировать бумаги в конце экзаменов, отправить копии обратно студентам и дать им пару дней на отладку своих программ. Таким образом, различия между бумажной и рабочей версиями могут быть приняты во внимание для определения окончательной оценки.
Ну, я не проверял, есть ли для этого реальные программные инструменты, но я расскажу вам, что я делал раньше. Количество подходов к правильному решению весьма ограничено; если это проблема типа экзамена, вы должны ожидать получения многих почти идентичных или даже фактически идентичных ответов - как указывает @Peter . Но
изобретательность заблуждения безгранична, а творчество заблудших безгранично...
Так что ошибки + копирование = легко поймать. Если вы хотите механизировать, проверьте одинаковые или похожие ошибки синтаксического анализа/компиляции или одинаковый выбор идентификаторов программ, которые не компилируются или не работают должным образом.
Двумя такими программами являются MOSS и JPlag:
http://theory.stanford.edu/~aiken/moss/
Moss (для измерения сходства программного обеспечения) — это автоматическая система для определения сходства программ. На сегодняшний день основное применение Moss заключается в обнаружении плагиата на уроках программирования. С момента своего создания в 1994 году Moss очень эффективно справился с этой ролью. Алгоритм moss значительно лучше других алгоритмов обнаружения читерства (по крайней мере, известных нам).
JPlag — это система, которая находит сходство между несколькими наборами файлов исходного кода. Таким образом, он может обнаружить плагиат программного обеспечения. JPlag не просто сравнивает байты текста, но знает о синтаксисе языка программирования и структуре программы и, следовательно, устойчив к многим попыткам скрыть сходство между плагиатными файлами. В настоящее время JPlag поддерживает Java, C#, C, C++, Scheme и текст на естественном языке.
Инструменты, похожие на эти (не уверен, какие именно), использовались в обеих школах, в которых я был. Студентов ловили и наказывали даже после того, как они переименовали переменные и изменили порядок функций в файле.
299792458
энту
410 ушел
землянин
ff524
Фарап
ДжеффЭ
ДжеффЭ
Рафаэль
пользователь22098
о0'.
применять
Чад Робинсон
Джошуа
неизвестный протокол
Фалько
Кадры Кэтрин Уайт