Slashdot Mirror


As Computer Coding Classes Swell, So Does Cheating (nytimes.com)

An anonymous reader shares a report: College students have flooded into computer science courses across the country, recognizing them as an entree to coveted jobs at companies like Facebook and Google, not to mention the big prize: a start-up worth millions. The exploding interest in these courses, though, has coincided with an undesirable side effect: a spate of high-tech collegiate plagiarism. Students have been caught borrowing computer code from their friends or cribbing it from the internet. "There's a lot of discussion about it, both inside a department as well as across the field," said Randy H. Katz, a professor in the electrical engineering and computer science department at the University of California, Berkeley, who discovered in one year that about 100 of his roughly 700 students in one class had violated the course policy on collaborating or copying code. Computer science professors are now delivering stern warnings at the start of each course, and, like colleagues in other subjects, deploy software to flag plagiarism. They have unearthed numerous examples of suspected cheating.

8 of 250 comments (clear)

  1. Re:Nothing new here by gweihir · · Score: 4, Informative

    Often it is extremely easy to determine, namely from patterns of mistakes. I once, as a TA, had a case where I refused points for some exercises to several students. They complained, and then I showed them how a comma had become a dash and then had become a quote over several generations of copying (with the dash and the quote making absolutely no sense in the given context). That shut them up pretty fast.

    Of course, for simple and correct code fragments you cannot actually detect cheating reliably. The easy solution is to make the exercises more complex. Students are coddled far too often in coding courses anyways.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  2. Re:How many different ways to solve problems? by Anonymous Coward · · Score: 4, Informative

    There may be a limited number of ways to solve the problem, but there are an unlimited number of variable names that can be leveraged to solve a problem.

    No two should be identical. Though all will be similar.

  3. Re:How many different ways to solve problems? by beelsebob · · Score: 4, Informative

    The key is that there's nearly unlimited ways to solve a problem incorrectly, but when the exact same incorrect solutions keep coming up within the same sets of students it becomes very obvious to the teaching assistant what's going on.

  4. Re:Nothing new here by XxtraLarGe · · Score: 4, Informative

    Often it is extremely easy to determine, namely from patterns of mistakes.

    It's even easier when it's a direct copy. I've had students who copied homework directly, including the same errors, and the same comments. One time, I had a student use another student's file and they didn't even bother to remove the other student's name out of the comments section. They both got 0's for the assignment, and it was a pretty hefty assignment to get a 0 on.

    --
    Taking guns away from the 99% gives the 1% 100% of the power.
  5. Re: Nothing new here by DuckDodgers · · Score: 2, Informative

    Bullshit. This is not a tough field. When CS101 and CS102 classes are hard, all you're doing is weeding out the kids who didn't have any coding experience in high school.

    My family didn't own a fucking computer before I got to college. I wanted to work in the industry, but I new nothing. I passed my first three classes by cheating. The kids that aced had taken programming classes in high school and owned computers since they were in elementary school. By junior year I was all caught up. I'm still working as a developer, almost twenty years later. Java, Python, Perl, Scala; git; Maven; Jenkins; shell, vim, sed, piping. And I would have never got here if they did a better job catching cheaters at school.

    All you're doing is weeding out the people that didn't start young.

  6. Stopping cheating on programming tests by maiden_taiwan · · Score: 3, Informative

    I taught programming at a well-known university in the 1990s. To prevent cheating on exams, I created three different versions of the exam. Call them A, B, and C. They had the same questions, but with different numeric values (and therefore different answers). I distributed the exams in the order A, B, C, A, B, C, .... So no matter where a student was sitting, the other exams around him/her were different. I did not reveal this to the students.

    Everyone who cheated from his/her neighbor got caught, because their exam (say, "A") would have exam "B" or "C" answers on it. Those students instantly failed the course.

    For homework, my advice was: you can talk about assignments in general terms, but you cannot show each other your code, because you are being graded on your work. That was where I drew the line. Still, a half dozen students (out of 150) would get caught cheating on their homework each semester. It made me sad, because none of the cheaters had ever come to my office hours for help. If only they had....

  7. Re:Nothing new here by Anubis+IV · · Score: 4, Informative

    Same here. I used to have a group of students (from a part of the world where plagiarism is more culturally accepted) sit in the lab and work together. With me sitting just a few feet from them, I watched them as they copied code back and forth from each other's screens, so I made it clear that while they could work together in figuring out the algorithm, it was up to each of them to actually implement the algorithm. They nodded, made a gesture of following what I said, and then went right back to it again.

    So, since their code ended up being identical, I gave them 0s.

    After that, they stopped copying from each other while sitting in the lab, and instead took their cheating out of class. Thankfully, that was even easier to detect, since they'd have signature traits, such as the same number of irrelevant trailing spaces at the ends of specific lines. They started changing variable names and intentionally adding whitespace in irrelavant places, just to make their code look distinct. What they didn't know is that I had a plagiarism detection tool that accounted for those sorts of changes, and sure enough their code always came out as a 100% match for someone else in the class, while everyone else's would be around 20-50% (which was expected, given that there are only so many ways to implement simple tasks).

    Much to my disappointment the professor refused to act on any of it, so the best I could do was give them 0s when it was abundantly clear they were cheating. Eventually they started changing the implementation enough that the tool I used no longer showed a 100% match, but at that point they were effectively re-implementing it themselves anyway, which was exactly what we wanted from them in the first place.

  8. Re: Nothing new here by K.+S.+Kyosuke · · Score: 3, Informative

    How the hell does anyone program anything without vim?

    Using Emacs, obviously. ;)

    --
    Ezekiel 23:20