How to Catch Students that Cheat in Computer Science - Professor to Professor



Compliments of Gwen Estep Photography

Students cheat on programming assignments. I see it every semester as a Computer Science professor. Plagiarism on software assignments is a big a problem that impacts all educational institutions from high-priced universities to community colleges and high schools -- and it must be dealt with and prevented! I have taken on this challenge at my college and I am proud to say that measures I have employed have resulted in a significant drop in plagiarism cases.


My name is Doug Estep. I currently work for the University of Dayton Research Institute as a software architect and senior tech lead. I also am an adjunct professor, teaching computer science courses for Sinclair College in Dayton, Ohio. I have compiled a list of strategies and red flags that I would like to share with you to help you find the cheaters in your classroom.

Let's start with the most obvious cheater:

The Completely Lost or Procrastinating Cheater


Software design and development is not for everyone. Some students, God bless them, simply do not have the aptitude for this type of work. These students are easy to spot because their solutions are just, well, awful. The completely lost cheater will usually make an attempt at the first few assignments. The projects that they turn in usually do not compile or do not execute and their grade quickly plummets. Panic ensues and they realize that the only way that they can pass the class is if they employ help from others. There are plenty of cheating web sites where solutions to my assignments exist. The student will find or pay for the solution and copy/paste the code from their browser into their Integrated Development Environment (IDE). This type of cheater will make no changes to the code and turn it in exactly as it was copied and pasted because they either fear that any change will break the solution or they waited until last minute to start the assignment and are rushing to make the deadline.


The Copy and Paste Detection


This type of cheat has an obvious tell. When the source code is copy/pasted from a web page to the student's IDE, such as the Eclipse IDE, the pasting process can often result in the code being unformatted with no indentations and double-spaced. Below is a code-snippet from one my students who confessed to copy/pasting code from a cheating website:


public void removeFriend(UserAccount user) throws UserException
          {

          Iterator<UserAccount> friendsIterator = this.friends.iterator();

while (friendsIterator.hasNext())

          {




          UserAccount friend = friendsIterator.next();

if (friend.equals(user)) '
          {

          this.friends.remove(user);

return;
      }}

throw new UserException("You are NOT my friend");

}

Notice how every line is double-spaced and not well formatted? The style is sloppy, unintelligible, and does not lend itself to being easy to read or follow. What sane developer would write code like this?

I follow this protocol when I suspect cheating has occurred 1) Send a note to the student stating their project was flagged for plagiarism.

2) Provide a link to a web page where the college explains the consequences of plagiarism.

3) Ask for an explanation.


More often than not, the student confesses that they panicked and paid for or found a solution online.

Next, let's look at the case where a struggling student has rewritten all past assignments to ace the next assignment -- all within a short period of time:

The Comeback Kid Cheater


In my advanced classes, the students build an application which takes the entire semester to finish. They are given weekly assignments that each build from the prior week's assignment. This approach is challenging because if the student falls behind or cannot finish an assignment, it prevents them from continuing on to the next. I encourage my students to immediately reach out to me for help the moment they start to struggle or fall behind so that I can get them back on track or point them to a tutor. As long as the student is communicating with me, I will work with to make up missing or failing prior assignments.

A sign that a student is cheating is when their prior assignments are incomplete or have failing grades and, without any communication, the current assignment includes all of their prior ones rewritten from the ground up and working flawlessly -- the Comeback Kid.

It is likely that the student has found someone to write their programs or has found the solution online. If it is the former, and the friend has not done this for anyone else, then the student may get away with it. If it is the latter, then it is likely that other current or past students have turned in the same (or similar) solution. To rule this out, I compare the student's project to all current and past students for the same assignment -- looking for students that solved the problem using a similar algorithm. If I find a match, then I have evidence to back up my claim.

ATTENTION The effort to manually compare each student project to all current and past projects is overwhelming and impractical. Being an enthusiastic software developer, I solved this problem by creating a cloud service which does the comparisons for me. Skip ahead to the second method in the section, How do you Prove the Student is Cheating, to learn how you can easily benefit from this cloud service.
If I suspect that cheating has taken place, I follow the protocol discussed above in the first cheat case. If the student denies it and I have matched their implementation with a current or past student, I present the evidence to them. Most students confess after seeing the evidence; however, some still deny it. I have the evidence. There is no denying it.

A third cheating genre is when the student suddenly comes back from many failing grades to ace the big project!


The Big Project Cheater


In most classes there is a midterm and a final project. These projects are comprehensive and usually count for a big portion of the student's final grade. Weekly assignments precede these big projects and are specific to a single lesson or topic. It has been my experience that students who do their own work tend to perform at or around the same level on the big projects as they did on the preceding weekly assignments.

A sign that a student is cheating is when the student does exceptionally well on the big projects, which exercise what the student previously learned, after performing terribly on the preceding weekly assignments. Bad grade. Bad grade. Bad grade. Bad grade. Boom! Perfect grade on the big project. There is no chain of evidence to support that perfect grade on the big project.

It is likely that the student has found someone to write their big project for them or has found the solution online. To prove my suspicion, I compare the student's big project to all current and past students for the same assignment -- looking for students that solved the problem using a similar algorithm. If I find a match, then I have evidence to back up my claim.

ATTENTION The effort to manually compare each student project to all current and past projects is overwhelming and impractical. Being an enthusiastic software developer, I solved this problem by creating a cloud service which does the comparisons for me. Skip ahead to the second method in the section, How do you Prove the Student is Cheating, to learn how you can easily benefit from this cloud service.

Finally, you have the case of the common tutor:

The Common Tutor Cheater


When a student is struggling and I do not have enough time to help them, I recommend they find a tutor. My college offers tutoring services, or the student can hire a private tutor if they have the means to do so. A good tutor will teach them the material without actually doing their assignment for them. However, on occasion, there have been tutors that simply hand the student a solution. This is discovered when my plagiarism service identifies one or more students who turn in similar algorithms. When confronted, the student pleads their case by stating that the tutor helped with the assignment. However, the student is still responsible for their own work and just because a tutor gave them the solution does not make it right to turn in work that they did not do. Therefore, this situation has led to disciplinary action take against the tutor.

ATTENTION The effort to manually compare each student project to all current and past projects is overwhelming and impractical. Being an enthusiastic software developer, I solved this problem by creating a cloud service which does the comparisons for me. Skip ahead to the second method in the section, How do you Prove the Student is Cheating, to learn how you can easily benefit from this cloud service.

How to Prove the Student is Cheating


Suspecting someone of cheating and proving it are two completely different challenges. Most of the time when I present my suspicions to the student, the student eventually confesses. Some students steadfastly deny they cheated even when you have presented evidence to the contrary. If you decide to take action against the student and the student decides to fight the accusation, then you must be prepared to prove it.

In this section, I will discuss several ways that you can prove that the student received their work from another. These methods involve identifying the student whose project matches the cheating student. When asked for proof, I simply show the two projects and point out the similarity.

Compare Each Student Project to Past Projects for the Same Assignment


The only way that you can absolutely prove that a student cheated is to find the source code or the project of a past student that matches the cheating student. It's rare that the cheating student actually knew or conspired with the past student to cheat on an assignment. More often than not, the two students found the same solution online and turned it in. If you can find that matching project (or multiple matching projects), then you can present a side-by-side comparison of the matching code to the cheating student. At that point, it's laughable if the student still denies the offense.

It is not practical to manually compare each student project to all past projects for each assignment. That is why I created the Estep Software Forensics cloud service. It compares a student's project to past projects for the same assignment and produces a page and a report identifying students who used SIMILAR ALGORITHMS. It identifies cheating students in seconds and displays the students in order of worst offenders to least.

Here is how it works.

First: Set up Your Class and Assignment Information


The Estep Software Forensics cloud service does not compare each student project to every other student in the database. Instead, it only compares the student project to current and past student projects for the same assignment. Comparing based solely on the assignment (and not to the entire database) allows the service to evaluate only relevant projects and within an acceptable performance metric. However, this does require you to set up your classes and add the assignments before you can use the service to check for plagiarism.

Estep Software Forensics streamlines the class and assignment creation by allowing you to create class templates. A class template defines the assignments and any report configurations for the assignment.

Step 1: Creating a class Template

Screen Shot: Creating and selecting a template


The next step is to create all assignments for the class template.

Step 2: Add Assignments to the class template
Screen Shot: Add Assignments to Template


Classes are then created from the template. At the start of each semester, you simply create a new class based off the template (takes just a few minutes). A class template saves a lot time because you are only doing the setup once for each type of class.

Step 3: Create a class from the template
Screen Shot: Create the Class From the Template


The final step is to add the students to the class. You can add them one at a time or import them using a pre-defined CSV file.

Step 4: Assign the students to the class
Screen Shot: Assign Students to Class


Check for Plagiarism After Each Assignment is Turned in


Now that you have your class and assignments setup, you can check for plagiarism after each assignment is turned in. The workflow to identify students who have plagiarized an assignment is very intuitive -- with just four easy steps:

1 - Select the class and assignment that you want to check for plagiarism.

Step 1: Select the class and assignment that you are checking

Screen Shot: Select Class & Assignment


2 - Import or add the student projects. You can add each project one at a time or import the projects using a pre-defined file name. We offer custom coding for this step. For example, we created a third import option for colleges that use the Desire to Learn application ( http://d2l.com ). This allows colleges to download the D2L projects and import them to our service -- saving a lot of time.

Step 2: Add or import the student projects to check
Screen Shot: Add/Import Student Project


3 – The report criteria were initially defined on the class template with default values. You can accept the default criteria as they were defined on the class template, or you can change them here to meet your needs, possibly focusing on specific packages and classes within the project, ignoring code that is considered debug statements, ignoring values contained within strings, etc.

Step 3: Apply specific report criteria (usually take defaults)
Screen Shot: Apply Report Criteria


4 – Generate the plagiarism report. This screen displays all students in the selected class that match another student project for the assignment -- worst offender to least.

Step 4 – Generate the plagiarism report.
Screen Shot: Generate the Plagiarism Report


Clicking the compare link on the Plagiarism Report page allows you to compare each method to the matching student to visually confirm the plagiarism.

View each method to verify the plagiarism.
Screen Shot: Verify the Plagiarism - Method by Method


And, you can download a PDF version of the plagiarism report for your records.

Download a PDF report for your records
Screen Shot: Download a PDF Report


Do you want to try it? It's super easy to get started!

Distribute a Solution with Identifying Markers


When a student is struggling with an assignment, I ask them to send me their project so that I can assist them. I usually find the source of their bug or issue and instruct them on how to fix it. I put my instructions in comments within the code near the bug. However, before I send their project back to them, I place hidden markers at various locations within the project. These markers are used to uniquely identify the student that received my solution. If a student turned in a project that contains another student's markers, then I know the second student is cheating. And, I also know who gave them the solution. I won't reveal what markers I put in student projects or where I put them in case a student is reading this article. I do have some advice on creating and placing the markers.

1 – The marker should be encrypted and look like it belongs in the code. I chose a marker that looks like something the Eclipse IDE would generate.
2 – The markers should be placed in multiple locations because students usually copy/paste sections of code and not the entire project.
3 – Place the markers in files that the student usually would not edit (like XML, JSON, or properties that are used by the IDE).

Be creative. It’s fun!

Let our service do this for you The Estep Software Forensics cloud service provides a page that allows you to upload a student project with the intent to distribute the solution to the student. It automatically places identifying markers at various locations within the source code and project. When a project is checked for plagiarism and these markers are found, the service alerts you and identifies the student associated with the markers -- displaying the cheating student and the student that was provided the solution.



Do you want to try it? It's super easy to get started!

Sign Up and Try it Out


Trying this service is free and easy. No commitment. No hassle. Just create an account and start setting up your classes and assignments. You can evaluate this service free for 30 days. Load your classes. Import your projects, and generate as many plagiarism reports as you want. Don't worry about cost or setting up any payment options while you are evaluating. Just create an account and start your evaluation.


In short, you have nothing to lose, so try it out!

Tell us About Your School or Institution Please provide your educational email address and your information about your school or institution. This service is meant solely for professors or administration personnel of educational institutions. We reserve the right to verify the email address belongs to the institution and is a professor or administrator.
Your email address will be your user ID to this application. Must be an edu address.
This is the name of your university, technical college, school, or company
Example: 123 Main St.
Enter the city where your institution resides. Example: San Francisco.
Select the USA state name or leave blank if not in the USA
The mailing zip code for your institution

Pricing

Choose a plan that best suits your institution. There are no contracts and no cancellation fees with any of our plans and you can cancel at any time. Please CONTACT US with any questions regarding the cost. We want to talk to you.

Don't wait. Let's get started today!

Pay For What You Use
You are charged (only once) for each uploaded project. Unlimited Usage.

Project Based


This plan is perfect for institutions that do not anticipate using this service for every assignment but plan to use it on specific assignments such as a midterm or final project. Invoice amounts vary based on usage.

Ugg.. rate currently not available. Check back soon!
Pay a Constant Premium
You are charged the same rate. Unlimited Usage.

University


This plan is perfect for institutions that plan to use this service for many classes and on many assignments. This plan is easier to budget for because your invoices are always the same. Use everything this service has to offer for the same monthly rate.

Ugg.. rate currently not available. Check back soon!

What is Estep Software Forensics?


Estep Software Forensics provides an online service which aids in the plagiarism detection process with regards to software development projects. It is intended to help professors of computer science courses identify those students who have likely plagiarized their work.

SAFEGUARD YOUR INSTITUTION'S ACADEMIC INTEGRITY AND REPUTATION WITH EMPLOYERS AND ALUMNI!

Java, C++, Python, etc. We have your back!

It allows you to reuse software assignments since it easily identifies students who go online and download past student solutions.

It saves you countless hours by removing the role of "cheat cop".

It helps you to identify misguided tutors who don't teach, but simply hand a student a solution.

When you need to hand out a full or partial solution, it allows you to tag the solution (like applying a watermark). If another student turns in a project containing the tag, you immediately know from whom the student received the solution. The tags are hidden and in various locations.



Built by a Professor for Professors!