Hello everyone,
I teach an introductory programming course at the community college level and I have serious issues with plagiarism. My goal for the next academic year is to improve detection of copying while at the same time cutting down on the factors that encourage that behaviour. For detection, I'm using MOSS (Alex Aiken, Stanford)
https://theory.stanford.edu/~aiken/moss/ , and for discouraging copying I'm getting a lot of good ideas from this post by Neal Wagner (U Texas San Antonio)
http://www.cs.utsa.edu/~wagner/pubs/plagiarism0.html .
However, a more interesting approach is TMOSS Temporal MOSS (Lisa Yan et al., Stanford)
http://web.stanford.edu/~yanlisa/publications/sigcse18_tmoss.pdf , where the student IDE takes a snapshot of the source into a local Git repo at every build, and the student submits the repo along with the final project source. Analyzing the data also shows that steady development improves student outcomes on tests, not just assignments. Unfortunately, the open source IDE that they chose is Eclipse, which is a beast (their teaching language is Java). I prefer Python and I've been using Thonny in the programming lab. I also prefer Fossil (Richard Hipp et al.)
https://www.fossil-scm.org because it's simpler than Git and very difficult to fudge the timeline.
So here's my question (finally, sorry). When Thonny runs a program, is there a convenient place for a hook to commit to a version control system? Has anybody thought of this before? I can't imagine I'm the only programming prof who despairs at the amount of copying. I'm not talking about forking and quoting open source, that's an entirely different activity, I'm looking at programs where multiple fragments of 10-30 lines are copied, sometimes changing the variable names, but often not even that (every now and then I see two files submitted with the same student's name clearly visible!).
Any help is greatly appreciated!
Thanks in advance
--Louis