When i was teaching computer science we would run all submissions through a "cheating checker". It would compare every submission against every other submission and print out the top 15 high scorers. I remember one pair of submissions (which were quite lengthy) where the "diff" output was less than a page consisting of the student's name and class number.
Another time two students in my sections got the high score on this cheating checker so I printed out both submissions and discovered that they were using totally different approaches to solving the problem. Copying wouldn't have done them any good - but why the high score? I looked at the raw data and discovered that the checker ignored the contents of strings and that it had matched up many "System.out.println()'s". Oh well.