Plagiarism detection - TMOSS & Thonny

101 views
Skip to first unread message

Louis Bertrand

unread,
Apr 28, 2019, 11:39:18 PM4/28/19
to thonny
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

acb...@udel.edu

unread,
Apr 28, 2019, 11:52:22 PM4/28/19
to thonny
I can't speak much about instrumenting desktop IDEs with capturing student log data, but you should look into two things:
  • Ayaan Kazerouni has done exactly this for Eclipse: http://people.cs.vt.edu/~ayaan/#dev-event-tracker
  • Look deeply into the ProgSnap2 project from the CSSPLICE group. This will be a standardized format for storing student code snapshots. There's a really solid spec out; I was just working this weekend to convert our student log data for BlockPy into it, and although there's still some things to figure out, it's the right direction. The group is extremely active right now, and they're actively working on implementations and example analyses.
The plugin system for Thonny is pretty good, that'll be the mechanism you use. I was playing around with a different plugin for running unit tests and code coverage a while back, but didn't have time to finish anything before the semester started. I would be very interested in a plugin for capturing student work!

~Cory

Aivar Annamaa

unread,
Apr 28, 2019, 11:53:25 PM4/28/19
to thonny
Hi Louis,

You could write a plug-in, which listens for eg. "Run" events asks for current editor content and does what it pleases with it.

But what if you had a log of all user actions and you could replay the program construction process with the granularity of single keypress? Take a look here: https://github.com/thonny/thonny/wiki/User-action-logs

Some colleagues of mine used to have their students turn in the logs along with the final solution. I have caught some tough cheaters myself, who didn't know about the logs and who denied their cheating until I replayed the process in their computer and demonstrated how a block of text just appeared. One time the block of text came in with Skype conversation format, revealing the sender name as well :)


If you still want to collect less granular snapshots, then let me know and I'll send you instructions for creating the plug-in.

best regards,
Aivar

Louis Bertrand

unread,
May 7, 2019, 6:25:51 PM5/7/19
to Aivar Annamaa, thonny
Hi Aivar,
That sounds like an interesting approach. Unfortunately I  have to revise an electronics design project and I would not have time to devote to writing a plug-in. However if someone is writing one I can help testing and refining.
All the best,
 --Louis 


--
You received this message because you are subscribed to a topic in the Google Groups "thonny" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/thonny/V3XUqhv3uZY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to thonny+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/thonny/654661c8-9a83-4a27-8a0b-83b03163a774%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Nakul Gupta

unread,
Oct 5, 2020, 5:21:03 AM10/5/20
to thonny
Dear Aivar and everyone here

Hi

We are planning to achieve something similar. We would be more than happy to committing some of the resources of our lab for writing this plugin that can auto-capture certain events and then extracts/sends that data to our analytics engine. We specifically want to extract time taken between each consecutive action and errors/outputs that a student encounters. These two parameters are really important for us to help personalize a student's coding learning path. 

Any help/support to take this forward will be much appreciated. 

Nakul

Reply all
Reply to author
Forward
0 new messages