<p>I assume that somewhere you discuss plagiarism and the social good of respecting the IP of others. If not, plagiarism detection is just a "gotcha" that doesn't really benefit the students or your relationship with them. </p>

<p>The following suggestion is offered tentatively, and might require tuning. It might also require research on the effect. </p>

<p>If the tool is good enough to tell <em>you</em> in real time that something bad is occurring, it is also good enough to tell the student at that moment. So you could build that feature into the tool. </p>

<p><strong>However</strong>, there is, then, the danger that a student could game the system, modifying things just enough that the warning goes away. So it might be necessary for the warning given the student to also warn that not every "violation" will be reported to the student but will be reported to the instructor. </p>

<p>Caveat: This was "seat of the pants - in the moment" design. I can't claim it is best practice. It is, however, based on the principle that fairness and communication are positive attributes in education. Help the student grow in many dimensions, not just the technical. </p>

<hr>

<p>In your discussions with students about plagiarism, be sure to include the concept of <em>self plagiarism</em> which many don't recognize as a problem since it doesn't violate IP rules. But <em>does</em> make derived research and attribution more difficult. </p>

<p>And, like any lesson, it needs to be reinforced. Very little that you do just <em>once</em> will actually be learned. Active learninig is reinforcing as lecture is not. Class discussions about plagiarism and its tradeoffs (short term gain - long term  pain) might be useful. </p>

CC BY-SA 3.0
2017-07-08T13:19:23.233Z
All the students are aware of what we consider as plagiarism, however, they just keep on doing it... :( As you said, if the tool warns the students about plagiarism, they may try to change the code till the tools says the code is fine. The "gotcha" thing alone was also something that we wanted to avoid, as it may be totally ineffective. So my question is: I have early knowledge about plagiarism from a student, shall I do something or just wait to punish that student?
Nuno Gil Fonseca
CC BY-SA 3.0
2017-07-08T13:33:16.553Z
I was once thought to be slacking by my most respected professor. Not plagiarizing, but also a problem. He and I met, by chance, in an elevator for a few moments and in a few sentences, he made me re-think my priorities. A friendly word can be stronger than a shout. It is also possible that he arranged the "elevator talk" without my noticing.
Buffy
CC BY-SA 3.0
2017-07-08T13:38:10.383Z
I suppose that is the way to go! Keep things "informal"!
Nuno Gil Fonseca
CC BY-SA 3.0
2017-07-08T12:08:07.963Z
2017-07-08T15:28:59.780Z
2017-07-08T15:28:59.780Z
Buffy
<p>As probably we all experience, plagiarism is very common in CS. I know that there are several types of plagiarism ranging from simply submitting a copy of the colleagues’ code to other highly sophisticated mechanisms. In my experience, the most common is indeed the simplest one. The student just grabs the code from another colleague and eventually change the names of the variable, and submits the solution (some students don’t even do that!).</p>

<p>While there are several systems that are easily capable of detecting this type of plagiarism, they do it mainly when the student submits the final version of the code. Some other tools, are capable of detect plagiarism and notify the student about that (as if they didn’t already know that!). 
In most cases the use of an anti-plagiarism tool will act mainly to support punitive measures. </p>

<p>Although it is not the main focus, as part of my PhD work, I am working in a tool that analyses the source code as it is being written and is able to detect plagiarism in “real-time”. This way, the teacher can be notified about students that are performing plagiarism even before their final solution is submitted, giving the teacher time to act and avoid the punitive measures.</p>

<p>My biggest question is: What should the teacher do with that information? Will this be efficient? </p>

CC BY-SA 3.0
2017-07-08T15:36:20.127Z
@nocomprende IMO, not teaching is a bit too much. I usually tell them "give help, not code". Teaching is one of the most efficient ways of learning.
rcpinto
CC BY-SA 3.0
2017-07-08T15:38:19.257Z
@nocomprende, I wish you wouldn't ignore it even once. I worry that when students get away with something it only cements the habit. First impressions matter, and the first impression of cheating should not be a good one!
David White
CC BY-SA 3.0
2017-07-08T16:14:16.113Z
nocomprede it happens in several different classes of an higher education degree. I also have some students that "work" along with their collegues. One is working, while the rest are looking at the screen. In the end, all feel that they've participated and so can submit the same solution. rcpinto Exactly! The problem is even worse when the students that give the code, know even less that the ones that asked for it. DavidWhite I agree! In the past some collegues were a bit permissive, so when I say, that no one is allowed to do plagiarism they kind of ignore it.
Nuno Gil Fonseca
CC BY-SA 3.0
2017-07-08T17:42:38.300Z
Looks like a solution in search of a problem. In an on-premise test you'd rather use supervision to prevent plagiarism, rather than detect it from program similarity. In a take-home test, you'd need to engage in highly unethical behaviour, like mandating the use of spyware on the student's computer to obtain the code as it's written.
CodesInChaos
CC BY-SA 3.0
2017-07-08T18:11:45.697Z
@CodesInChaos There are a lot of tools that collect snapshots from the student’s code as they write it. The students just need to install one plugin in their IDE (Eclipse for instance). In the case of the tool that we are developing (and as I said has a different main focus rather than plagiarism) the students are fully aware that the system is collecting data and are also aware of how it is being used. So far no student has complained or felt violated. In our case, a new snapshot of the code is taken when the student runs the code.
Nuno Gil Fonseca
CC BY-SA 3.0
2017-07-08T18:24:18.307Z
As someone who was falsely accused of plagarism in CS, please always consider the possibility that students handed in similar or identical assignments by sheer chance. This is particularly true if the problem being solved is simple, the language being used tends to steer students into similar patterns (e.g. python), the variable names are obvious given the problem domain, etc. Especially if the assignment is < 100 LoC.
Jared Smith
CC BY-SA 3.0
2017-07-08T18:39:57.793Z
@JaredSmith, of course! Right now the system is only "triggered" if there is a high probability of plagiarism. Anyway, the system only notifies the teacher of the possibility of plagiarism and presents to the teacher both source codes side and using a Diff tool highlights the similarities. It is totally up to the teacher to decide if it is indeed plagiarism or not. Anyway, my question was to related to understand if the teacher should do something or not.
Nuno Gil Fonseca
<best-practice><plagiarism>
What should a teacher do with information about plagiarism before the final submission
# What should a teacher do with information about plagiarism before the final submission

(Asked by: username_0 on 2017-07-08)

As probably we all experience, plagiarism is very common in CS. I know that there are several types of plagiarism ranging from simply submitting a copy of the colleagues’ code to other highly sophisticated mechanisms. In my experience, the most common is indeed the simplest one. The student just grabs the code from another colleague and eventually change the names of the variable, and submits the solution (some students don’t even do that!).

While there are several systems that are easily capable of detecting this type of plagiarism, they do it mainly when the student submits the final version of the code. Some other tools, are capable of detect plagiarism and notify the student about that (as if they didn’t already know that!).
In most cases the use of an anti-plagiarism tool will act mainly to support punitive measures.

Although it is not the main focus, as part of my PhD work, I am working in a tool that analyses the source code as it is being written and is able to detect plagiarism in “real-time”. This way, the teacher can be notified about students that are performing plagiarism even before their final solution is submitted, giving the teacher time to act and avoid the punitive measures.

My biggest question is: What should the teacher do with that information? Will this be efficient?

**Tags:** best-practice, plagiarism

> **Comments:**
> **username_1**: @nocomprende IMO, not teaching is a bit too much. I usually tell them "give help, not code". Teaching is one of the most efficient ways of learning.  
> **username_2**: @nocomprende, I wish you wouldn't ignore it even once. I worry that when students get away with something it only cements the habit. First impressions matter, and the first impression of cheating should not be a good one!  
> **username_0**: nocomprede it happens in several different classes of an higher education degree. I also have some students that "work" along with their collegues. One is working, while the rest are looking at the screen. In the end, all feel that they've participated and so can submit the same solution. username_1 Exactly! The problem is even worse when the students that give the code, know even less that the ones that asked for it. DavidWhite I agree! In the past some collegues were a bit permissive, so when I say, that no one is allowed to do plagiarism they kind of ignore it.  
> **username_3**: Looks like a solution in search of a problem. In an on-premise test you'd rather use supervision to prevent plagiarism, rather than detect it from program similarity. In a take-home test, you'd need to engage in highly unethical behaviour, like mandating the use of spyware on the student's computer to obtain the code as it's written.  
> **username_0**: @username_3 There are a lot of tools that collect snapshots from the student’s code as they write it. The students just need to install one plugin in their IDE (Eclipse for instance). In the case of the tool that we are developing (and as I said has a different main focus rather than plagiarism) the students are fully aware that the system is collecting data and are also aware of how it is being used. So far no student has complained or felt violated. In our case, a new snapshot of the code is taken when the student runs the code.  
> **username_4**: As someone who was falsely accused of plagarism in CS, please always consider the possibility that students handed in similar or identical assignments by sheer chance. This is particularly true if the problem being solved is simple, the language being used tends to steer students into similar patterns (e.g. python), the variable names are obvious given the problem domain, etc. Especially if the assignment is < 100 LoC.  
> **username_0**: @JaredSmith, of course! Right now the system is only "triggered" if there is a high probability of plagiarism. Anyway, the system only notifies the teacher of the possibility of plagiarism and presents to the teacher both source codes side and using a Diff tool highlights the similarities. It is totally up to the teacher to decide if it is indeed plagiarism or not. Anyway, my question was to related to understand if the teacher should do something or not.  

---

## 1 answers

### Answer by username_5 on 2017-07-08. Score: 6

I assume that somewhere you discuss plagiarism and the social good of respecting the IP of others. If not, plagiarism detection is just a "gotcha" that doesn't really benefit the students or your relationship with them.

The following suggestion is offered tentatively, and might require tuning. It might also require research on the effect.

If the tool is good enough to tell *you* in real time that something bad is occurring, it is also good enough to tell the student at that moment. So you could build that feature into the tool.

**However**, there is, then, the danger that a student could game the system, modifying things just enough that the warning goes away. So it might be necessary for the warning given the student to also warn that not every "violation" will be reported to the student but will be reported to the instructor.

Caveat: This was "seat of the pants - in the moment" design. I can't claim it is best practice. It is, however, based on the principle that fairness and communication are positive attributes in education. Help the student grow in many dimensions, not just the technical.

---

In your discussions with students about plagiarism, be sure to include the concept of *self plagiarism* which many don't recognize as a problem since it doesn't violate IP rules. But *does* make derived research and attribution more difficult.

And, like any lesson, it needs to be reinforced. Very little that you do just *once* will actually be learned. Active learninig is reinforcing as lecture is not. Class discussions about plagiarism and its tradeoffs (short term gain - long term pain) might be useful.

> **Comments:**
> **username_0**: All the students are aware of what we consider as plagiarism, however, they just keep on doing it... :( As you said, if the tool warns the students about plagiarism, they may try to change the code till the tools says the code is fine. The "gotcha" thing alone was also something that we wanted to avoid, as it may be totally ineffective. So my question is: I have early knowledge about plagiarism from a student, shall I do something or just wait to punish that student?  
> **username_5**: I was once thought to be slacking by my most respected professor. Not plagiarizing, but also a problem. He and I met, by chance, in an elevator for a few moments and in a few sentences, he made me re-think my priorities. A friendly word can be stronger than a shout. It is also possible that he arranged the "elevator talk" without my noticing.  
> **username_0**: I suppose that is the way to go! Keep things "informal"!  

---

