Что такое плагиат в программировании? Коротко говоря, это использование чужого исходного кода с присвоением авторства. Понятие плагиата в программировании появилось не позднее 1990-х гг., когда был разработан сервис MOSS (Measure of Software Similarity, оценка схожести ПО) для проверки работ по программированию на плагиат. В этой статье мы рассмотрим не только рост количества случаев плагиата в работах учащихся по программированию, но и причины этого явления, а также возможные действия со стороны преподавателей для борьбы с ним.
Согласно статье Catching Computer Science Cheaters (Как поймать жуликов на уроках информатики), опубликованной в журнале Wired в 1998 г., преподаватели информатики предполагали, что при выполнении любого задания от 5 до 20 процентов учащихся «чрезмерно сотрудничали».
Статья The New York Times за 2017 г. под названием As Computer Coding Classes Swell, So Does Cheating (Растет количество курсов программирования — растет и частота жульничества) подтверждает, что плагиат в программировании является актуальной проблемой и одним из частых академических нарушений в учебных заведениях. Авторы статьи, Дж. Бидгуд и Дж. Мэрилл, указывают на следующее: «В прошлом году более половины из 49 подозрений, связанных с нарушением Кодекса академической честности, касались жульничества при выполнении работ по программированию. В Стэнфордском университете, альма-матер основателей Google, Snapchat и многих других ведущих мировых компаний в сфере ИТ, в 2015 г. целых 20 процентов студентов одного из курсов по информатике подозревались в жульничестве».
Неоднозначность сотрудничества
Возьмем, к примеру, любую программу, предназначенную для загрузки или приобретения. Скорее всего, ее разработкой занимался не один специалист. Более того, для создания этой программы мог использоваться бесплатный и доступный всем пользователям открытый исходный код (лицензия на него может требовать или не требовать указания имени автора). В мире разработки программного обеспечения сотрудничество является распространенным явлением, поощряемым разными способами, которые, вероятно, противоречат принципам академического образования.
В то же время в учебных заведениях проекты по программированию часто предназначаются для индивидуального оценивания учащихся. Учащийся должен указывать автора кода или даже полностью написать его своими силами. Причины таких разных подходов очевидны: при выполнении заданий учащиеся должны продемонстрировать преподавателю свое понимание концепций, используя собственные идеи, а не пытаться создать продукт для продажи.
Доступность решений
В мире программного обеспечения с открытым исходным кодом код доступен для повторного использования. И даже при наличии разных типов лицензий и разрешений на использование учащиеся могут испытывать трудности с выполнением учебных заданий и/или подвергаться искушению использовать такое программное обеспечение при выполнении работ. The New York Times также рассказывает, что программное обеспечение с открытым исходным кодом хранится в онлайн-репозиториях, например Github, где можно найти готовые решения упражнений и заданий, опубликованные студентами, ранее закончившими этот же учебный курс. Еще одним источником, которым иногда злоупотребляют студенты, является Stack Overflow, популярный как среди начинающих программистов, так и среди опытных профессионалов веб-сайт, работающий по принципу «вопрос-ответ».
Не стоит забывать, что выполнение учебных заданий по программированию в связи с указанными выше, а также другими причинами отличается от профессионального программирования, в котором совместная работа используется более активно. Все описанное выше создает благоприятную почву для группового выполнения заданий учащимися и плагиата в программировании, что прежде всего связано с наличием у студентов доступа к большому количеству ресурсов, предназначенных для профессиональной разработки программного обеспечения. Согласно научной статье Eliminating Plagiarism in Programming Courses through Assessment Design (Борьба с плагиатом на уроках программирования путем усовершенствования механизмов оценивания): «Чем легче студентам найти решение задания в Интернете или аналогичных источниках, тем чаще они прибегают к плагиату» [Нго, 2016 г., стр. 873].
Как преподаватели могут объяснить, что такое плагиат в программировании, и предотвратить это академическое нарушение?
- Разработать четкие правила относительно академической честности, в том числе разделить понятия «сотрудничество» и «групповое выполнение задания». Нужно с самого начала очертить границы, которые учащиеся не должны переступать. В научной статье Collaboration Versus Cheating (Сотрудничество или жульничество) утверждается, что «объяснение и уделение большего внимания академической честности приводит к статистически значимому (p < 0,05) уменьшению количества случаев плагиата при выполнении всех основных работ студентов большого онлайн-курса по программированию» [Мэйсон, Гавриловска, Джойнер, 2019 г.].
- Уделять внимание правилам использования чужого кода. Если вы разрешаете использовать сторонний код и/или определили ограниченный список разрешенных источников, попросите студентов прокомментировать те части их заданий, где применяется код, заимствованный из внешних источников. Другими словами, попросите учащихся указать используемые источники.
- Поощрять учащихся создавать собственный уникальный код. Разработайте подход, который будет способствовать развитию оригинального мышления, и усовершенствуйте оценивание таким образом, чтобы поощрять учащихся писать собственный код.
- Обеспечьте поддержку в создании собственного кода, установив промежуточные сроки сдачи с получением отзывов и комментариев, чтобы направлять учащихся и помогать тем, кто испытывает затруднения. Некоторые преподаватели могут использовать git или любой другой инструмент контроля версий, что позволит студентам сдавать задание по частям на протяжении большего периода времени. Внедрение промежуточных сроков сдачи также улучшит контроль работы учащихся. Они будут осознавать, что вы следите за выполнением задания, что уменьшит вероятность совершения академических нарушений.
- Использовать программное обеспечение для проверки схожести кода, которое будет удерживать учащихся от нарушений. Кроме того, можно предоставлять развернутые инструкции и комментарии для повышения уровня академической честности при выполнении заданий по программированию.
- Усовершенствовать систему оценивания, используя анализ заданий и оценку соответствия стандартам академической честности. Это будет способствовать дальнейшему обучению студентов и пониманию роли оценивания и предоставляемых комментариев. Научная статья Eliminating Plagiarism in Programming Courses through Assessment Design (Борьба с плагиатом на уроках программирования путем усовершенствования механизмов оценивания) предлагает следующее: «В сфере программирования обучение с использованием готовых примеров является особенно полезным, когда студенты учатся расшифровывать существующий исходный код и изменять его согласно своим потребностям. Чтобы этот подход работал эффективно, нужно убедиться, что учащиеся понимают предоставленные им примеры, а не просто копируют исходный код для выполнения задания. Именно поэтому наша стратегия предусматривает разработку так называемых «скелетов кода» для каждого задания: простым копированием без понимания такое задание выполнить нельзя. Далее на основе изучаемых материалов разрабатываются задания для выполнения на занятиях. Такие упражнения предназначены для проверки понимания темы и умения учащихся изменять исходный код согласно новым требованиям к программе. Предварительные результаты и отзывы учащихся подтвердили потенциальные преимущества такой методики для улучшения понимания материалов и успеваемости. Более того, данный подход не требует от преподавателей дополнительного времени и сил для определения плагиата» [Нго, 2016 г., стр. 878].
- Развивать обратную связь и взаимоуважение между учащимися и преподавателями. Исследования показали, что хорошие отношения между учащимися и преподавателями приводят к уменьшению количества случаев плагиата. Информатика не является исключением. Авторы публикации Plagiarism and Programming: A Survey of Student Attitudes (Плагиат и программирование: опрос учащихся) обобщили результаты исследований, посвященных отношению учащихся к плагиату в программировании и предотвращению этого явления. Они пришли к таким выводам: «Данное исследование не выявило влияния разъяснения академических нарушений при выполнении оцениваемых заданий по программированию на фактическое поведение учащихся. Поэтому преподавателям необходимо четко обозначить границы допустимого и ненадлежащего поведения, а также постоянно напоминать о политике курса относительно академических нарушений». Такое заключение соответствует результатам, полученным М. Симкином и А. Маклеодом в 2010 г.: присутствие придерживающегося надлежащих этических принципов преподавателя, с мнением которого считаются учащиеся, является одной из причин, почему они решают не жульничать [Аашием, Ратнер, Ли, Вильямс, 2012 г., стр. 307]. Это свидетельствует о том, что учащимся нужно давать четкие инструкции касательно академической честности при выполнении заданий по программированию.
Неограниченный доступ к исходному коду в сети подвергает учащихся соблазну нарушить стандарты академической честности и прибегнуть к плагиату. Учащиеся испытывают стресс от большой учебной нагрузки, а ресурсы в открытом доступе так многочисленны и их так просто использовать. Кроме того, популярность в профессиональной среде тесного сотрудничества (очень эффективного при разработке программного обеспечения) может дезориентировать учащихся, работы которых оценивают индивидуально.
Мы как преподаватели можем помочь учащимся понять цели обучения и основные принципы академической честности, чтобы они были готовы к работе и разработке оригинальных идей, собственного кода и понимали суть настоящего сотрудничества.