// you’re reading...

Education

Source Control (plagirism) in Education

After the publication of source code for a widely popular highschool Computer Science project – Forces (which I wrote about before), the author raises the question of plagiarism of programming assignments.

“Do you think posting source code (especially in turing) is a bad idea because so many people may steal it and claim it as their own?”

The question implies theft for the purposes for academic dishonesty. A student could have a number of reasons to cheat:

  • Procrastinated, fast approaching deadline
  • Believe they will get a higher mark
  • Unwilling to put in the effort to work
  • Simply don’t know what they are doing

And while plagiarism occurs in every kind of class, it is especially common in computer science for two reasons:

  • Very easy to copy
  • False sense of security

It is easy to copy because assigned programming projects tend to be very open ended (“make a game”), and availability of source code is much more common than amateur English class papers on the book your class has read. Code is found in Open Source projects, code is posted for peer review, and often times people just like to show off. I share, and read code to teach and learn.

The problem, as I see it, is that students don’t think that they will get caught. High schools probably need to implement a stricter policy – Universities are very strict, and suspend students for repeat academic offenses.

Though what it comes down to, is that those who cheat are often those who don’t understand the finer points of programming art. Having met such students, the general view of the code is a very impersonal, machine syntax. The common misconception is that there is just one “correct” way of programming a function, and so it leads some to believe that their own work would have came out identical to someone else’s, if they were to put in the effort. They are very mistaken.

Program’s source code carries as much unique style as does your hand writing. Visually, variable naming conventions and indentation structure are the most obvious ones. Code organization preference is similarly as apparent – how does one package functions, or order variable declarations? Finer details include preference for certain function calls over others, and order the lists are placed in.

For example, I always code as if ( 1 == variable ) then, which is counter-intuitive and will almost always raise a flag as to “why?”. On the flip side, if I was to suddenly submit an assignment that is functionally identical, but has the reverse order – questions will be raised just as well.

There are many such code signatures, and if they are not consistent over all the little assignments and written tests, leading up to the big final project, it is pretty easy to tell if the work is done by the same person or not. A common way to test English papers for plagiarism is to perform a Google search on a unique sounding sentence. Similarly, unique looking code snippets can be very easily identified, and with the ever expending tools offered by Google (such as Code Search) it is so much easier to look at code similarities beyond variable names.

Ultimately it’s up to the teachers to make the call.

The Whole Internet Truth

An excellent check would be to have students explain the code, not just through comments, but with a very quick verbal presentation. It should be pretty obvious what a student is capable of.

I would love to hear what kind of experience people had with code plagiarism (be honest if you’ve ever cheated). Post a comment, and then take a look at an archive of such stories.

Read more

Discussion

  1. Posted by ZeroPaladn | October 26, 2006, 8:59 am

    So true. Someone im my grade 11 compsci class handed in a racing game for his FP, and when his teacher asked him to explain some of the advanced concepts in the program (acceleration and shifting algorithms, Draw.Arc, ect.) he got busted and asked to make somethign of his own creation. he never showed up for the rest of the year :\

    Reply to comment

  2. Posted by Freakman | October 26, 2006, 10:18 am

    I myself have never cheated in compsci, but there were a couple people in my Grade 10 class that did. Needless to say they got caught pretty easily as they had no idea what on earth the code meant.

    Reply to comment

  3. Posted by Tony | October 26, 2006, 9:35 pm

    Thank you for your input guys! It really just shows that handing in code you don’t understand is equivalent of handing in an essay written in Latin.

    This one time someone tried to hand in my code as their own.. together with all the comments, including “Tony’s Game” in the application’s title bar.

    Reply to comment

  4. Posted by Adam aka Windsurfer | October 26, 2006, 11:53 pm

    Wow, i must say, this is an excellent blog post. Reading this has actually made me feel more secure about posting my source code.
    What i gather is this: if someone is too lazy to write out a simple program themselves, then they will inevitably be caught. And that makes me feel like justice is being served.
    But what I’m curious is… well… what do you think of my code? :P http://www.compsci.ca/v2/viewtopic.php?t=13809

    Reply to comment

  5. Posted by compsci | November 21, 2006, 7:30 pm

    I have personally never copied code to claim as my own. However, a question that would be brought up with this peticular topic would be to define plagarism. In subjects like computer science, the definition of plagarism is a bit more blurred than most. People will claim “inspiration ” from somthing. And although the code looks different, the act is still very most plagarism

    Reply to comment

  6. Posted by Tony | November 22, 2006, 1:48 am

    Well it’s the idea of Patents vs. Copyright. Do you protect the idea, or the way of expressing this idea? Thought you’ve got to pick just one.

    And while Intellectual Propery in Computer Science is a _huge_ topic, for the purposes in the context of plagiarism and student assignment – I would allow for anything that the student writes on one own, and can explain the concepts involved.

    Reply to comment

  7. Posted by Bob Zeidman | December 15, 2006, 10:10 pm

    The question about what is plagiarism is a really good one. Even the computer scientists who are studying it have failed to define it. My program, CodeMatch(TM), finds correlation” rather than “plagiarism.” I’ve defined correlation fairly precisely in a paper I gave at an IEEE conference. I’m working on another paper that precisely defines “plagiarism” in terms of “correlation.” I’ve already used the definition in several software copyright infringement cases. If anyone wants a copy of my paper or these definitions, feel free to contact me at Bob@ZeidmanConsulting.com.

    Reply to comment

  8. Posted by wtd | December 23, 2006, 11:51 am

    There’s nothing wrong with copying someone else’s code and handing it in, in my opinion. That is, assuming you understand and can explain what it does and how it does it. That would constitute learning.

    Reply to comment

  9. Posted by momop | November 8, 2007, 6:40 pm

    i dont know if this will work but ill try
    [quote="Tony"]This one time someone tried to hand in my code as their own.. together with all the comments, including “Tony’s Game” in the application’s title bar.[/quote]

    this is a very smart idea to put one’s name in the title bar for projects

    many who plagerys(however its spelt) dont go through the code and will easily get caught

    Reply to comment

  10. Posted by JC | December 8, 2007, 12:47 am

    Nice article,

    I teach in a foreign university, wich turn the plagiarism easier to catch, as we don’t use english as Native Language, it’s very common to catch people using someone else’s work for the final game project implementation. This is simply sad.

    I don’t understand why you cheat at school, as it’s the place where you go to learn, and it’s your chance to be wrong on your implementations. Even though you have the social pressure of do well and pass everything above average, if you don’t understand, ASK! don’t cheat… That’s why I tell my students that it’s ok to be wrong as it’s the only way you learn, and I try to have as much reviews as they want so I can actually teach them.

    Reply to comment

Post a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>