We’re currently using our campus Subversion server (yeah, uggh) and are looking to switch to Github Classroom. So far as I can tell, I’ll be able to do everything I need with the various scripts that everybody’s put together, but I have a few questions concerning dealing with the inevitable students who think they can get away with cheating.
Git, of course, makes it really easy to rewrite history (git rebase -i, etc.), such that what they have in the repo and what they actually did might not have very much to do with one another.
Of course, I can run MOSS or other plagiarism tools on the output, but when I submit cases to our university’s honor council, I’ve found it helpful to dig into the version history of each accused student and say things about who committed first and had a variety of commits, versus who had just a big dump of code at the deadline. This leads to my questions:
Does anybody play games like this, perhaps disabling “fast forwards” in their local copies, such that regular git pull commands will scream if a student tries to edit their history?
Similarly, I could imagine cobbling together a script that flags any commits whose timestamps are beyond some interval. Basically, if you try to invent something from yesterday and push it today, I’d want that to be detected, or at least detectable.
Do any of you use the Github webhooks framework (https://developer.github.com/webhooks/) to trigger events when students push their code? I could imagine doing a local pull each and every time a student does a push. Maybe I just do a clone every time to a new local repo.
How well do students with zero prior Git experience manage with these tools? I already introduce IntelliJ and have them use the VCS features within it, so in theory the difference between Git vs. Subversion isn’t all that much, and the Github interface gives them a nice web page to confirm that their commits have been pushed.