Source Code Plagiarism Detection Using Multi-Element Array Comparison
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current plagiarism detection tools for source code are limited by their dependence on expert knowledge of programming languages, vulnerability to code rearrangement, and discarding of useful information like comments and identifiers, leading to missed matches and obscure results.
Innovation Solution
A combination of algorithms including Source Line Matching, Comment Line Matching, Word Matching, Partial Word Matching, and Semantic Sequence Matching is used to compare source code files comprehensively, preserving structural information and utilizing identifiers to enhance plagiarism detection accuracy.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If Plague uses structure-metric algorithms to detect plagiarism, then detection capability is improved, but the tool becomes dependent on expert knowledge of programming languages and vulnerable to code rearrangement
Solution Approach 1:
The patent applies universality by creating a plagiarism detection system that works across multiple programming languages without requiring language-specific expertise. The system uses generic tokenization and structure-metric algorithms that can process code from different languages uniformly, making the tool adaptable to new programming languages while maintaining reliable detection capability.
2Measurement precision
If Plague discards comments, variable names, and identifiers to focus on structure, then detection accuracy for structural plagiarism is improved, but useful information is lost that could help identify plagiarism
Solution Approach 1:
The patent merges multiple detection approaches by combining structure-metric analysis with identifier-based detection. The system simultaneously processes structural metrics and preserves identifiers, comments, and variable names, then integrates both types of information to detect plagiarism. This combination allows the system to maintain high detection accuracy while preserving useful information that can independently identify copied code.
3Ease of manufacture
If Plague uses UNIX shell tools for processing, then implementation simplicity is improved, but processing speed becomes slow
Solution Approach 1:
The patent replaces the mechanical UNIX shell toolchain with a compiled C++ implementation. The system uses custom data structures and algorithms implemented in compiled code rather than interpreting through shell tools, significantly improving processing speed while maintaining the same functional capabilities and implementation simplicity.
4Object-affected harmful factors
If Plague rearranges code lines to hide plagiarism, then evasion capability is improved, but detection reliability decreases
Solution Approach 1:
The patent applies dynamics by using dynamic time warping and flexible alignment algorithms that can handle reordered code lines. The system dynamically adjusts the comparison process to account for line reordering, making it resistant to plagiarism attempts that rearrange code structure. This dynamic approach maintains detection reliability even when plagiarists try to evade detection through code reorganization.
Data Source
AI summary
A method and system for detecting plagiarism of software source code. In one embodiment, a first set of arrays and a second set of arrays are created for a first program source code file and a second program source code file respectively. Each pair of arrays in the first and second sets has entries corresponding to program elements of a distinct program element type such as functional program code, program comments, or program code identifiers. Next, each pair of arrays from the first and second sets is compared to find similar entries, and an intermediate match score is calculated for each pair of arrays based on the similar entries. Further, the resulting intermediate match scores are combined to produce a combined match score, which is then used to provide an indication of copying with respect to the first program source code file and the second program source code file.


