{'fraction_non_alphanumeric': 0.019005847953216373, 'fraction_numerical': 0.0, 'mean_word_length': 5.7772277227722775, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Detecting source code plagiarism on introductory programming course assignments using a bytecode approach

Even though there are various source code plagiarism detection approaches, most of them only concern with low-level plagiarism attack with an assumption that plagiarism is only conducted by students who are not proficient in programming. However, plagiarism is often conducted not only due to student incapability, but also because of bad time management. Thus, high-level plagiarism attack should be detected and evaluated. This paper proposes source code plagiarism detection approach which can detect most introductory-programming-course plagiarism attacks at any level by utilizing low-level instructions instead of source code tokens. Several mechanisms are also introduced to improve its effectiveness such as instruction generalization, instruction reinterpretation, method-based comparison, and method linearization. Since low-level instruction is a language-dependent feature, Java is selected as target programming language with bytecode as its low-level instruction. Based on evaluation, it can be concluded that our approach is more effective to detect most plagiarism attack types than raw source code approach on introductory programming course. This evaluation is based on plagiarism attack types that are collected through controlled experiment.