General
9 min
Token, AST, and Fingerprint Matching on Refactored Student Code
Renaming a variable, extracting a helper, and swapping a for loop for a while loop are the three moves students reach for when they want a copied submission to look original. Some similarity engines shrug them off, and some lose the match entirely. This piece walks through how token hashing, AST subtree matching, and fingerprinting each behave against a deliberately refactored Python pair, then compares what MOSS, JPlag, Dolos, and Codequiry actually reported on the same cohort.