Computer Science Students Should Learn to Cheat, Not Be Punished for It

Megalith

24-bit/48kHz
Staff member
Joined
Aug 20, 2006
Messages
13,000
Rebuking a Times article on rampant cheating in computer classes, this author opinions that plagiarism actually makes sense and is warranted in the professional coding industry. The argument is that in computer science, plagiarism would imply that you not only found an acceptable solution but have understood it enough to use it within the parameters of your own project. Another point is that the university method is biased toward producing academics or researchers and not workers. Is he right?

...in the academic world, plagiarism is a cardinal sin. There is nothing worse. If you get caught, you face sanction, or even expulsion. In the case of the aforementioned Purdue students, they got a zero for their work, and were docked a letter grade. But in the professional world, things aren’t quite as cut-and-dry. When you’re a professional coder, the priority isn’t to demonstrate originality with each line and algorithm, but rather to complete tasks as efficiently as possible. In practice, this means consulting sites like Stack Overflow and Reddit, in order to solve the problems you are unable to. Within a workplace context, plagiarism isn’t a vice, but a skill. It takes aptitude and understanding in order to look at how someone solved a problem, and integrate it into your own code.
 
Hey don't flat out plagiarise you gotta hide it, else the internet is going to make fun of you when they find out!
 
So wait, if someone has a homework assignment for CS and they try to find solutions by googling their problems... they run into a Stackoverflow of someone with a similar predicament and find a solution... Is that plagiarism?

I mean, I get plagiarism if someone copies/pastes someone elses code entirely and changes variable names and stuff, but learning by example is perfectly fine IMO.

I mean, by this definition of 'plagiarism' any and every code you use out of your class text book is plagiarism. Seems silly and stupid.
 
Like solving a math equation, points should be awarded for showing your work, not just the answer. If a student copies code, but is able to explain how that code accomplishes the task, he deserves at least some credit. If the class isn't being taught / tested / scored in a manner that allows for this, maybe that should change?
 
While it's true that professionals use Google, Stack Overflow, Reddit, etc. to find answers, not all answers can be found online, and we need to come up with the solution ourselves. That's why I believe academic plagiarism isn't good. We need to use our brains to solve problems sometimes, not just for searching for someone else's solution.
 
In the academic world, you're proving you understand the concepts and can implement them. The process and thought behind it is far more important than the final product.

In the real world, the final product is what's important.

The academic world is supposed to teach you how to learn and how to apply your existing knowledge to new situations. It is not supposed to teach you how to accomplish a specific task. Tech schools and OJT teach you specific tasks. Universities teach you how to learn and apply that knowledge.
 
There are only so many ways to write one or more lines of code. I'm pretty sure most anything would count as plagiarism at some point as far as coding is concerned because it is unlikely you are the first person to ever solve the problem you are working on.

Should they test you on your ability to write code to solve the problem or your ability to explain what the problem is and how you solved it?
 
Last edited:
Plagiarism is a skill
Uh no it's not, you put a comment over a particular line of code that says ";this piece of code used from XYZ" and fucking BAM! It's no longer plagiarism!

But lets be clear, if the purpose of the assignment is to show that you know how to do the stuff in the code, then you shouldn't be snatching code from elsewhere, if the purpose of the assignment is to simply "do something" then it shouldn't matter if you take someone's work and simply give them credit for whatever portions of code you took.

Granted I skimmed the article but the examples given sounds more like a bunch just found a previous year's assignment and simply copy/pasted them together.
 
I remember in one of my classes, a kid stored a variable and pretended to parse it with some code he found online, then output the variable completely untouched. He got a 92% and it was posted as the weekly student example, simply because his code passed the instructor's bench script, without throwing any errors.
 
I remember in one of my classes, a kid stored a variable and pretended to parse it with some code he found online, then output the variable completely untouched. He got a 92% and it was posted as the weekly student example, simply because his code passed the instructor's bench script, without throwing any errors.

Don't worry about that too much, some programmers do that in the working world too. I've done quality assurance on programs that I could swear they never even tested.
 
Kobayashi Maru
That F'n Kirk cheats and received a commondation for original thinking!!!

I mean come on, have we learned nothing!!
 
Isn't half the programming jobs in the world people just adding on to code that's already written? I would think plagiarism would help those people quite a bit.
 
Kobayashi Maru
That F'n Kirk cheats and received a commondation for original thinking!!!

I mean come on, have we learned nothing!!

The brazillians have a business society that is very reminiscent of the type of cheating Kirk did on the Maru.
 
I think it should be treated like a calc test that allows calculators versus not. The open calculator tests are usually significantly harder so that you can prove your understanding even though you have a calculator that can do lots for you where the non calculator test is typically easier as you only have to show understanding of the concepts.
 
When you’re a professional coder, the priority isn’t to demonstrate originality with each line and algorithm, but rather to complete tasks as efficiently as possible. In practice, this means consulting sites like Stack Overflow and Reddit, in order to solve the problems you are unable to. Within a workplace context, plagiarism isn’t a vice, but a skill. It takes aptitude and understanding in order to look at how someone solved a problem,
.. and when students cheat and plagiarize they short circuit the aptitude and understanding that the educational process is trying to impart. If you flat our refuse to learn it the first time then what makes folk believe they will understand it a second time. Oh wait.. they won't.. so every problem is "how do I start this?!" from then on out.

I can't count the number of times I have seen some student posting their homework, explain how they just mashed random shit they found on line, and expect others to clean it up and do the rest for them. They should go eat a bag of d's and I hope they never get a job in the industry.
 
Hey don't flat out plagiarise you gotta hide it, else the internet is going to make fun of you when they find out!

Or you might get promoted to United States Secretary of Education...

Plagiarism is everywhere. I busted one of my high school teachers plagiarizing an assignment.
 
This author is literally arguing the dumbing down of the entire science part of Computer Science.

It's a horseshit argument.

Yes, in the professional workplace it is common, and I've done it, to use many lines of code found online in a project to suit your company's needs. But to say that Universities need to change to a job-focused "training" model is beyond ridiculous. Without the larger and more theoretical concepts such as data structures and algorithms, who in the world could possibly become founder of the next Google or Facebook? Only those that go through a grad program? Not only would it prevent real talent from arising, it would produce mindless "C++ for dummies" flooding the workplace that have zero understanding of computer science as a whole. I cannot understate how absolutely important that foundation is even if you're doing basic web-programming for company X, Y, or Z.

Off the top of my head, I’m thinking about source management with Git, testing, project management techniques, and devops fundamentals.

This right here is useless to learn since anyone with half a brain can pick this shit up on the job within a week, a month tops. Project management and DevOps roles and practices vary widely between companies and learning, in that first month, how your company does it is all you need. This has no place taking up time at the University level.

This article pissed me off more than it should have. I went through a Computer Science program myself and I'm glad it was taught the way it was. If it had been taught any other way, or if it was taught like a shitty vocational school with job-focused emphasis, I would not be nearly as good at what I do.

What a piece of shit article.
 
Last edited:
When you’re a professional coder, the priority isn’t to demonstrate originality with each line and algorithm, but rather to complete tasks as efficiently as possible. In practice, this means consulting sites like Stack Overflow and Reddit, in order to solve the problems you are unable to

For the entry level, lego-brain tasks that works. Those are also the positions that are the pool that better developers emerge from. The more complex problems that require an understanding of your environment and the tools you're using are where compensation ramp up a bit. What's described in that quote is a $15-$20/hr programming position. I review my pool of developers from this group and see which ones can craft original concepts or demonstrate a desire to learn about the tools themselves. Those people are the ones that become my go-to team. The rest can stay entry level, because that's what they are...entry level.
 
Fixed that for you.
Most of them are now more interested in indoctrinating the students in a leftist ideology.

That depends on your major. If you're PolySci, sure, they're probably left-leaning. If you're in engineering, they really don't get political.
 
The point of not plagerising while at Uni is to prove you can code.

The point of plagerising at work is that you've already proved you can code at Uni so taking the quick route is fine - you've proved you understand code well enough to bend someone else's to fit your own need without copying their dumb ass mistakes...

I
 
Until one of these kids steals some source code and the entire company gets taken down by a multi million dollar lawsuit.

It's one thing to teach kids how inheritance works and how to use existing methods. It's another to say "just find someone else's code online and use it".
 
In the academic world, you're proving you understand the concepts and can implement them. The process and thought behind it is far more important than the final product.

In the real world, the final product is what's important.

The academic world is supposed to teach you how to learn and how to apply your existing knowledge to new situations. It is not supposed to teach you how to accomplish a specific task. Tech schools and OJT teach you specific tasks. Universities teach you how to learn and apply that knowledge.

Well said.
 
I have been through the academic rigor and when coding in verilog all my prof asked us to do was insert a descriptor saying where we got it and what it does. If the code did the job he didn't care. If it was messed up he barraided you.
Same for my research papers, lead with authors name and cite, then no ine cares and everyine got credit.
If your trying to pass shit off as your own to make yourself look like a genius.... Be prepared to fall hard.
 
No one ever got punished from cheating, people got punished sometimes after getting caught cheating.
 
Plagiarism is everywhere. I busted one of my high school teachers plagiarizing an assignment.
Did they actually state "this is my work" or was it "Here's your assignment" ?

Either way, apples to oranges, yes plagiarism is everywhere, but it still comes down to a matter of "it's you're responsibility to learn how to do this" versus "You need to get this done"
 
I think this seems similar to math proofs. You would work on math proofs during class / homework, but you had come up with the right proof at the right time during the test.

Perhaps testing for CS needs to change where you write code during the test without the aid of the Internets?
 
I don't know, sounds like bullshit developer elitists crying to me.

As an admin I know that all I need is God's help ....... and that in my host file, I alias God as google.com (y)

No shit, it looks like


127.0.0.1 localhost
xxx.xxx.x.xx mymachine mymachine.mydomain.com
172.217.6.361 god google.com
 
Well if the goal was to teach how to use google to find a solution for something then it would be called google class not coding class. That's an important skill too, one that many lack sadly. But in coding tests I do believe you should write your own code, to truly test your skill in coding and not in searching the internet.
 
Depends on what your trying to do. Googling how to use certain frameworks and plugins I think is fine but to code for it, it requires a lot more skill.
 
This is just another example that public education isn't about preparing people for working in the real world.
 
I agree that one should not plagiarize code. However, when I was in college, there were more than a few times that I found myself approaching the task in such a way that it could have been considered plagiarism. It wasn't that I went and looked up someone else's code, it was just that sometimes there are certain things that are best done in the most efficient manner possible. Taking this approach leads to code that is essentially identical to something that someone else has already done. This is not plagiarism and I rightfully never got dinged for it.

You can look at it like music. Just because you write a song that uses a common chord progression that someone else before you used in their song, does not mean that you plagiarized that song. This has been proven in court (see Wolf Trust v. Led Zeppelin, 2016). Likewise, identical snippets of code do not make the whole. Certain processes are going to naturally find themselves being duplicated simply because that is the most efficient way to code them.

Plagiarism really occurs when the project as a whole replicates what someone else has done and this should be avoided unless you have unlimited legal resources like Microsoft.
 
Depends on what your trying to do. Googling how to use certain frameworks and plugins I think is fine but to code for it, it requires a lot more skill.
The appropriate reference manual should be available, but googling and copying complete code from the net must be a no no.
This is just another example that public education isn't about preparing people for working in the real world.
In this case education is right. They should test your ability to write the code completely from scratch, because there will come a day in the real world as well, when you must write an algorithm that noone has done before, or at least they didn't make it publicly available on the internet.
 
The point of not plagerising while at Uni is to prove you can code.

The point of plagerising at work is that you've already proved you can code at Uni so taking the quick route is fine - you've proved you understand code well enough to bend someone else's to fit your own need without copying their dumb ass mistakes...
I
I have no idea how to code, but I'm pretty good at copy/pasting StackOverflow stuff into a text editor and caressing it to solve my problems.
 
In this case education is right. They should test your ability to write the code completely from scratch, because there will come a day in the real world as well, when you must write an algorithm that noone has done before, or at least they didn't make it publicly available on the internet.

This is something inherent to the person, and public education is not capable of teaching it. Maybe about a quarter of software developers I've dealt with have this capability.
 
This is something inherent to the person, and public education is not capable of teaching it. Maybe about a quarter of software developers I've dealt with have this capability.
You're telling me that only a quarter of developers can write code only based on the developer documentation of the software? I don't mean they should find out the syntax and the commands themselves. I'm only saying they shouldn't copy & paste complete code or code snippets. And not always. Only in certain tests.
 
You're telling me that only a quarter of developers can write code only based on the developer documentation of the software? I don't mean they should find out the syntax and the commands themselves. I'm only saying they shouldn't copy & paste complete code or code snippets. And not always. Only in certain tests.
Only a quarter of developers I've known could even come up with a unique way of doing things, regardless of their coding capability. Of course, they're way ahead of the general population, where it's probably about 3-5%. Most human beings are only capable of putting legos together, not designing their own lego pieces.
 
This is something inherent to the person, and public education is not capable of teaching it. Maybe about a quarter of software developers I've dealt with have this capability.

From my understanding, working as a storage admin in a development lab, his man is correct.

From my understanding, and an article I read lately, I understand that huge amounts of code for different problem sets have been written and are available for coders to take advantage of and bend to their needs.

I have a favorite saying, "there's more than one way to skin a cat". But it goes hand in hand with another "there's only so many ways to skin a cat".

There is a reason that all cars have steering wheels and brakes and head lights. Sure there is a bunch of variety but how many cars do you know of that don't have a steering wheel?
 
There is a reason that all cars have steering wheels and brakes and head lights. Sure there is a bunch of variety but how many cars do you know of that don't have a steering wheel?

I like this. :)

You know how in all cars, the brakes, accelerator, and steering wheel are all in a certain position, depending on where they're purchased? Some have a clutch, but when they do they're all in the same place. However, notice how the turn signal, windshield wipers, and lights can be in different places? (BTW, 2013 Subaru Legacies have the hazard blinker control in a HORRIBLE place. I just have to say that. I love my car, but I hit that stupid button about half the time I shift into park.) That analogy is perfect for this.

Any car engineer can allocate the location for the brake, accelerator, steering wheel, gas cap, wiper controls, etc. Only a few could come up with the automatic braking system, self driving system, or even a sensor that tells the driver that the air filter is clogged.
 
Back
Top