15 min readHow to cheat at Georgia Tech OMSCS and get away with it

How to cheat at Georgia Tech OMSCS and get away with it

TLDR: You can't!!!

Don't pass go, don't collect $200, go straight to jail.

Let's examine why properly cheating is worse (less efficient) than committing to honest studying and applying problem-solving in any course at the Georgia Tech OMSCS program.

Why this article

After reading how the system at OMSCS at Georgia Tech catches about ~5% of students cheating in classes every semester, I found it fascinating why some people cheat.

Worst of all, cheaters end up hurting two people. The first is themselves, but they knew that going in. The second person that gets broken is the innocent students who made a small mistake with permanent damage to their reputation.

Some cheating is done with both parties mutually consenting to the act of cheating; I don't care about that. Both of you should get caught and appropriately punished.

What I care about are the students who made simple mistakes, and where a cheater took advantage of that.

Some cheating happens when an unsuspecting student accidentally shows project code on Github public, by accident. Sometimes due to getting a new job, transferring code to a different repo, or getting help from TAs. The list can go on.

I want to show how much work goes into proper cheating in the spirit of disincentivizing would-be cheaters onto the righteous path of honest academic integrity.

Honor among thieves

“Quin etiam leges latronum esse dicuntur, quibus pareant, quas observant.”

A phrase attributed to Cicero of the early Roman Empire.

It simply translates to:

"There are said to be the laws of robbers, by which they obey and observe."

The idea is that there should be rules governing how you cheat.

The only rule you shall follow is the following:

  • Do no harm to others

Simply put, if you cannot forever stay hidden and protect the target you wish to cheat from, then don't bother cheating.

If you get caught, then most likely, the target you stole code/paragraph/article from gets caught as well.

If both of you are in on the "heist", then you both deserve to receive punishment.

If the target is an unsuspecting innocent person who made a mistake, they'll be punished undeservingly.

The rules of Georgia Tech are just too cruel, but it's how they get to keep their status as a top-tier university program in Computer Science amongst other degrees.

Know thy enemy

To properly pull off something of this caliber, one must follow the adage from the Art of War; written by the famous Sun Tzu, "keep your friends close; keep your enemies closer."

The idea is to make sure no harm comes to yourself and, more importantly, the innocent target you wish to cheat from; then, you'll need to learn about the key players against you more than you understand your friends, to the point of obsession.

Keep in mind that the system works against you (as we shall see later); you are up against people with more experience in catching cheaters, people who may be individually more intelligent than you and, without a doubt, collectively blow your intelligence out of the water.

This is why sports such as chess ban players who receive help during tournaments, the idea being two minds are better than one.

Again, pulling off this heist will require lots of work. So much work that you may ask yourself isn't it better to just study honestly?

Hopefully, I have pushed you towards the light by this point. If not, let's continue to see why this is all so inefficient.

Who are the key players

We must first understand all the players in this game of cops & robbers. More specifically, we must understand all the players that wish to see your demise.

Doctor David Joyner

Doctor David Joyner is the Executive Director for Online Education for the OMSCS program.

Doctor David Joyner has written three books:

To properly cheat, you will have to read the books and most, if not all, the reference articles outlined in the books.

Doctor Thad Starner

Doctor Thad Starner is the teacher of the very famous Artificial Intelligence class over at the OMSCS program.

Doctor Thad Starner is also a lead researcher in using algorithms and machine learning to detect cheaters, and brags how the Artificial Intelligence class is part of that research.

The idea is that Doctor Thad Starner is a crucial player who may be involved in catching you, even if you are not in his class.

Academic Integrity Team

Next up is the academic integrity team over at Georgia Tech.

This team is made up of former TAs or people interested in reducing the number of cheaters at Georgia Tech.

These students get paid ($15 an hour) to spend about 20 hours a week, all with the purpose of improving methods of catching cheaters.

There jobs range from setting up servers/database to house data collected, creating bots that scrape information from web sites (probably through the use of web scraping bots), and most likely using Artificial Intelligence and Machine Learning to utilize the data collected.

Class TA's

TA's are the life and blood of all OMSCS programs at Georgia Tech.

Their duties range from leading office hours, grading, creating homework/exams, and reviewing homework/exams.

When they review your homework, you are most vulnerable if you've been cheating.

As we shall see later, they use the best software programs that detect if cheating has occurred.

Summary

Even though I went over superficial information about the key players, since you are the one who wants to cheat, it's in your best interest to learn even more about these people than I could fit in this article.

For the sake of yourself and the target, if you cannot even do the baseline of research on the key players, then just spend the time to do honest studying of the current class you are currently in.

The process of cheaters & OSI

Now that you understand the key players at an intimate level, the next type of research you should be doing is seeing how other people got caught.

The best place for this type of surveillance is through Reddit.

I am nice enough to put up some interesting threads on this topic:

It's your job to go above and beyond just three articles; try to aim for all the articles.

Google is your friend, but if you find that to be too much work, I recommend a creating a reddit bot that can scan all of the OMSCS Reddit threads for specific keywords related to cheating.

Python is an excellent language to do this in.

Also a crucial skill in just gathering data as well in your cheating ventures, since the academic team will also be using scraping bots as well.

Lastly, you'll need to scour all of the internets for articles on how one catches cheaters.

I already gave the article for that, and here it is again.

Your goal is to understand how others catch cheaters, and I won't be doing that work for you, but there are plenty of articles and research papers that discuss these methods.

If you can't be bothered to do this research, I recommend using that time instead to study honestly.

Obfuscating your location

So now that you've done your research, let us talk about obfuscation.

Do not confuse obfuscation with security. All obfuscation simply does is buy you time; it is in no way guaranteed to protect you.

Sometimes time is all you'll need, though.

So here is a list of software and programs that will help you with obfuscating your IP address, location, and even operating system:

Use all three at the same time. Do your research on why all three are needed.

Lastly, since you are a Georgia Tech OMSCS program student, remember that the school uses the Duo Application to authenticate students. Keep in mind that Duo keeps track of a lot of user data such as location, time, IP address of when the app is used, and when/where you authenticated at.

Watch out for honey traps

Honey traps is a simple and effective technique. They range from politics and espionage to even catching cheaters.

For this article, the idea is that there are fake websites (with answers), GitHub repositories, and even articles online built to lure cheaters in with the hopes that they are lazy enough to copy/paste what they see.

Avoiding honey traps requires a simple and lengthy time commitment (about three months).

You must know beforehand that you will cheat.

This technique of knowing what to get is called frontloading. Frontloading simply means getting the projects ahead of time and doing the work before starting the class.

Some may frown upon frontloading in all cases, but it is not cheating to do work in advance. After all, doing the assignment honestly ahead of time is still leagues better than cheating.

For your purpose, however, you'll be getting the project in advance for evil reconnaissance.

Let's go over the steps one by one.

1. Find websites

The first thing to do is to keep a list of all the websites you find that have the answers you are looking for.

Keep this information in an excel sheet. Save the URL, date, and some snippets of what you want to take from the website.

My recommendation is to use web scraping bots, it will help reduce the time spent scouring the internet.

2. Add website to archive.org

The next thing you want to do is add the information over to the Internet Archive

The Internet Archive is a place that stores direct HTML information of the website through its Wayback machine.

The idea is that for every website you run into with the code/paragraph you want to steal, you want to add that specific URL to the Wayback machine.

The reason is that the TA and the Academic Integrity Team are scouring the internet for code/paragraphs for class assignments that are not known honey traps.

For example, when one of these students finds a non-honey trap GitHub repo, they issue a DMCA. This DMCA takes a while, but eventually, GitHub will have complied, and GitHub will take down the non-honey trap code repository.

At that point, access to the target URL is gone unless you gave that URL to the wayback machine.

Under the Wayback Machine, your item is saved and accessible, even if DMCA has taken down the original URL of the target.

If even the Wayback machine is compromised (aka respects a DMCA, doubtful), hopefully, you saved the item in your personal excel sheet.

Sagely advice: do not use the school's excel word program to save this information. It's on the cloud and accessible to staff, including the academic integrity team who most likely has access to Microsofts API's.

3. Wait three months

Now that you've done the first two steps, we have to wait for the Academic Integrity Team to do their jobs.

If the website is no longer available after three months, congratulations, you found a target that is safe to copy from.

If the target is still available online, it may be compromised.

4. Do not copy code

So you may be thinking you are in the clear, but you are not.

It is never a good idea to copy and paste code directly from any source. Your best bet is to manually enter keystroke by keystroke the code/paragraph/item you want to steal.

The reason for this is code watermarks.

Take great care in copying obfuscated code

Obfuscated code is tricky to notice at first because you don't have the knowledge to tell the difference between correct code and obfuscated code. You know, since you decided to cheat instead of doing honest studying.

Let me give you an example.

Let's say we are in charge of catching kindergarteners cheating on a math assignment.

Let's say, for this example, the assignment is what is 1 + 1?

Well, you and I know that the answer is 2. But the cheating kindergarteners don't know that because they decided not to study simple arithmetic.

So what we do is set up a honey trap website with the following:

1 + 1 = ((1 - 1 + 1/2) * 0 ) + 2

Now the unsuspecting student copies/paste this on their homework assignment, which raises an enormous red flag for us.

Why does this raise a flag?

Simply put, the probability that the student came up with this answer through their creativity is highly improbable.

Let me explain.

First, the simple answer if the student did honest studying is 2.

Just 2.

If the student is a cheeky super genius that wanted to show off their rudimentary knowledge of basic arithmetic, what was stopping them from giving the following answers:

1 + 1 = 10 - 8
1 + 1 = 0 * (1 + 1 - 1 - 1) + (3 - 1)
1 + 1 = 0 + 2

The answer is nothing was stopping them. Even if the student were a cheeky super genius, the probability that they would do some ridiculous answer other than what was on the honey trap website is high.

There are almost unlimited combinations of cheeky answers, but only one precise answer was given by the student, the one found on the honey pot website.

Even if the student obfuscated their entire online presence, the simple fact that their answer is the same as the one found on our honey trap website raises the flag that the student cheated.

To verify this, all one simply needs to do is ask the student the following:

  • Why did you decide to write out a long, cheeky answer?
  • What does the math do?

If the student knows arithmetic, they should answer this question with no problem; showing that the answer is just coincidence on the level of lightning striking once, which does happen on sad & rare occasions.

If the student doesn't know arithmetic, they'll come up with something that makes no sense, making everyone who knows advance arithmetic realize that the student did cheat.

How to avoid this

There is no way to avoid this other than understanding the material to the point of intimacy.

You need to reverse engineer the answer you got from cheating.

You'll have to examine the answer you got yourself and then recreate the solution from scratch by yourself.

This is the only way to catch obfuscated code as it takes advantage of the fact that the cheater does not possess the knowledge to tell the difference between a bad answer and a good answer.

Therefore, you'll need to eliminate your knowledge gap by studying to gain the knowledge necessary to avoid obfuscated answers.

TLDR: You'll need to study!

Avoid code matching

Lastly, and the most important thing you'll need to do is to avoid the software that Georgia Tech uses to catch cheaters.

Most schools, including Georgia Tech, use some type of MOSS to identify similarities in code from other students and, if the software allows for it, software code found online.

I won't go into much detail about this; the idea is that the software can compare code and catch similarities even if the cheater changes variable names, function names, order of declaration, remove comments from scanning, etc.

This is because the systems in place produce abstract syntax trees of your code.

If you've taken the Compilers class over at the Georgia Tech OMSCS program, you will have realized how easy it is to produce ASTs for specific languages.

Even if you've renamed everything about your code, something is going on if the AST looks the same as someone else's.

The only way to "fool" the system is to write original code.

Even though it seems counter-intuitive, the system is built on the philosophy that "There is more than one way to skin a cat".

The idea is that there are multiple ways to solve a problem.

Even something as simple as printing to screen the numbers 1-10 has about ten different ways of doing that.

Here are two pseudocode examples:

# 1st way
int i = 10
while(i > 0):
  print(i)
  i--

# 2nd way
for(int x = 1; x <= 10; x++):
  print(x)

The idea is that the more complex a problem is, the higher the probability that there should be variance in the code that an honest student generates due to how many ways there are to solve complex problems.

Therefore if the code is strikingly similar to another student for complex algorithms, such as the ALT algorithm, then the probability is high that cheating has occurred.

Further investigation will be necessary to determine if cheating is occurring; of course, all students deserve the benefit of the doubt.

How to avoid this

The only way to avoid this is to reverse engineer the stolen code/paragraph/item again until you know what's going on to produce a different set of answers entirely different from the original.

Therefore, it's in your best interest to study how and why the answer works the way it does and come up with several alternatives yourself.

Submit coding projects in increments

Many courses at Georgia Tech OMSCS use an automated grading software called Gradescope.

Remember that staff can view all your work submitted to Gradescope, which is used in conjunction with software analysis programs.

I had projects that were split into parts; each part relied on the solution of a former part. For example, part 3 depends on the code submission of part 2, and part 2 relies on the code submission of part one. Each piece is worth 1/3 of the total grade for my assignment.

The issue is that you don't know if you pass or fail a submission until after you've submitted your code.

The other issue is that no one submits perfect code 100% the first time, all at once.

Even myself, I only had one assignment where I got perfect scores for every submission. Even I submitted my work incrementally starting with part one, making sure I got the total points before tackling part two.

If you are going to cheat, at least give the illusion that you are working honestly on a coding project.

As for written assignments, I'm not sure how the process goes with auto-grading.

However, if you are writing an assignment, your best bet is to type everything on the school's Microsoft Word Account.

Don't type what you've copied word by word.

The account keeps timestamps, saves your assignment in increments that work as a time machine, and you'll at least give the illusion of working honestly.

Lastly, ensure you read all the references you've pointed out, and you better study what you've written. Know the details of your assignment intimately to the point you become an expert in the topic you are writing about.

Take notes

Honest students solve problems on paper before writing a single line of code, or at least I do.

I want to think that at some point, every honest student has some paper trail (or whiteboard) that shows how they came up with a coding solution before actually coding it on their computer.

In essence, a cheater goes through the motion but doesn't fully commit to having any of the proof that honest students have, which is writing out solutions on paper.

Even on the assignment where I had perfect submissions, I always worked out each part on paper (sometimes whiteboard) as it was faster to see that than actually writing the code on my computer.

As for written assignments, I'd like to think that honest students use reference software, such as Zotero to keep track of reference articles.

The problem with this is you must have the working knowledge and a clear creative conscience (never seen the answer to your coding project) to properly work out a problem.

This is another reason to make sure you take the honest studying route.

Avoid talking to people

If you've read the article I presented earlier you'll realize that the school is working on ways to increase the surface area in which they catch cheaters to include collaboration amongst students and even work for hire.

Shallow online reasearch shows testomonial evidence of students reporting other students for cheating.

As for the work for hire incident, the paper admits that this is their weakest form of cheating analysis.

I want to think the school tries to match the IP address of code submissions with other evidence, such as the IP address of your Github submissions and your Duo login IP address.

I have heard that Georgia Tech has fake websites and fake bots that pose as work for hire.

Lastly, the cynical part of me believes that there are TAs and members of the academic integrity team who pose as students, the same way you have undercover cops.

It will never help introduce people into your cheating scandal as it increases your surface area for getting caught.

You cannot control the actions of others. If you pay someone to do your assignments, what's stopping the academic integrity team from paying them to give up the names of students?

In conclusion, it's easier to do honest studying

If you've read the article from beginning to end, you'll realize that so much work goes into adequately cheating that it's more efficient to do honest studying.

There are many benefits to honest studying:

  • No stress from managing your surface areas for cheating errors
  • Less research due to avoiding reconnaissance tasks
  • More free time due to not doing reverse engineering of answers
  • A clear conscience as you did the work all on your own, with integrity
  • The value of the Georgia Tech OMSCS program increases as student cheating decreases

The list goes on.

The reality is that the cheaters who don't get caught are either very lucky or take precautionary steps to understand the assignments to the level of studying regardless of taking the dishonestly traveled path.

One starts to think if reverse engineering, when done to the point of intimately knowing the material, is considered cheating or just another form of studying.

I'll leave that answer to you.

What to do if OSI contacts you and you are entirely innocent

If OSI contacts you and you have not cheated, I recommend not signing any documents expressing guilt.

As I've never been through the OSI process, I would not know what to expect.

If it's anything like my high school experience from long ago, I can tell you with absolute certainty that the process will be an uphill battle due to the perceived notion that the school is rarely wrong in its initial findings.

Think of it from the perspective of law enforcement, as the stories I read online are vastly similar to my experiences dealing with cops when I'm at the wrong place at the wrong time.

The way cops justify stopping someone as innocent as me when walking the street late at night because all "viewable" evidence points to me as the most likely suspect of a recent "robbery."

Even though no evidence is presented to back up their case, I am detained and go through a "probable cause" investigation on the spot, where I am treated as guilty until proven innocent.

I mean, cops rarely get the wrong person. It sounds like sarcasm; in reality, if you are being investigated, there was previous evidence pointing to you committing a crime; I'll give them that.

But just because they are investigating does not mean you must help cops build a case against you. Let them do their jobs with zero help from you.

You can listen to this lawyer who was previously a retired investigative cop share their story that all people, including the guilty, will always pronounce they never committed a crime.

People at OSI deal with cheaters regularly; even if you are innocent, they don't send you over to OSI unless they are confident that they have a strong case against you.

They may offer you an easy path to end this; don't take it.

The story of the cheater that never cheated

In high school, I wanted to fit in with the "cool" kids. In reality, they were bullies, but I didn't know any better at the time what thirteen year old does.

One day I had a math test. It was sort of like a simple multiplication table test, and our teacher told us in advance that we would be tested on this type of multiplication table.

These bullies egged me to write the answers on my hand. They told me they did it, and if I wanted to continue hanging out with them, I also needed to.

So I did.

I thought, "Ok, I'll have them write the answers on my left arm, and when I take the test, I'll wear a sweater and keep my hands down. I've memorized the multiplication table; this should be no problem."

Wrong I was.

When I took the test, I kept my left arm down and away from my eyes. I never once looked at my arm. Regardless, I made a fatal mistake. When I went to turn in my test, I did it with my left hand, and it left minor ink stains.

I was sweating due to my sweater. The ink ran onto the testing paper and left tiny stains when I went to turn in my test.

The worst-case scenario happened. My teacher investigated due to being suspicious of the minor stains, heard my story, and decided that I was lying. The teacher told me, "If you had no intention of cheating, why would you write answers on your arm in the first place? Your story of wanting to keep these supposed friends happy is a lie."

In the end, the teacher gave me a choice. I could go through a tedious process that would waste everyone's time, or I could sign this academic misconduct paper stating that I agree I cheated and accept all consequences of my actions.

I did the latter.

It was a big mistake because from then on, I was treated by all my teachers as a cheater. I lost my friends at the "cool" table because they found out I did not cheat. I lost the respect of my teacher, who thought I cheated.

At first, I didn't feel the consequences. All my teachers put my table next to their table in every one of my classes. The teachers did this to incentivize academic integrity on my part.

Until a year later, in a different class, my biology class. In biology class, I put down references to articles for a paper. The teacher who knew about my academic misconduct always double-checked my submitted work. Well, one assignment had a sentence very close to a Wikipedia page, although not precisely.

Imagine I turn in an assignment about Steve Jobs's 2005 commencement speech., and in my paper, I reference the youtube video. I write about the quote "stay foolish, stay thirsty" and how it came from the last catalog of the Whole Earth Catalog (1974). This is because Steve Jobs mentions this in his speech, ever so eloquently, I might add.

Now Imagine this teacher double-checks my work; they find a Wikipedia article with the sentence "1974 edition of the Whole Earth Catalog".

My sentence "Whole Earth Catalog (October 1974)" is very similar to the Wikipedias article "1974 edition of the Whole Earth Catalog," and I should have quoted my sources.

Well, I did; I submitted the Youtube video as a reference. This particular teacher is still not convinced; keep in mind at my high school, all that is needed is a 51% chance that I may have cheated. The teacher only needs to show that the opportunity was present; no evidence needs to be presented on the teacher's side.

In the end, I admitted using Wikipedia as a reference source, as in using the reference section to get the necessary information. Even Wikipedia has the reference section link to a Stanford Article that links to the Youtube Video.

With my confession, along with my previous academic history of misconduct, my teacher has concluded that I have had the opportunity present to cheat.

I was given an F for the assignment and the semester at my high school.

The moral of the story is do not take the easy way out if accused of academic misconduct because the consequences of pleading guilty when you are innocent may present serious consequences for you in the future if other allegations come your way.

I believe this mentality others have about the accused comes from the adage, once a cheater, always a cheater.

In this case, the best chance to avoid being wrongfully accused of cheating is to take a proactive approach by protecting yourself from mistakes and negligence on your part.

Other lessons to impart from this story are to never give into peer pressure and don't put yourself into awkward positions that are hard to explain away when all "evidence" points to a 51% likelihood that you have cheated or were negligent in the handling of your assignments.

How to protect yourself from cheaters

From what I've read online, I see that people's main issue is making simple mistakes.

Public Git Repo, accidentally showing code during office hours, perhaps forgetting to put in a reference.

Let's look at some ways you can protect yourself.

Use Georgia Tech Github Enterprise & Microsoft Work Account

Georgia Tech uses Github Enterprise as an option for hosting your code; use it by default.

The school's default settings are that all repositories you create are made private.

Any chance of forgetting to set your repo to private has been eliminated.

As for doing your work, your best bet is to use the school's Microsoft account.

This way, you can control who has access to viewing your working material.

Always reference resources you've used in assignments

This is a given, but always make sure to reference your work.

If working on a coding project, reference any article that has helped you as a comment.

On top of that, ensure you never look at pseudocode unless your class explicitly gives permission.

By default, the classes I have taken have disallowed us from looking at code or pseudocode online.

Articles that explain the process were fine to use, as long as I referenced them.

If writing a research paper, all ideas that are not your own must be referenced. It's the academic way of recognizing that not all ideas come from you.

Referencing the work of others is important to do, don't get lazy in doing this.

Save notes that you've used to solve problems

Lastly, ensure that you save whatever notes you have or used to solve a problem in your class.

If you've ever been sent to OSI, you'll have the opportunity to submit your evidence, including work used to derive your solutions.

If you show that you derived the answer yourself, most likely through scratch paper, you'll have evidence backing your claim that you did the work all on your own.

I hope I was able to deter you from the path of darkness

Well, I hope you've realized that it's not worth being dishonest in the Georgia Tech OMSCS program.

If you're lazy, you'll either get caught. If you don't get caught, all that simply means is that you're one of the very lucky few.

If you decide to follow the articles advice and "cheat properly", the amount of time and effort is simply not worth it. It's more efficient for your time, mental health, and well being to study honestly rather than go through the rigor of cheating.

By participating in honest studying you also help improve the culture over at Georgia Tech OMSCS. Honest studying shows that you value your fellow colleagues efforts in the program.

Thank you for your time; I hope you had fun reading this as much as I had writing it.

I wish you all the best in your honest academic journey here at Georgia Tech's OMSCS program.

Hello! I'm just a person who wants to help others on their programming journey.

Godot Tutorials

Student