Right, and I understand your point. And on assignments where they are all writing to the same specifications, I do run them all as a batch through that program I talked about. In this particular Java game project, I haven’t done Google checks before – but in the usual context of this course (these are students who I’ve mostly had before in my C++ class, and this term, they all were), I’ve felt that my Java students had already proven themselves as students who do their own work. Maybe it’s time to start spot-checking (with Google) the code on these assignments after all.
As for students getting away with it – I’m sure there are some who manage to slip under the radar on some assignments. But over time, the way I’ve adjusted to deal with that is to structure the course grading scale to minimize its benefit. If they “ace” the assignments but bomb the tests, they aren’t passing the class. And I write my tests so that any code-writing questions are asked in a similar format they’ve seen on assignments. If they didn’t do their own work on the assignments, they are pretty much going to blow those test questions.