Научная статья на тему 'Использование методов анализа данных и поиска схожих фрагментов в исходном коде для оценивания студенческих работ по программированию'

Использование методов анализа данных и поиска схожих фрагментов в исходном коде для оценивания студенческих работ по программированию Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
292
27
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АНАЛИЗ ДАННЫХ / DATA ANALYSES / ИНСТРУМЕНТ ПОИСКА СХОЖИХ ФРАГМЕНТОВ ПРОГРАММНОГО КОДА / SOURCE CODE SIMILARITY DETECTION TOOLS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Хлопотов Максим Валерьевич, Сорокин Дмитрий Сергеевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

The paper describes the experiment that aims finding similar parts in student’s programming assignments and methods of data analyses for evaluating students’ performance. Proposed technique includes usage of source code similarity detector and analyses of students’ activities. The technique provides also finding the real author of given assignment.

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

УДК 004.424.62

Хлопотов Максим Валерьевич, Сорокин Дмитрий Сергеевич

ИСПОЛЬЗОВАНИЕ МЕТОДОВ АНАЛИЗА ДАННЫХ И ПОИСКА СХОЖИХ ФРАГМЕНТОВ

В ИСХОДНОМ КОДЕ ДЛЯ ОЦЕНИВАНИЯ СТУДЕНЧЕСКИХ РАБОТ ПО ПРОГРАММИРОВАНИЮ

Аннотация

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

Ключевые слова: анализ данных, инструмент поиска схожих фрагментов программного кода.

ВВЕДЕНИЕ

Одной из проблем образовательных учреждений является студенческий плагиат. Например, на Интернет-сервисе Антиплаги-ат.Ру (www.antiplagiat.ru) зарегистрировано 240 российских вузов для проверки на предмет плагиата рефератов, курсовых и квалификационных работ студентов. Только в этой системе в сутки проверяется до 100 тысяч документов.

Наиболее распространенным видом плагиата среди студентов является «текстовый плагиат», прежде всего в рефератах и курсовых работах. Как показывает практика, использование чужого кода без внесения изменений или с внесением незначительных изменений, то есть плагиата в программном коде, также встречается довольно часто [1].

При этом может возникнуть следующее недопонимание: «Являются ли два файла просто похожими или мы действительно имеем дело с плагиатом»? Похожие файлы с программным кодом определяют как значительное количество идентичных или схо-

© Хлопотов М.В., Сорокин Д.С., 2014

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

В статье описывается эксперимент, проведённый на кафедре интеллектуальных технологий в гуманитарной сфере Санкт-Петербургского национального исследовательского университета информационных технологий, механики и оптики (НИУ ИТМО). Основной целью эксперимента было опробование средств поиска схожих фрагментов кода и методов анализа данных для оценивания студенческих работ по программированию.

УСЛОВИЯ ПРОВЕДЕНИЯ ЭКСПЕРИМЕНТА

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

набор данных, включающий в себя следующие признаки:

- оценки студентов первого и второго курса по ряду дисциплин;

- пол студентов;

- год окончания школы и год поступления в ВУЗ;

- номер приказа о зачислении;

- город окончания школы (местный/не местный).

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

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

- высокая трудоёмкость составления одинаковых по уровню сложности заданий;

- у студентов отпадает возможность делиться друг с другом мнениями по вопросу решения задания;

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

Выполнение работ происходило с помощью языка программирования R [2], предназначенного для статистической обработки данных. При этом студентам ставилось обязательное условие, при котором они мо-

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

Обратная связь со студентами была организована в виде проведения ряда консультаций и электронного класса на базе веб-сервиса Piazza [3]. На этом же ресурсе размещались все необходимые для выполнения задания учебные материалы. Частью электронного класса является форум, на котором студенты могут общаться друг с другом и задавать вопросы преподавателю. Веб-сервис Piazza ведёт статистику активности пользователей. В частности, учитываются такие показатели, как просмотренные темы, дни на форуме, количество сообщений и т. п.

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

ИСПОЛЬЗУЕМЫЙ МЕТОД

По окончании выполнения работы студент загружал отчет и программный код в электронный класс с пометкой «Private», которая означает, что работу студента могут видеть только инструкторы класса. Все файлы с программным кодом были проверены на детекторе плагиата.

В основе детектора плагиата лежит подход токенизации, то есть каждый файл с программным кодом транслируется в последовательность токенов (лексем), по которым в дальнейшем ищутся совпадения [4]. Результатами работы детектора является процент совпадения двух работ, рассчитываемый по коэффициентам Жаккара [5] и Ба-руа-Маханты [6]:

| A n B |

J (A, B) =

| A u B |

P( A, B) = 1 -P( B, A) = 1 -

I A \ B|

IA | IB \ A | IB |

(1) (2) (3)

где А и В - это множества ^грамм [7]. Каждое такое множество представляет структуру программы («отпечаток программы»), которая подвергается сравнению. Коэффициент Жаккара (1) в данном случае может быть

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

интерпретирован как отношение совпадающих фрагментов кода к общему количеству кода, содержащегося в обеих программах, а коэффициент Баруа-Маханты указывает, на сколько процентов работа A состоит из работы B (2) и, соответственно, наоборот (3). Следует заметить, что если значения P (Л, B) и P A) достаточно близки, то это может означать, что одна из работ была скопирована и оставлена без изменений, и наоборот, чем больше разница между значениями, тем больше изменений было внесено в одну из работ.

Кроме метрики схожести двух файлов детектор предоставляет возможность наглядного представления совпавших фрагментов кода.

ПРОВЕДЕНИЕ ЭКСПЕРИМЕНТА И ИНТЕРПРЕТАЦИЯ РЕЗУЛЬТАТОВ

Результаты проверки работ 24 студентов на детекторе плагиата приведены в табл. 1. В вывод включались только те работы, схожесть которых по коэффициенту Жаккара превысила 60 %.

С высокой долей уверенности можно говорить о совпадении двух работ при значениях коэффициента Жаккара выше 70 %. Работы, процент совпадения которых составляет 60-70 %, необходимо дополнитель-

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

Названия «Исходная» и «Подозреваемая» работа в табл. 1 даны условно, так как, опираясь исключительно на коэффициенты Жаккара и Баруа-Маханты, невозможно однозначно определить, кто из студентов является источником работы. При этом следует заметить, что коэффициент Баруа-Махан-ты позволяет делать предположения об «источнике» и «заимствователе». Например, работа «Студент 9» в большей степени состоит из работы «Студент 8», а следовательно, можно сделать предположение о том, что «Студент 8» является оригинальной версией работы, в то время как «Студент 9» получена путем копирования.

Из табл. 1 также можно заметить, что есть два кластера, которые состоят из работ, похожих между собой. В первом кластере студенты 1, 2, 3 и 7. Во втором кластере студенты 4, 5 и 6.

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

Табл. 1. Работы с коэффициентом схожести выше 60 %

«Исходная» работа «Подозреваемая» работа Коэффициент Жаккара Коэффициент Баруа-Маханты

Студент 1 Студент 2 86.7% 90%/96%

Студент 3 Студент 1 69.7% 78%/86%

Студент 3 Студент 2 77.1% 81%/95%

Студент 7 Студент 1 76.9% 86%/88%

Студент 7 Студент 2 71.4% 80%/87%

Студент 4 Студент 5 69.2% 97%/71%

Студент 6 Студент 4 71.6% 73%/97%

Студент 6 Студент 5 96.6% 100%/97%

Студент 8 Студент 9 78.6% 80%/98%

Студент 10 Студент 11 97.8% 100%/98%

) #2012

length (which(tl2$N_order = "1341"))

length (which(tl2$N_order == "1343"))

length (which(tl2$N_order = "1428"))

length (which(tl2$N_order = "1323"))

#2013

length (which(tl3$N_order = "1430"))

length (which(tl3$N_order == "1439"))

length (which(tl3$N_order == "1428"))

length (which(tl3$N_order = "1416"))

^Процентное соотношение за 2 года

((37+2+7+30+4 )*100)/116

(14+22}*100/11Б

^Процентное соотношение за 2012

#2012

length (which(y2012JN_order == "1341"))

length (which(y2012$N_order == "1343"))

length (which(y2012$N_order = "1428"))

length (which(y2012$N_order == "1323"))

#2013

length (which(y2013$N_order = "1430"))

length (which(y2013$N_order == "1439"))

length (which(y2013$N_order == "1428"))

length (which(y2013$N_order = "1416"))

#Соотношение за 2 года

((3 7+ 2+ 7+ 30+4)»100)/116

(14+2 2) »100/116

#Соотношение за 2012

Рис. 1. Изменены имена идентификаторов и содержимое комментариев

тектором, должны быть классифицированы как плагиат.

ВЫЯВЛЕНИЕ ИСТОЧНИКОВ ПЛАГИАТА

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

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

- количество времени проведенного на форуме;

- количество ответов и вопросов;

- количество просмотров отдельных тем;

- количество созданных тем.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

На рис. 3 представлен график в форме «ящика с усами» (boxplot), по которому можно проследить зависимость между активностью студента, которая является композицией вышеперечисленных признаков, и его вовлеченностью в плагиат.

По приведенному на рис. 3 графику можно сделать вывод, что студенты, вовлеченные в плагиат, имеют более низкую активность на форуме. Кроме того, можно отметить «выброс», который означает, что один из студентов, заподозренный в плагиате, имеет явно более высокую активность чем остальные и, следовательно, является кандидатом на «источник работы».

Для того чтобы попытаться найти остальных кандидатов, была построена диаграмма рассеяния (см. рис. 4), на которой студенты, заподозренные в плагиате и активностью выше 20, отмечены символом треугольника (в табл. 1 соответствующие студенты отмечены символом подчеркивания). В личной беседе при защите отчёта эти студенты признались, что помогали остальным.

РЕКОМЕНДАЦИИ

Одной из особенностей выполнения работ являлось использование языка программирования R. В связи с тем, что этот язык является интерпретируемым, некоторые студенты воспользовались методами обфуска-ции [9], то есть запутывания кода. Запутывание кода (и, как следствие, преподавателя) было выражено в добавлении неверных операторов языка, которые не влияли на результат выполнения программы. Такие работы при автоматической проверке на наличие схожих фрагментов кода, скорее всего, будут отсеяны детектором плагиата. Чтобы

student.boys c- subset(student, studentSSex == "male"} student.boys

student.girls <- subsettstudent, studentSSex == "female"} student.girls

bl <- mean (student.boysSXZ, na.rm = T} bl

gl <- mean (student.girlsSXZ, na.rm = T}

gi

if (bl > gl} {

print ("Boys are better than girls in subject Image"} } else {print ("Girls are better than boys in subject Image"}} bZ <- mean (student.boysSXIS, na.rm = T}

bZ

gZ mean (student.girlsSXIS, na.rm = T}

gz

if (bZ > gZ} {

print ("Boys are better than girls in subject Translating science texts"} } else {print ("Girls are better than boys in subject Translating science texts"}} b3 mean (student.boys$X15, na.rm = T} b3

g3 mean (student.girls$X15, na.rm = T} 93

if (b3 > g3} {

print ("Boys are better than girls in subject Multimedia technologies"} } else {print ("Girls are better than boys in subject Multimedia technologies"}}

#Part 5

plot(student$X18, student$X15, xlab = "translating", ylab = "multimedia"}

fak.boys <- subset(fak, fakSSex == "male"} fak.boys

fak.girls <- subset(fak, fakSSex == "female"} fak.girls

boysl <- mean(fak.boysSX4, na.rm = T} boysl

girlsl <- mean(fak.girls$X4, na.rm = T} girlsl

if (boysl > girlsl} {

print ("Boys are better than girls in subject IT"} } else {print ("Girls are better than boys in subject IT11}} boysZ <- mean(fak.boys$X9, na.rm = T} boysZ

girlsZ mean (fak.girlsSX9, na.rm = T} girlsZ

if (boysZ > girlsZ} {

print ("Boys are better than girls in subject Physics"} } else {print ("Girls are better than boys in subject Physics"}} boys3 mean(fak.boys$X17, na.rm = T} boys3

girls3 mean (fak.girls$X17, na.rm = T} girls3

if (boys3 > girls3} {

print ("Boys are better than girls in subject Economics"} } else {print ("Girls are better than boys in subject Economics11}}

#MacTb 5

plot(fak$X9, fak$X4, xlab = "physics", ylab = "IT"}

Рис. 2. Изменены имена идентификаторов и строковых литералов

избежать подобной ситуации, преподавателю следует выставлять условие на содержимое работы, при котором файл с исходным кодом не должен содержать посторонних «продуктов» деятельности студента:

- приглашения интерпретатора;

- неверных операторов языка программирования;

- результатов выполнения команд и т. п.

ЗАКЛЮЧЕНИЕ

В ходе экспериментальной проверки инструмента поиска схожих фрагментов программного кода в студенческих работах предложен метод интерпретации результатов его работы. Предложенный метод включает в себя использование коэффициента Баруа-Маханты и анализ данных об активности студентов при выполнении работы. Этот метод позволяет находить не только похожие работы, что является основной задачей детектора плагиата, но и находить источники плагиата.

Рис. 3. Зависимость между активностью и заимствованием чужой работы

1П Ш 3] «1 Ж Ш

Активность на форуме

Рис. 4. Диаграмма рассеяния

Литература

1. JoyM.S., Sinclair J.E., BoyattR., Yau J.Y-K., Cosma G. Student perspectives on source-code plagiarism // International Journal for Educational Integrity. Vol. 9 №. 1. 2013. P. 3-19.

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

2. Домашняя страница языка программирования R [Офиц. сайт]. URL: http://www.r-proiect.org (дата обращения: 29.04.14).

3. Система управления обучением Piazza [Офиц. сайт]. URL: http://www.piazza.com (дата обращения: 29.04.14).

4. Roy C. K., Cordy J.R., Koschke R. Comparison and Evaluation of Code Clone Detection Techniques and Tools: A Qualitative Approach // Science of Computer Programming, 2009. Vol. 74. Is. 7. P. 470-495.

5. Niwattanakul S., Singthongchai J., Naenudorn E., Wanapu S. Using of Jaccard Coefficient for Keywords Similarity // Proceedings of The International MultiConference of Engineers and Computer Scientists, 2013. P. 380-384.

6. Baruah D., Mahanta A.K. A new Similarity Measure with Length Factor for Plagiarism Detection // International Journal of Computer Applications, 2013. Vol. 72, № 14. P. 14-17.

7. Kuueuka T. Plagiarism Detection in Obfuscated Documents Using an N-gram Technique // Information Sciences and Technologies Bulletin of the ACM Slovakia, Special Section on Student Research in Informatics and Information Technologies, 2011. Vol. 3, № 2. P. 67-71.

8. ХлопотовМ.В., Коцюба И.Ю. Методы интеллектуального анализа данных для мониторинга и диагностики качества образования // Дистанционное и виртуальное образование, 2014. № 5. С. 18-25.

9. Обфускация [Электронный ресурс] // Свободная электронная энциклопедия [Офиц. сайт]. URL: http://ru.wikipedia.org/wiki/Обфускация (дата обращения: 29.04.14).

USING DATA ANALYSES AND SOURCE CODE SIMILARITY DETECTION METHODS FOR EVALUATING STUDENTS' PROGRAMMING ASSIGNMENTS

Abstract

The paper describes the experiment that aims finding similar parts in student's programming assignments and methods of data analyses for evaluating students' performance. Proposed technique includes usage of source code similarity detector and analyses of students' activities. The technique provides also finding the real author of given assignment.

Keywords: data analyses, source code similarity detection tools.

Хлопотов Максим Валерьевич, старший преподаватель кафедры интеллектуальных технологий в гуманитарной сфере СПбНИУ ИТМО,

hlopotov@list. т,

Сорокин Дмитрий Сергеевич, магистрант кафедры интеллектуальных технологий в гуманитарной сфере СПбНИУ ИТМО,

Dementiy@yandex. т

(с) Наши авторы, 2014. Our authors, 2014.

i Надоели баннеры? Вы всегда можете отключить рекламу.