Статья:

ОПРЕДЕЛЕНИЕ ПЛАГИАТА В ИСХОДНЫХ КОДАХ РАБОТ СТУДЕНТОВ

Конференция: VII Студенческая международная заочная научно-практическая конференция «Молодежный научный форум: технические и математические науки»

Секция: 3. Информационные технологии

Выходные данные
Сорокин Д.С. ОПРЕДЕЛЕНИЕ ПЛАГИАТА В ИСХОДНЫХ КОДАХ РАБОТ СТУДЕНТОВ // Молодежный научный форум: Технические и математические науки: электр. сб. ст. по мат. VII междунар. студ. науч.-практ. конф. № 7(7). URL: https://nauchforum.ru/archive/MNF_social/7(7).pdf (дата обращения: 20.08.2018)
Лауреаты определены. Конференция завершена
Эта статья набрала 0 голосов
Мне нравится
Дипломы
лауреатов
Сертификаты
участников
Дипломы
лауреатов
Сертификаты
участников
на печатьскачать .pdfподелиться

ОПРЕДЕЛЕНИЕ ПЛАГИАТА В ИСХОДНЫХ КОДАХ РАБОТ СТУДЕНТОВ

Сорокин Дмитрий Сергеевич
студент Санкт-Петербургского национального исследовательского университета информационных технологий, механики и оптики, РФ, г. Санкт-Петербург
Шиков Алексей Николаевич
научный руководитель, научный руководитель, доцент Санкт-Петербургского национального исследовательского университета информационных технологий, механики и оптики, РФ, г. Санкт-Петербург

 

Обнаружение плагиата в исходных кодах программ является актуальной задачей не только в коммерческой сфере, где идет серьезная борьба за интеллектуальную собственность, но и в сфере образования, где плагиат в студенческих работах является одной из основных проблем образовательных учреждений. С этой же проблемой столкнулись и массовые открытые онлайн курсы [4]. Так, например, 73 из 239 студентов Массачусетского Технологического института, проходивших курс “CE 1.00: Introduction to Computers and Problem Solving”, подверглись дисциплинарному наказанию за использование в своих работах чужих фрагментов кода [2].

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

Среди причин плагиата в студенческих работах выделяют [3; 6]:

  1. Отсутствие требуемых технических знаний:
    1. отсутствие базовых навыков;
    2. плохо усвоенный материал.
  2. Совместная работа над заданием.
  3. Академическое давление.
  4. Плохо спланированное время.
  5. Самоплагиат или плагиат наиболее часто повторяющейся функциональности.
  6. Желание получить более высокую оценку.

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

Совместная работа над заданием является одной из тех проблем, когда студенты могут не понимать, что они занимаются плагиатом [5]. При этом достаточно часто как преподаватели, так и инструкторы курсов заранее оговаривают условия сдачи работ. Вполне обычным является условие, при котором студенты могут обсуждать задание и проблемы, которые возникают в ходе решения, но не могут делиться фрагментами кода. Например, практически в каждом курсе, размещенном на образовательной платформе Coursera [1], можно встретить сообщение от инструкторов курса “... feel free to post on any subject relative to this course but please refrain from posting any code (working or not) if it's a solution to a graded exercise”.

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

При разработке или использовании программ детекторов плагиата следует обратить внимание на то, какие дублирующие фрагменты кода наиболее часто встречаются в студенческих работах. Всего выделяют четыре типа дублирующих фрагментов кода (клонов) [7]:

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

Второй тип — структурно/синтаксически идентичные фрагменты кода с внесением изменений в имена переменных, типов, строковых литералов или комментариев.

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

Четвертый тип — два или более фрагментов кода выполняют одни и те же вычисления, но синтаксически реализованы по-разному.

Очевидно, что студенты чаще всего действуют согласно технологии copy-paste. Таким образом, наиболее распространенными типами «клонирования» среди студентов являются первый и второй, гораздо реже третий тип. Четвертый тип следует учитывать тем специалистам, которые разрабатывают детекторы для коммерческого применения.

Наиболее распространенными техниками обнаружения дублирующих фрагментов кода являются:

  1. Основанные на сравнении строк (string based) — самый простой способ обнаружения совпадений, при котором каждая строка из одного файла с исходным кодом сравнивается с каждой строкой из другого файла. Также используют модифицированную версию данной техники — «параметризированное сравнение строк», когда имена идентификаторов заменяются некоторым символом, например, знаком “$”.
  2. Основанные на токенизации (token based) — при токенизации весь исходный код преобразуется в последовательность токенов. Токен (в данном случае оператор языка) обычно представляется в виде числового идентификатора (от 0 до 9). Затем к получившейся последовательности чисел применяют различные алгоритмы сравнения.
  3. Основанные на представлении исходного кода в виде дерева (parse-tree based) — данный вид техник является одним из наиболее сложных. Для каждого файла с исходным кодом строится абстрактное синтаксическое дерево (в таком дереве сохраняется вся информация о исходном коде), по которому в дальнейшем будет производиться поиск совпадений.

Существуют и менее распространенные технологии, например, с использованием алгоритмов машинного обучения.

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

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

 

Список литературы:

  1. Проект в сфере онлайн-образования Coursera — [Электронный ресурс] — Режим доступа — URL: https://www.coursera.org/ (дата обращения 21.12.2013)
  2. Butterfield F. Scandal over cheating at MIT stirs debate on limits of teamwork, The New York Times, (May 22, 1991), A23.
  3. Fredrik Gerhardus Hattingh, Albertus A.K. Buitendag, Jacobus S. Van Der Walt. Presenting an Alternative Source Code Plagiarism Detection Framework for Improving the Teaching and Learning of Programming, Journal of Information Technology Education: Innovations in Practice Volume 12, 2013.
  4. Jeffrey R. Young. “Dozens of Plagiarism Incidents Are Reported in Coursera's Free Online Courses”, The Chronicle of Higher Education, 16 August 2012.
  5. Joy M.S., Sinclair J.E., Boyatt R.C., Yau J.Y-K. and Cosma G. (2012) Student Perspectives on Plagiarism in Computing. In: 5th International Plagiarism Conference, 16—18 July 2012, Newcastle, UK.
  6. Neal R. Wagner. Plagiarism by Student Programmers, The University of Texas at San Antonio Division Computer Science San Antonio, TX 78249, USA Copyright 2000.
  7. Roy C. K. and Cordy J. R.. “A survey on software clone detection research,” Tech. Rep. 2007-541, School of Computing, Queen's University, Kingston, Ontario, Canada, 2007.