Critical Reflection

Plagiarism in Academic Programming: There’s only one way to implement this

It is the aim of courses and modules related to computer science, video games and programming that we ensure graduates understand how to implement robust, secure and reusable code in their courseworks as part of their learning outcomes (Koss & Ford, 2013). Koss & Ford observe that learning to program is not a single event for beginners but a process. Students will reuse widely adopted code. We observe that such reuse is also prevalent by industry professionals. Although, when code reuse is not available implementation too is a rigid process where plagiarism can appear.

Implementation of code must meet specifications defined in design documents. As a result one student’s implementation can and often will be similar or identical to another (Lindoo, 2013). In addition further contextualisation of code when applied to a variety of problems can bear many similarities, such as problems set by educators. Lindoo notes that programming tools, libraries and code repositories such as GitHub[1] make programming accessible but also makes plagiarism somewhat accidental in act.

Academics teaching programming modules must aspire to reflect industry practices in relation to collaboration and implementation but ultimately they must to continue to combat academic impropriety. On the latter there are tools developed for detecting code plagiarism (Le et al., 2013) and students should be educated on these techniques. Le et al., also observe that such tools can be used as an educational tool for students, providing them with feedback to improve their paraphrasing, code reuse and citation skills.

There are an array of Programming languages available to all. The choice of which programming language to use is for the individual or the module leader however each programming language however suited to the task at hand will offer identical or similar functionality, for example managing file systems or performing calculations. Even though the programmatic syntax is often different between two languages (Cui, Dang, Fischer, & Ibarra, 2013) it has been demonstrated that there can be at least a 50% similarity between two different programming languages performing the same task and most show 90% similarity. Therefore the margin where plagiarism can be positively identified is rather small.

Intake into Computer Science courses and similar disciplines has increased exponentially, in the Liverpool John Moores University, the School of Computing and Mathematical Sciences has seen module attendance triple in recent years from 100 to 300 students. As a result the assessment of programming coursework is increasingly difficult.

Trends in beginner programmers, industry professionals and languages appear to conflict with the ridged and traditional notion of plagiarism and academic impropriety. It is of utmost importance that computer scientists responsible for undergraduates properly educate citation for code, avoiding accidental plagiarism. It is also of recommendation that code is not only checked for plagiarism computationally but also version control systems such as GitHub are used. Version control systems provide atomic historical changes to code with author comments that educators and peers can access to visualise and inspect a learner’s programming process. Such can highlight genuine copy and paste plagiarism techniques but beneficially can lead to critical code peer review[2]. Version control is also an industry practice as the history of code changes allow programmers to revert back to old code should new code fail to be robust or secure, whilst encouraging code reuse.

References

Cui, C., Dang, Z., Fischer, T. R., & Ibarra, O. H. (2013). Similarity in languages and programs. Theoretical Computer Science, 498, 58–75. doi:10.1016/j.tcs.2013.05.040

Koss, I., & Ford, R. (2013). Authorship Is Continuous: Managing Code Plagiarism. IEEE Security & Privacy. Retrieved from http://doi.ieeecomputersociety.org/10.1109/MSP.2013.26

Le, T., Carbone, A., Sheard, J., Schuhmacher, M., de Raath, M., & Johnson, C. (2013). Educating Computer Programming Students about Plagiarism through Use of a Code Similarity Detection Tool. 2013 Learning and Teaching in Computing and Engineering, 98–105. doi:10.1109/LaTiCE.2013.37

Lindoo, E. (2013). In an effort to reduce accidental plagiarism by computer science students. Journal of Computing Sciences in Colleges, 79–84. Retrieved from http://dl.acm.org/citation.cfm?id=2535429

Bibliography

Wiegers, Karl Eugene. Peer reviews in software: A practical guide. Boston: Addison-Wesley, 2002.


[1] http://github.io is an online resource where source code for programmes can be uploaded. It features a range of collaborative tools that include version control, bug tracking, activity and others that support best practices in industry.

[2] Code peer review is the critical assessment of code. The practice provides feedback by peers and is noticeably has a positive impact on learning (Wiegers, 2002).