Summary: | Plagiarism in programming assignments has been a problem for a long time, and while the schools try to stop it, it is an ever ongoing game of cat and mouse between students and the schools. When students find new ways to hide their plagiarism, others develop new tools to find it again. This thesis looks specifically at plagiarism in entry level coding assignments, where the code is usually much simpler, and if it is possible to use the structure of the program code to detect plagiarism. The structural properties chosen is the abstract syntax tree for the code along with the codes call graph. The syntax tree contains the programs general structure and the call graphs are used in an attempt to find plagiarism where plagiarized code has been split up in smaller parts. For comparison a well established algorithm called MOSS is used. The results shows that the abstract syntax tree and call graph can be used to identify plagiarism, but it seems it is not worth the additional effort needed to use algorithms based on program structure, as it seems the plagiarism done for these assignments is quite simplistic. Additional research should instead be done to find out more on how students actually cheat in these entry level assignments and develop methods to counter those specifically. === Plagiering i programmeringsuppgifter i skolan har varit ett problem under lång tid. Skolorna försöker stoppa det men det är en ständigt pågående katt och råtta-lek mellan skolorna och eleverna. När studenterna hittar nya sätt att dölja plagiat så skapar någon annan nya metoder för att upptäcka det. Den här rapporten kommer att fokusera specifikt på plagiering i instegsuppgifter för programmering, där programmen oftast är mycket enklare och om det är möjligt att använda programstrukturen i dessa för att upptäcka plagiat. De strukturella egenskaper som används är programmens abstrakta syntaxträd och anropsgrafer. Syntaxträdet innehåller programmets generella struktur och anropsgraferna används för att försöka hitta plagiat där den plagierade programkoden har delats upp i mindre delar. Som jämförelsealgoritm används en väletablerad algoritm som kallas MOSS. Resultaten visar att det är möjligt att använda det abstrakta syntaxträdet och anropsgrafen för att upptäcka plagiering, men det verkar inte vara värt det extra arbete som krävs för att implementera algoritmer baserade på strukturella egenskaper. Detta då de plagiat som gjorts för dessa uppgifter är simpla. Mer forskning bör istället fokusera på exakt hur studenter fuskar i dessa uppgifter och utveckla metoder för att specifikt upptäcka dessa.
|