5 ms·
Our computer science professors always claimed to be able to detect cheating because of similar answers, however, I never really believed them. Change the way
by noahc 14y ago
Our computer science professors always claimed to be able to detect cheating because of similar answers, however, I never really believed them.
Change the way the program works here or there and rename all the variables, and always use the same variables for your loops (x,y,z or i,k,l for example) between assignments and it'd be hard to detect.
Of course, if you went through the effort of doing all that, I always figured it'd be faster just to do it your self.
Any ex-TA's or professors want to weigh on this?
- barik 14y ago> Change the way the program works here Then it isn't really the same program if the changes are fundamentally different, so in essence, it isn't direct copying anymore. But changing another person's program in non-superficial ways is often as difficult as just solving the problem from scratch. Cheating is also harder to detect in introductory classes because there are often few good ways to implement the algorithm in the first place (say, factorial, or pre-order traversal of a binary tree). Consequently, these tools tend to work better in larger projects, such as in an operating systems class. > rename all the variables, and always use the same variables for your loops (x,y,z or i,k,l for example) between assignments and it'd be hard to detect. It turns out this is trivial to detect; see MOSS [1] for an example of the type of analysis that is done on programs. However, more often than not, cheating is detected by teaching assistants simply by hand ("Hmm, this submission looks familiar"), but instructors pretend that there is some sophisticated cheat-finding system to scare off students. Usually typos are dead give-aways, especially when two students have the same typo in the same comment at the same identical spot. In my academic misconduct cases, students were most often identified through spelling and grammar errors. I imagine that there exist many more instances of cheating than instructors catch, and that we really only get the low-hanging fruit (and frankly, my job isn't to be the cheating police, so I don't go out of my way to find it). But catching the most obvious cases and having a severe punishment as a deterrence is often enough. ("If you cheat, you likely won't get caught, but if you do, goodbye -- it's automatic failure at minimum, and possibly suspension or expulsion.") [1] http://theory.stanford.edu/~aiken/moss/ http://theory.stanford.edu/~aiken/moss/ and the actual research paper http://theory.stanford.edu/~aiken/publications/papers/sigmod03.pdf http://theory.stanford.edu/~aiken/publications/papers/sigmod...
- noahc 14y agoSpecifically regarding changing how the program works. I meant it in the sense of using hashes in place of arrays, and maybe even using while instead of for loops, etc. So fundamentally, it's the same input and output, but how the program stores and computes that is the same. The variable thing makes sense though. I would use the 'changing the program' tactic to stop computers and the variables to stop teachers from detecting it. However, from another poster, using the same variables between assignments maybe unnecessary.
- anonymouz 14y agoIf the program is non-trivial (e.g. contains some classes, many functions), then usually the program structure alone will give it away (1), unless you invest a lot of time into changing things. From my experience (as a student), the people that copy programs don't even work that hard to obfuscate their plagiarism. Usually they just rename a couple of variables and reformat things a bit. A former professor of mine wrote a program to "fuzzily" compare two source codes and show how close they are, which quite nicely showed of clusters of programs where a bunch of students had copied-and-slightly-modified from one student. (1) i.e., give the instructor a feeling of "Hm, I've seen that before...".
- cpeterso 14y agoThere is software to detect copied programming assignments by doing fuzzy comparisons of the abstract syntax trees. Changing variable names or layout would not affect a program's abstract syntax tree.
- elarkin 14y agoI was a TA for computer science classes. I barely read variable names when grading. It was quicker to compile/run and then check over the structure of the program. Also keep in mind that if you're grading 50 people like I was, you won't remember what variables the students used between assignments. The stuff they would do to throw me off the trail wouldn't help much at all. If I found a student had copied from a neighbor or whatever, I'd ask them both what had happened. It was uncommon that they would deny it. I'd tell the professor and mark the assignment a zero. After that, it was between the students and the professor. Try it yourself, write a small program, perhaps a script to read a CSV of numbers and do a pivot table or something, then copy it and use whatever technique you like to hide the copying. Now read them back to back. Give no more than 1 minute to each (since they both compile and pass tests). You'll spot the copying immediately. Disclaimer: I did TA work for undergraduate stuff; typically for students in liberal arts and sciences just trying to get through their comp-sci requirements.