
As Computer Coding Classes Swell, So Does Cheating - danso
https://www.nytimes.com/2017/05/29/us/computer-science-cheating.html
======
glangdale
This is hugely important as a lot of people see programming as a ticket into
higher-end jobs and will spend as little time as individual contributors as
they can. The idea that "oh, they'll get caught in the workforce" is not
correct - quite often the plan in the mind of these folks is that they will
try to fake their way through and be moved up into project management,
technical marketing, etc. and never have their lack of these specific skills
exposed again.

In my experience these people are very dangerous, as their motivation to avoid
being forced to try to do the thing they were actually hired to do is _very
strong_. So they will have a mindbogglingly strong motivation towards office
politics, manipulation of grievance mechanisms, etc. relative to someone who
is 'distracted' by the prospect of, I dunno, doing the work that they are
meant to do.

I worked at a tutor at the University of Sydney in 1993, where a group of 7
students hired a professional programmer to sit the 'gatekeeper' practical
exam. These exams could be retaken but you could not enter 2nd year CS without
passing them regardless of your marks. They were caught (via handwriting
analysis on the worksheets where you were required to show your notes, among
other things!) and in some cases fought the university in court for years over
this.

~~~
glangdale
Here's the trajectory:

Fake your way through basic CS courses.

Find your way into group-work heavy projects in later years, possibly doing
enough ancillary aspects of the work to be semi-useful. It will be likely that
your other group members will find it easier to grin and bear it.

Optionally: do a Masters or PhD. Plagiarize your work, or potentially hire
someone to do it for you.

Continue into the work force, focusing on office politics, group projects,
putting your name on things that you weren't really a contributor to, etc.
Write a lot of reports.

This is why we're not a profession, folks. I'm amazed at the number of people
who got on here to theorize about every goddamn thing ('grade inflation!'
'what are marks good for anyway?' 'I use the web all the time to remind me of
things I've forgotten!') aside from the content of the article, which is that
there are tons of people going through coding classes who are apparently
aiming to get through without learning any code and want to cheat.

Every time you get dragged through some pointless, patronizing and degrading
interview process that assumes that you don't know your stuff - you can thank
the cheaters and fakers, and the fact that our industry doesn't have the will
to root them out.

~~~
komerdoor
A company in the Netherlands sometimes hires me to help them guide the
interns. They are what is called a learning-company over here.

Out of the 100 IT interns every year there are usually about 5 that know more
than only the basics. This has been a consistent pattern I've seen over the
last 4 years. It does not matter what level education they are having. Many
times I even had to explain what functions, conditions etc. are while they
somehow still managed to get average grades for classes that require this
knowledge.

I really do not understand how so many people manage to fool almost everyone
for so long. It usually ends up being the case that I (because I get hired to
guide them) or the about 5 good interns that are there do most of the work for
them. Of course some of them still manage to setup a Wordpress website or
write some simple HTML. Just enough to impress the company owners.

Another consistent pattern (as mentioned before) is that very often their end-
goal is to become an IT-manager. These are usually the better talkers.

Of course this is all anecdotal, but I've asked many other people that guide
IT interns and they noticed the same thing. Probably something that can be
researched.

Now I may seem like the one that thinks very highly of himself (by reading my
own text I can understand why it may look like this) and this is exactly what
makes this difficult to explain to the company owners when I notified them
about this. They just do not believe the 5 to 100 ratio and think I've some
difficulty accepting people.

~~~
consp
I've been an assistant on 1st to 3rd year bachelors courses in CS in the
Netherlands (basic OOP, Software Architecture and Algorithmics like courses)
and probably seen many of the types of copying and forgery. I can concur that
most students don't really understand but just regurgitate what has been said
even at Academic levels. On some Examples of what i've seen which sometimes
leads to the types of interns you give:

\- 1-on-1 copy paste, change the name: Easily caught by looking, no need for
anything else. These will fail.

\- mostly copy/past, changing names some locations: Easily caught by letting
them explain the workings of their code, they will always fail. I've had one
lazy student who could easily explain while copying but was just lazy out of
hundereds. These can slip through if the course is understaffed or badly
designed.

\- Hand written assignments: Mostly parallel working when individual required,
I'm not agains cooperation but mostly you could see that one student got the
exercise right and the other just copied him/her and usually lacks details
which are in the other assignment. It is very noticeable if they copied it due
to similar layout and textual form. If the assignment is too simple this is
harder to detect, but quite easy in algorithmics courses. These are far harder
to detect and prevent, though individual checkups (at random) are a good way
to test the true knowledge acquired. Needs lots of staff which is never there
since 'budget cuts'.

The biggest problems are the group assignments as noted in other posts. They
are hell to get rid of people as failing one usually means failing all even
when some didn't perform. The usual trick to get it right is to either fail
the entire group and give them an individual assignment to filter out the
incompetent or to do the same thing on an individual basis. The problem is
that you actually have tangible evidence otherwise it is very difficult,
though commit logs is a start. The people who should fail and get through are
at least some of the 95% you mention.

The 5/100 ratio is not odd/off in my perspective. You describe the top 5-10%
(which are good and you want at your company) vs the next 30-40% which are
average and simply make things work but lack initiative or knowledge vs the
rest which should look for another job since these applications usually
contain at least some amount of incompatible applicants.

Consider that if you pay peanuts, you get monkeys so that also might be the
problem.

ps: IT-managers without proper IT knowledge (and yes I mean the basics) are
the same thing as a CEO who is unable to speak in public: Nice decorations on
the office floor but utterly useless in practice.

~~~
marsRoverDev
RE the group assignments, my university quite successfully dealt with this by
introducing a scaling factor based on peer assessments within the group. This
scaling factor was strong enough to allow a group to fail one member if they
received poor enough grades. Failing one member tends to boost your own grade
as well, as the assumption is that you ended up having to pick up the slack.

I did three group assessments, and out of those three failed two students with
the help of my teammates, by co-ordinating our peer assessment. This peer
assessment does not become public until grades come out, at which point they
can be disputed. But 3 vs 1 usually comes out in favour of the group.

~~~
lol768
> RE the group assignments, my university quite successfully dealt with this
> by introducing a scaling factor based on peer assessments within the group.

This is something my university has done, but didn't implement quite as well.
I think the key here is making it completely anonymous (ideally filled out
online individually) because otherwise objectively assessing a group member's
performance in front of them is difficult.

With that said, I think I'd still find it hard to outright fail a group member
via these means unless they literally put zero effort into the group project -
it seems a small thing to threaten their entire degree over.

~~~
Zoneman
I failed a group member over this. They did put a small amount of effort in,
but the problem was that the parts of the project they agreed to take on ended
up having to be done or re-done at the last minute. If we had just known he
was going to do nothing, we at least could have planned for it. In the end,
putting in that small amount of effort actually hurt more than putting in none
at all.

------
NickGerleman
I've been a TA for a couple CS classes at Iowa State University. Cheating here
at least is pretty rampant. I would guess 1/3 or more of the students cheat in
some capacity.

Some of it is really easy to detect too. For a first semester freshman class,
I tried using MinHash to cluster student submissions together. Maybe 10% of
the assignment have near duplicate pieces of code. More comprehensive methods
like MOSS (Measure of Software Similarity) find much more.

It's hard for professors to take time to deal with it. A professor more or
less told me that the process to report it to the dean of students would take
months of his time, and that he already spent 55 hours a week for his classes.
He explained that the time it would take to go after the cheaters would
detract from time to make good assignments, labs, and lectures for the
students.

It's hard to see a professor for a large class (500 people) having the time to
deal with handling cheaters so the problem continues. I'm curious how common
this is as a problem at other schools.

~~~
wayn3
In germany, what you call cheating isnt even considered cheating.

On homework, we openly collaborated and handed in near duplicates without
trying to hide it. Some students would just copy the work of others. None of
this mattered. Nobody "went after" it. It just gets graded, you get your
points and you move on.

Most people accept the fact that grades don't matter, but you need them for
your resume. For some reason, universities have moved on from being
institutions of knowledge-production to being diploma mills, and grades are
their way of succumbing to societies need to make shit measurable. The way we
cope with this is to just hand out grades that are utterly meaningless, but
keep the system alive.

In the meantime, people carry on with their lives. Some people in university
want to learn things, some are just enrolled because its a cheap livestyle
choice.

In the end, nobody cares about grades. Whether I actually know my stuff is my
problem. Not my professors. No company hires you based on your grades, but a
lot of HR personnel will reject you based on them. So you need good grades.
But good grades alone wont get you shit. We live in this weird limbo of grades
being a necessity but beyond that, dont mean shit. They are the shittiest
heuristic known to man.

If grades were a scientific theory, those who came up with them would be
ostracized crackpots. Neither meaningful nor in any way falsifiable.

A written exam on quantum field theory can only test so many things. Since its
written, you have to ask for things that can be produced in a given timeframe.
That leaves you with memoizable calculations. Any professor will tell you that
such an exam will tell you nothing about whether the student actually
understands the subject matter. A 2 minute discussion of the topic in very
high level terms is probably more useful to assess actual aptitude.

Professors KNOW that they cant possibly measure the ability of individuals in
classes of more than 15 students. Why would they care about cheating? They are
part of a system that doesnt make sense just as much as everyone else.

~~~
Houshalter
Would you be alarmed if you found out your doctor had entirely cheated their
way through medical school and knew very little medicine?

Great, you figured out that grades aren't a perfect metric. But so what?
Grades don't prove a student is great, but they can eliminate a lot of
students that are bad. If the bad students just cheat their way through,
everyone else down the line suffers for it.

~~~
wayn3
\- if you actually read what i wrote, youd have figured out, on your own, that
i didnt say that you should cheat in order to learn less, but to leave grades
behind in favor of actually acquiring knowledge.

\- before a doctor is even allowed to practice medicine, he has to go through
5 years of education followed by 3 years of apprenticeship, followed by 5
years of specialization. by that time, hes logged thousands of hours of
supervised doctoring and he only "graduates" from that phase if all his
superiors write stellar reference letters from him.

i dont really care if hes cheated on his first year anatomy exam. not
particularly.

beyond that, doctors are held to a higher standard than other people for a
reason. medical mistakes are usually final. but grades are a very shitty way
of figuring out whether someone is compassionate, ethical and honest enough to
be good doctors.

\- modern society is engineered for efficiency. i consider it any persons
right to make the best of it, for themselves. whats best for an individual is
very often not the best for society as a whole. if you follow the script of
modern society, you end up miserable. im not a fan of that. ideally, nobody
would cheat those stupid exams, but i wont hold it against anyone. ideally, i
dont want 10 million indians immigrating to every first world country, either,
but i wont hold it against any one individual who tries.

(i dont have a problem with indians, its just that there are a lot of them,
and it feels kind of overwhelming at times)

~~~
ThomaszKrueger
Parent of a surgeon here. My son's medical school did away with grades
altogether - it's pass / fail. They still have to pass the board exams every
year.

------
sbov
A few anecdotes from college (15 years ago now) regarding cheating/"cheating":

I transferred from community college, where we used C++. The new school used
Java, but the C++ classes still counted as credit at the new school, so I was
in upper division classes. I asked a teacher about it, they said "theres no
way you can survive this class if you don't already know Java." I used one
weekend to learn Java, and saw it wasn't much different. However, throughout
the semester that teacher would continually say "I know there are cheaters in
this class because I know some of you don't even know Java." Uhuh.

My first actual cheating encounter was also that same semester, after I turned
in my first project for a class, a classmate asked to see how I did something.
Ignorant me sent them my project so they could. However, we had a final
project built on the first. After the class ended they admitted they never
finished the first, and used my first project as a base for their final
project. Lesson learned.

Someone offered me $200 to do a group project with them. Not really cheating,
but their intentions were obvious. No thanks.

Of course, plenty of dead weight on other group projects. But nothing as overt
as the above two incidents.

------
xor1
Anecdote time:

My friend is currently doing a Computer Science MS at a university that I'm
sure most people on HN have heard of. She got accepted with an unrelated
undergrad degree (though still STEM) and two Intro to Programming community
college courses she took after graduating (which she cheated her way through
by paying her roommate at the time to do all of her homework).

She hits me up for help with her homework/projects all the time. I'll help her
a bit and then tell her how to look up everything else she needs to know on
her own, but she always ends up falling back on another friend, who just
completes the assignments for her.

Homework + group projects count enough where she can bomb her tests and still
pass. She's about a year into programming coursework now, and still struggles
with just about anything outside of for loops and print statements. She is
extremely good at math, though, (tbh she's just really smart overall), so
those courses and the theory itself aren't giving her any trouble.

I initially told her that spending 3 years getting the MS would be a waste of
time for her, and she'd be better off learning on her own or maybe even doing
a bootcamp, but now I realize that she doesn't actually care about becoming
proficient or even competent when it comes to software development.

She's going to get her MS, and someone will undoubtedly hire her based on a CS
MS that she obtained through cheating, and a resume that goes past
embellishment and has outright lies. At worst she ends up at a defense
contractor that bills $200/hr (and pays her 1/3 of that) for her to just sit
around and read Reddit on her phone all day.

I really feel like a huge sucker sometimes for always having been completely
honest, both in terms of school and work. I've never cheated and I've never
lied or exaggerated about anything related to work, in regards to both job
applications and employment. When I think about it, it's cost me a lot.

~~~
skookumchuck
> it's cost me a lot

I've had jobs where I had to sit around and pretend to be busy. They're awful.
I much, much prefer to have challenging work to do.

> My friend

I don't care to have friends like that. Cheaters will eventually try to scam
their friends, too. Besides, cheaters are boring losers.

~~~
sevagh
>I've had jobs where I had to sit around and pretend to be busy. They're
awful. I much, much prefer to have challenging work to do.

Agreed with this. I haven't been more miserable in my career than when I was
just moldering in a corporate body shop.

------
sdiq
In this case, I believe, the prevalence of cheating among CS students isn't
higher than cheating among students of other courses in the same universities,
or elsewhere. Even in public health, occasionally, the prevalence of a certain
disease goes up courtesy of technological advancement. The prevalence of that
disease in a population that was initially low or unknown suddenly shoots up
because the means with which to detect the disease has now become widely
available, and not always because the incidence of that disease in that
population has only started going up. Now, if other courses offered at these
named universities had means of detecting students cheating in such courses,
the prevalence of cheating in these other courses would probably be as high as
in CS. Universities would thus need to either come up with systems that detect
cheaters that has both a high true positives rate and a low false negatives
rate, or, come up with a better way of assessing students that does not
involve exercises that can easily be "borrowed" from the Internet.

~~~
miranda_rights
This is exactly it, in my opinion. It's much easier to catch cheating by
running homework code through something like MOSS than relying on a human TA
to catch that 2 handwritten math assignments are exactly alike. I TAed both CS
and Math classes at a large state school and once caught ~20% of a 50 person
math class on a homework assignment because they had all copied a mis-labeled
problem from the solutions manual. It's probable that they had all been
cheating up to that point but I couldn't tell. It turns out, the Math
department as a policy doesn't try to do anything about cheating and just
encourages lecturers to base the majority of the final grade on exams. I can't
say this works much better because I've sat next to a student 2 separate times
during exams who obviously had their phone out and was reading from it. The
rate of cheating is probably lower in exams but lecturers should be more
proactive about it.

~~~
TheSmiddy
At my uni you had to have all electronic devices in your bag under your desk
and have all supporting materials displayed on your desk before the exam.
There were floor walkers who would go up and down the aisles constantly
throughout the exam looking for signs of cheating. If you were caught you were
expelled.

A neighbouring uni even gave students lockers and didn't permit bringing
anything into their exams.

Exam cheating seems like an incredibly easy problem to solve.

~~~
miranda_rights
We have similar rules for keeping your desk clear, electronics in your bag. I
think the difference is having people walking the floor, which isn't effective
if you only have 1 professor watching 50 people, in my opinion. It's also very
difficult to know exactly how effective those preventative measures are,
either in discouraging students from cheating or catching them when they do.
It's apparently still easy enough to keep your phone in your pocket and pull
it out onto your lap when you want to look something up. Honestly, I've always
assumed it'd be impossible to cheat during those exams but have been proven
wrong. In the most recent case, I and the person next to me were sitting in
assigned seats in the front row, ~3 feet from the professor. He still wasn't
caught, as far as I know. (I mentioned it to the professor near the end of the
exam but she didn't catch him in the act). Even if she had, she'd have to be
willing to go to the work of reporting him, attending the hearings, and doing
the paperwork which historically doesn't result in getting the student
expelled if it's the first time they've been caught.

Lockers seems like a good way to prevent it, although phones are still easily
hidden in a jacket pocket so you'd have to ban bulky clothing too.

------
mb_72
I didn't cheat once through a CS degree gained in the early 90's (as my
sometimes shabby, sometimes ok results would show), but I was made hard to
think about whether a certain incident was cheating or not. One of my final
year subjects involved a group project; we had to develop a PDA-type
collection of applications, so it fitted well with a group project. The
'calculator' guy never turned up to any programming sessions or meetings aside
from the initial one - someone else ended up hacking together his app in the
last day - and then 60 minutes prior to the submission deadline. Back then we
had to put together a paper project outline and notes, and there were strict
requirements for it's submission format; laid out like so, printed like so,
index like this, bound like that. If this paper submission was a minute late,
we'd be docked 50% (!) of our overall marks. Four of us were panicking, with <
1hr left to submit, our project unprinted and unbound, and us with no idea how
to operate the required machinery. The fifth member, our 'calculator' guy,
actually shows up, and then proceeded to, unassisted, blitz through the
printing, collation and binding of the project. We eventually submitted a
minute or two prior to cutoff, and got a good mark; without the 'calculator'
guy, who did no programming whatsoever, we would have been in big trouble.
I've always wondered if he went on to be the 'binder guy' or 'fixer' IRL after
graduating.

------
robotic
This reminds me of My last year at university. At our final senior project we
each had to give a group presentation. I remember this one group that showed
off this VB6 program (which was considered outdated language even then). They
didn't know how to run the program without opening visual studio and clicking
run. They didn't even have basic understanding of compilation/run phases. They
couldn't answer basic questions about the code. Obvious to everyone they
copied the code. Yet they still passed the class.

~~~
flukus
I've worked with a tonne of people in the industry like this, particularly in
MS land where something is "impossible" if Visual Studio can't do it. Often
you'll end up with a million projects for namespacing because they don't know
what a folder is.

It's only going to get worse as we have a generation of kids that have only
used tablets and don't know what an "exe" is, or even a file.

~~~
UK-AL
I find that multiple projects are heavily used in Visual studio, because a lot
tooling works better by splitting into projects instead. NCrunch is the
example here.

It's easier to enforce dependency rules. A domain model should not have any
dependencies on a specific technology, the easiest to way to enforce that is a
separate project, with no references.

------
tsm
I TAed every semester of college except my first, and went to a small liberal
arts school where cheating was legitimately uncommon. However, I'll never
forget the following exchange:

Student: Why did you give me a 9/10 on the sorting lab?

tsm: Your shell sort didn't work for n > 7

S: But Professor Smith looked over my shoulder during the lab and said it
looked fine.

tsm: And in fact it breaks for n > 7; I don't care if Alan Turing looked over
your shoulder and said it was fine, if it breaks it breaks.

S: _proceeds to pout at me for literally the rest of the semester, failing to
understand how the professor-anointed code could have problems in it_

~~~
ec109685
9/10 was a very generous grade for that.

I was saddened when I TA'd an operating systems class and not only caught two
groups cheating, but numerous groups with race conditions in their Nachos code
(you could fuzz the seed to change the system's execution order between
threads and students clearly didn't test that). The professor wasn't harsh
enough on either sets of groups, in my opinion.

------
Buge
I was an IA for a computer security class. We discovered a number of students
cheating by copying answers from a public github repo from the previous
semester. We noticed because many students were submitting the same bizarrely
wrong answer. Some students had even copied all the typos.

Even crazier, a number of the students had even forked the github repo with
their github accounts. That is some terrible opsec. Definitely losing points
for that.

~~~
bragh
I have noticed that these things matter only when someone has been burnt by it
once already. So before your class, nobody in their life had even bothered to
check for plagiarism.

Had to fail the projects of 1/3 of the class in a community college because of
plagiarism. Although to their credit, they at least put in some effort by
shifting sentences around and re-drew other students' diagrams. They did keep
the same node names and relationships between nodes, though.

------
strictnein
I "cheated" in one of my junior level CompSci classes. Forget what the name of
it was, but we ended up doing a fair amount with low level debugging/analysis,
assembly, etc.

One of the big multi-week projects had a series of increasingly difficult
questions about different aspects of a compiled program that you were supposed
to figure out. We were told we could use whatever tools we were comfortable
with using.

So I used a C decompiler and finished the entire thing in about 5 minutes.

~~~
rm_-rf_slash
That sounds like an inspired and competent solution to the problem. Given that
the article focused on pre-made work shared amongst students, this hardly
sounds like cheating at all.

~~~
strictnein
Agreed. In reality, I cheated myself more than anything else. I ended up
needing to teach myself some of those skills last year, 15+ years later.

------
Zenst
I started out in the very early 80's and first job was a Electrical company
government job. First week was an introduction to COBOL (which I already knew)
and second week was an introduction to GCOS (which I also already knew).

One of the challenges in the second week was to come up with as many ways of
copying a file using the GCOS8 (Honeywell Bull DPS8) shell. Now on GCOS the
current workfil was called _SRC, so one example was to use that, now one of
the other `students` came over and accused me of copying another chaps work, I
laughed and so did the chap in question who knew me very well. We thought
nothing of it. Later when it was show and tell this chap who had accused me of
copying somebody else 's work had a glaring error in his work. He had used
_MTW instead of *SRC. Now this chap was called Martin and had accused me of
copying from Steven, who's initials happened to be...SRC.

Sadly this Martin chap ended up getting the best position, turns out he had
schmoozed the head guy with BBC micro talk and as he had one, they had a good
chat about that and the whole aspect that he was not that good just got
overlooked.

Moral being, if your a good person and honest, you do get shafted on from time
to time.

------
askvictor
I teach at a (somewhat academic) high school, and we've noticed a massive
shift in how students think about copying in the past few years - about half
of our students think it's OK to share answers for an assessment where it will
assist another student (i.e. classical notion of cheating). I'm very curious
if this is a mind-shift in younger people that are just a lot happier to share
things, and this is just a consequence.

The other thing to consider with this is that the assessment system probably
needs to be overhauled entirely - which would be a good thing as there are
plenty of other reasons why it's broken.

~~~
stale2002
Here is one big reason why "cheating" happens. It isnt directly related to the
high school level, and more applicable to the college, though.

The problem is that different classes/subjects/majors have wildly different
expectations with regards to how much you are allowed to collaborate with
other students.

For example, in my business and economics classes I took, collaboration is
encouraged by the professors so much that everyone just works together on
everything, without even asking if it is cheating, because of course it isn't.

And people who take these classes then go on to take a class in a different
subject, where you are not in a situation where literally every single
assignment is a group project, and they forget to ask if what they are doing
is allowed.

------
userbinator
I taught computing for a short time, and some of what went on between
instructors and students was quite astonishing. In fact I'll go as far as
saying that some instructors were complicit in the cheating, either by tacitly
encouraging it or deliberately making the material easier or shorter/lowering
grading standards to keep "student approval", and grades, high. I didn't --- I
was pretty much the exact opposite --- but for every one who didn't, there was
probably at least 2-3 others who did (and perhaps not so surprisingly, those
were the student favourites.)

Then it's no wonder that, on the other side, we see things like
[https://blog.codinghorror.com/why-cant-programmers-
program/](https://blog.codinghorror.com/why-cant-programmers-program/)

------
mmartinson
It's interesting how at-odds the concept of plagiarism in a university
classroom is with the industry-lauded values of open source software and reuse
of well established implementations. As someone familiar with the university
system but who learned software engineering entirely outside of that context,
I can't help but think it seems a bit antithetical to a large component of the
skillset I's like to see in a new grad I was working beside.

------
jboogie77
This should be obvious to any person who tutors people online. If you check
out sites like [https://schoolsolver.com](https://schoolsolver.com) or
[https://chegg.com](https://chegg.com) they have become havens for programming
questions. One could make the argument that it's partly the teachers fault for
reusing old programming assignments. On the other hand, especially on
something like school solver, there are plenty of programmers, living in 3rd
world countries, willing to do original complex programming assignments for a
paltry amount of money.

~~~
rhodysurf
They were havens for traditional engineering questions when I was in college
too (Dynamics, Statics, Fluids, etc). Every homework question we had seemed to
be available online somewhere and it let to kids simply copying answers
instead of simply learning the same material they were copying. It got so bad
the whole MechEng dept at my school got rid of homework in favor of problem
sets that were solved in a given classroom, at a given time, with a TA
supervising.

I can only imagine it is much worse now.

~~~
colechristensen
My favorite class which I think I learned the best in, homework was given with
answers and partial solutions. It was still graded, but more for "did you do
stuff" and "this is what/where you did wrong".

It made homework not a test of how clever you were or how resourceful you were
... "collaborating" with your peers. It made it about solving problems with
instant feedback. Waiting two weeks between doing a problem is a lot less
helpful.

~~~
rhodysurf
I agree. Thats how all of my upper level classes were taught once everything
got a bit more specific and trustworthy.

------
not_a_cheater
I may or may not have cheated my way through classes.

If I was to cheat, I would use the following methods:

1\. Break up (or merge) functions

2\. Switch ordering of declaration of variables and the ordering of
methods/functions

3\. Change names of variables/functions

4\. Create useless variables to hold state (or condense/remove useless
variables).

5\. Switch ordering of math operations

As long as you take the time to understand the code you are copying, you won't
make an obvious mistake like that while(!true) fail in the article.

The general guideline is to use cheating as a shortcut to the answer, not as a
zero effort copy paste.

If I had hypothetically cheated using the above method on ~ 15 major code
projects, I wouldn't have gotten caught.

~~~
darioush
if you know enough coding to break up and merge functions, you can also write
fizzbuzz and therefore are not the type of person this article and comments
are picking on.

------
andy-wu
At my university, most of the profs that teach our entry level programming
courses use MOSS. One prof I had said that it's really good at detecting
plagiarism and he automatically refers any infractions to SJA.

I always work alone so I've never been caught, but looking at the grade
sheets, it seemed like almost 25% of the students were referred every
assignment. I can understand the desire to catch cheaters because as I've
progressed into my more advanced classes there's always a few students that
really shouldn't be there because they didn't learn anything in the prereq
classes.

------
b0rsuk
Most of these articles read: "They cheat because A, B, and C... it could be
because of D..."

I would love to read an article which is like: "I cheat because X..." "I cheat
because Y..." "We cheated because Z..."

In other words, an article or a study based on an anonymous survey. Straight
from the horse's mouth.

~~~
emidln
I helped people cheat because it paid better than working fast food. I never
took an exam, but I did a lot of assignments. I kinda felt bad for some of the
students who were taught Java for a couple semesters and then thrown into C
for an operating systems class. I also figured that they'd just fail the exam
if they didn't learn it eventually (which happened frequently, usually
resulting in more work/money for me next semester).

------
abronan
In my French University, group or individual assignments had a very low
coefficient compared to written exams (where it was almost impossible to cheat
as this was basically like white board coding and students would be spaced by
2/3 seats between them).

It was in the order of 20%(group/coding)/80%(written exam). This had the
effect of eliminating 50% of all students on the first semester for the first
year of CompSci (DistSys) Master's Degree. So even if a group cheated on
group/coding assignments, they most likely wouldn't go through the written
exam. We called it: "The Purge".

From then, very few instances of cheating (topics were changed every year).
One group got caught cheating on another one during the second year (iOS
objectiveC class) and they got a failing grade.

Almost every professor would use automated code checkers on group and
individual assignments. And if you get caught, you have to go through thorough
questioning by the professor, eventually getting a failing grade and having to
go through the second session of written exams (which was most of the time
harder than the first session).

What was unavoidable though were group projects with only one person working
on the project and the others doing nothing or just spending time preparing
for written exams. This happened to me quite a few times. I didn't mind as I
was learning a lot, but it got me exhausted for written exams where I was
getting good but not outstanding grades.

------
throwaway2n2222
Throwaway account, obviously.

I'll add to the corpus of a few commenters talking about cheating:

We're in bioengineering BS/MS/PhD levels, so the issues with cheating are
'serious', in that our designs are somewhat likely going to end up in a person
someday (depending on FDA approval, thank god for that). The cheating in our
department is staggering and totally ignored. I've brought up these issues
before to the department, per the large red warning about it in the student
handbook. Nothing has happened, at all. There was a wiki on all the old
homework that is re-used from year to year. The department did not care and
the admins of the wiki were not expelled, nothing happened to them, last I
heard it was still functioning. The tests and finals are re-used every year
and you would then be very stupid to not cheat, as the classes are curved.
Some classes have a large coding component in them and there are coding
'projects'. I remember a final project of the year (last of 3 total) was to
model a honey dollop spreading on an incline, runge-kutte methods and all
that. They never looked at the code, just the output graphs of it for the
report. I know this because I put an infinite while loop in the code to hang
the computer, as I was quite disgusted at the lack of effort in grading at the
time, and it wasn't mentioned at all in the committee meetings later. As some
test were open computer, it was quite easy to see that everyone was cheating
because all the screens were in the same wiki copying the answers there. Just
disgusting, really. But the department is benefiting from letting in all these
people in and then taking their money, so nothing happens. I know I will never
hire anyone out of here, as I know they are just garbage.

------
internalfx
Programming requires constant learning.

If you need someone to teach you, it will be hard to keep up.

If you can teach yourself, you don't need college.

I Never went to a university.

I have no degree.

I have the best career I can imagine.

~~~
daveFNbuck
I tried to learn to code on my own growing up and failed, eventually losing
interest. It wasn't until I had proper instruction in my intro-level college
course that I was able to learn the basics. I haven't had trouble keeping up
since then. I have three degrees. I have the best career I can imagine.

------
theprop
I wonder if the most effective cheaters in school end up being more or less
successful both as coders and professionally in general.

"Hacking" is in a sense related to cheating (finding easier solutions to
problems...).

------
throw2016
This happens in every profession. Some people are lazy, some are shirkers,
some thrive on politics, some cheat, some steal credit.

As history shows us looking for shortcuts is a perennial human issue that
affects a section of any population.

You are unlikely to be a doctor without going through an intensive educational
curriculum and exams over a period of time. You will probably have an idea of
what it entails, but laziness or other factors could motivate looking for
shortcuts. It would be the same for software or any other field but the level
of scrutiny and rigour would vary.

The education system, the interviews, and constant oversight by managers are
designed to weed out these issues. No individual employee escapes managerial
oversight in the real world so this is an organization problem that gets
solved at that level and should ideally not be a concern or worse an excuse
for a witch hunt by other employees.

------
HarryHirsch
What's with the obsession with student assessment over student learning? At
the end of the day the student has to perform, and there are plenty of
opportunities to build up a network of people that will assert you know your
stuff. Why is it that grades are still a thing at this level?

~~~
glangdale
The student can go a long way without "performing". They are ultimately given
a passing grade to show that they have learned things adequately. The cost
that we bear as a result of lax certification is that no-one will trust your
grades, and that you'll have to do endless whiteboard exercises at every
employer to independently verify what might have been otherwise inferred from
a single, rigorous qualification process.

It also creates a prestige problem for whatever university graduated some
nitwit who can't code from a CS degree. Over time, it will be harder for other
graduates from that university to find work.

I'm amazed by comments like this, frankly. It reminds me of how far computer
science is from being a genuine profession. Would anyone say stuff like this
about the contents of architecture or engineering courses?

~~~
twblalock
> It also creates a prestige problem for whatever university graduated some
> nitwit who can't code from a CS degree. Over time, it will be harder for
> other graduates from that university to find work.

Coincidentally, this is being discussed in another thread today:
[https://news.ycombinator.com/item?id=14440780](https://news.ycombinator.com/item?id=14440780)

Companies need to filter their applicants because some colleges don't do a
good job filtering their graduates.

------
josepi_
Student at UIC here:

Pretty much everyone in the lower level classes is cheating. Some of it's just
"driving five-over" and some is practically murder. I've heard Chinese
students talking throughout entire exams in big lecture halls, students
leaving lab and immediately finding their friends waiting outside for the next
lab section and dishing all the details of the day's lab, and students giving
away a little too much information when talking about their strategy for a
project.

~~~
qwer
I was a CS TA 20 years ago and it was the same. Literally everyone was doing
it to some degree.

Back then you would hand in printed source code. People would occasionally
photocopy someone else's, scratch the name off the title page and write in
their own name like I wouldn't notice something that stupid.

I actually caught some phd students in some cheating that was almost as
blatant.

The professors generally don't care either. The whole thing burned me out
pretty quickly. I realized the school was just full of a bunch of people going
through the motions, and CS degrees don't really indicate any particular
expertise on their own.

------
b0rsuk
What I don't understand is why anti-plagiarism software they mention seems to
compare test solutions in isolation. Only 2 out of 450 made this particular
mistake, but _where_ _did_ _they_ _sit_ _on_ _the_ _exam_ ? If they made the
same mistake and they sit within 5m of each other, that would be much stronger
accusation.

The bottom line: software should take into account not just how similar two
solutions are, but how far from each other both students were.

------
ilaksh
Is cheating also a problem at coding bootcamps?

------
technobabble
An additional anecdote from high school three years ago (take it with a grain
of salt)

There was a person in my CS class where we built a virtual computer using
Python. Almost weekly I saw her cheating, yet during her spare time she
devoted that saved time to a side project that won her an award and some
publicity.

Starting from then I've learned to focus less on the grade and more on actual
projects that are challenging enough that I have to learn.

------
c0rruptbytes
anyone who relies on cheating never seems to do well during the harder major
courses at my school (Texas). A lot of the professors have really rigorous
cheating detections, and will make you explain every line of code in person if
they suspect something. (At least in honor classes) Also, I don't know what
these people expect when they have to do a technical interview?

~~~
flukus
> Also, I don't know what these people expect when they have to do a technical
> interview?

They probably don't know they exist, they're fairly unique to our industry.
They probably expect interviews to be just like everywhere else, all smiles
and dressing well, with generic "when have you been challenged in life"
questions.

A lot of them will get hired by big corporates that don't do code tests too,
that's why even people with 10 years of experience have to do FizzBuzz.

~~~
kurtisc
Every form of engineering will have technical interviews.

I imagine a lot of them use their degree as a ticket to a non-technical job.

~~~
flukus
Technical interviews or tests? A lot of Devs can talk the talk and still not
handle FizzBuzz. Engineers have official tests to get their licence.

As for those in college, it's entirely possible they don't realise the testing
requirements either.

------
beckler
I had an incident like this when I was in University.

There was a guy in my ​class who struggled with a major project, and he asked
if I could help him with it. He wanted me to show him how to get started, but
he would never meet with me, and wanted to see my code. So I stripped out the
most critical part of my implementation, and shared it with him. After weeks
of silence he asks for help again, I ask him to send me what he had... And it
was the exact same code I had sent him weeks earlier with very little changes.
He had been asking everyone for their code and trying to copy and paste it
together. I ended up going to our professor about it... And he knew who I was
talking about before I finished explaining everything. It was not his first
time in the class, and he had done it before. He somehow graduated with a CS
degree even though it took him a few more years.

------
b0rsuk
What I don't _quite_ understand is why those people study _CS_ or _IT_ in the
first place (in my country there's no distinction in naming). I get that some
people are good at networking and office politics, and _might_ even be good
managers, let's give them the benefit of doubt. But are there, no doubt,
studies specifically aimed at educating IT managers ? IT industry is still
hot, surely there are some corresponding management courses to go with that ?

That way they wouldn't have to struggle with conceptually hard topics, and
employers would get a better idea of a person's skills. Why study IT if you
don't like wrestling with algorithms, installing software, configuration etc ?
Why pretend to be a techie ?

------
booleandilemma
This is how this happens: [https://blog.codinghorror.com/why-cant-programmers-
program/](https://blog.codinghorror.com/why-cant-programmers-program/)

------
ncke
> Though coding is a foreign language to most people, the principles of
> plagiarism are the same as with papers written in English.

English is a foreign language to most people too. You expect more from the
NYT.

------
dba7dba
I went to one of the better University of California campuses like 20 years
ago. And my friend majoring in CS told me a CS professor caught about a third
of his class cheating in their take-home programming assignments. This was in
a lower level CS class.

He ran an analysis through turned in assignments and discovered almost a third
had patterns that signaled it had been copied from someone else's work. This
is before github so the suspicion was that some were copying code from other
classmates.

We will always have cheaters.

------
conanbatt
> He also said that since students could use the regret clause, instructors
> felt more comfortable going to the honor council when students had passed up
> that chance.

This is very interesting: the clause that apparently gives a way out to the
student is never/seldom used, but it gives the teachers more confidence and
easiness to report their students. Its a measure that literally just makes it
harder on the students, even if it appears the opposite.

Economics is truly magic.

------
srdeveng
My engineering courses were filled with cheaters.

Fortunately, these become apparent in the workplace and filter out in the
first few years.

Any major with promise of wealth will have those who will resort to ill means
to get ahead in the system. Again, fortunately, many are weeded out in later
stages.

~~~
adamnemecek
You are assuming the system is perfect.

> Again, fortunately, many are weeded out in later stages.

Why do you care?

~~~
srdeveng
> You are assuming the system is perfect.

chose to use the word "many" to imply the current process is imperfect.

> Why do you care?

I'm a recipient of freshly graduating (and interning) engineers who got past
the hiring committee.

The project roadmap puts a burden on the other team members when one member is
underperforming and/or not forthcoming with their abilities.

------
adamnemecek
No one talks about the fact that current CS curricula are fundamentally
flawed. Too much time is spent in class, and on homework and one is left with
little time to do "real" work.

~~~
minimaxir
Define "real" work.

There's a lot on HN about the dichotomy between "boot camps are enough for a
software engineer job" and "you need to know computer science fundamentals to
be a software engineer," but both teeter on the No True Scotsman fallacy.

Granted, I do think that CS curricula should include actually implementing
things in production.

~~~
xor1
>Define "real" work.

Things that generate profit. In 2017, that mostly means CRUD backends and
mobile apps.

Before you get upset with my definition, don't take it up with me, take it up
with capitalism.

------
bdcravens
These days, at least half of the requests I see come through my CodeMentor
profile are blatantly obvious homework assignments.

------
KKKKkkkk1
Why do those students even need to cheat? Harvard has a 97% graduation rate
and Stanford 93%.

~~~
objclxt
I used to Head TA CS at Harvard (or "TF", to use their verbiage), so can
answer this: the graduation rate is very high, but honors are capped (mainly
because the honors rate was at one time out of control). Personally I never
really cared for honors, but for many people it can be extremely important.

Because honors are capped at a fixed percentage of the class relative to GPA
this means it's vital to maximize your grades, hence the cheating. No joke - I
used to get _many_ e-mails from students after grades were released begging
for us to bump them up.

~~~
nebabyte
Why not turn that to your advantage? Institute a policy wherein they are
bumped down if they send an email and their reason for doing so does not fall
within pregiven requirements (e.g. clerical error in recording a grade).

An excellent prof at the non-Ivy I went to did this, and it was quite
effective. Some small percent of your grade (significant enough to bump you if
needed) was guaranteed _unless_ you chose to try and create noise to get moved
up.

~~~
UK-AL
I think this creates a massive disincentive in order to ask why they didn't
get the mark they want. For fear of being marked as a complainer.

At the end of the day you are there provide guidance to get their skills and
knowledge to place they want to be. Not to simply filter wheat from chaff.

------
sumobob
I wonder what percentage of students ever take that regret clause

------
zootam
cheating at harvard?? impossible!

------
kutkloon7
"Troves of code online, on sites like GitHub, may have answers to the very
assignment the student is wrestling with, posted by someone who previously
took the course."

If the assignments are not changed from year to year, the institution is
partially to blame.

A good student, researcher or scientist is expected to do research. When you
stumble upon the solution (either by accident or intentional) to your problem,
it will become very hard to come up with a different solution. Your solution
is very likely to be viewed as plagiarism. Of course, the student should cite
the source of their inspiration, but since the instructor may reduce the grade
when he learns that the student looked at someone else's solution, this is a
devil's dilemma.

~~~
Eridrus
This is getting downvoted, but I once had an advanced-level course where the
the assignment was to write a peer review for a research paper. We were given
24 hours and allowed to use the internet, so I Googled the paper, found a
scathing blog my professor had written and deleted, looked it up on
archive.org and found myself with a dilemma about whether to cite it or not. I
decided it was better to cite it than risk getting caught, and it worked out
fine for me. In hindsight I shouldn't have put myself in that position, but
temptation is a cruel mistress.

------
parennoob
EDIT: My comment completely missed that there were 100 lines of identical code
noticed as well. Leaving below for context.

\-------

Does anyone else find the example cited in the article rather flimsy? Out of
450, two students incorrectly used the inverse of a Boolean for a conditional
– an error I have seen tens, if not hundreds of times.

Perhaps they used better ways of detecting cheating (some are covered later in
the article) for uncovering the collusion in this specific case. If not, this
“veteran computer science professor” is going on unnecessary witch hunts.

~~~
danso
The two students also shared "nearly 100 identical lines of code". The `!done`
was the icing on the cake.

~~~
parennoob
Good point! I missed that and focused on the emphasized Boolean test, which is
the first time I have seen any code in the NYTimes.

~~~
danso
Trivia point: One of the co-authors of the piece, Jeremy Merrill, is a
programmer-journalist at the Times (and previously at ProPublica); I imagine
he helped with the code:

[https://www.propublica.org/nerds/item/upton-a-web-
scraping-f...](https://www.propublica.org/nerds/item/upton-a-web-scraping-
framework)

[http://jeremybmerrill.com/blog/2016/01/flyover.html](http://jeremybmerrill.com/blog/2016/01/flyover.html)

[http://jeremybmerrill.com/clips/2013/05/updating-dollars-
for...](http://jeremybmerrill.com/clips/2013/05/updating-dollars-for-docs/)

------
ender89
... The kicker to me is that as a developer if I am having trouble doing
something, I ask the internet to see if someone else has already solved it. If
I find the solution on stack exchange, I'm not going to rework the solution
just so I can claim that I did the work. I'm probably not going to change a
thing other than tweaking things to fit whatever the rest of my code looks
like. I will re-write anything I find on something like stack exchange because
it helps you remember what you did and you think about how what you're typing
out works, but its essentially copied and pasted from someone else's work. I
don't know if this counts as "cheating" or something in the classroom - though
I certainly wouldn't have an entire application with reworked answers from
stack exchange - but its a skill worth teaching to cs students. Heck, people
sell books with code snippets intended to ease development for pete's sake, I
can't see why using a java cookbook should be penalized in the classroom.

------
austincheney
As a JavaScript developer none of this matters to me. Here is the reality I
see:

JavaScript skills are in demand almost everywhere even if it is not the
primary language or skill of a given job. Almost nobody receives any kind of
formal education or training in how to write in JavaScript. If you work for a
web based company you WILL at some point be tasked to write in JavaScript.

When developers, who have never touched JavaScript before, are tasked to write
JavaScript one of a couple things happen. First, they will attempt to write
Java (C# or whatever) in this language because the syntax roughly looks the
same. Secondly, they will grab the easiest framework they can find and hope to
fill in the blanks.

Essentially, at the end of the day, almost nobody knows what they are doing.
In this line of work most people are utterly afraid to write code. We would be
in much better shape if our biggest problems were developers or students
cheating.

Some food for though:
[https://www.reddit.com/r/programming/comments/66hpqs/less_th...](https://www.reddit.com/r/programming/comments/66hpqs/less_than_5_of_indian_engineering_students_are/dgioklc/)

~~~
oregondan
What??

This seems like a road that only leads to technical debt brought on by people
who, as you say, know nothing about the code they're working on. Why would you
feel that's acceptable to a company?

Fortunately software development (often) has little direct impact on matters
of life or death, but can you imagine an architect or construction worker who
successfully cheated their way through school being brought on and having zero
idea of how to weld, or how to predict the weak points in a structure?

Also, I'd argue that using frameworks is different than 'not writing code,'
though I do agree that the JS community has become framework-obsessed...

~~~
austincheney
> This seems like a road that only leads to technical debt brought on by
> people who

This technology is littered by technical debt by people doing everything they
can to cheat. We are already there. That line in the sand was crossed years
ago.

------
nathan_f77
I understand that it's plagiarism when you're supposed to be learning and
writing your own code, but perhaps this is the wrong way to teach programming.

It shouldn't be such a big deal if you find an open source library or code
snippet on StackOverflow that solves your homework assignment. Maybe the
problem lies with the assignments. They could be rotated, rewritten each year,
or even randomized for every student, so that you really have to understand
the code you're writing (or copying). If you find some code that solves 90% of
your problem, and you know how to tweak it to solve the remaining 10%, then
that's a far more valuable and practical skill than writing everything from
scratch. It's also a great way to learn from other programmers and see what
they are doing.

I'm probably completely off-base, since I'm a self-taught developer, so my
learning style is very different. But I spend the vast majority of my time
reading other people's code, studying documentation, and using open source
libraries. "Plagiarism" is a very, very important part of this industry.

It would be interesting to work on randomized coding assignment generators.
I've worked on similar things in the past, where my company used it as a
filter for software engineering applications. I wonder if any universities
would be interested in that. It would completely solve the plagiarism problem,
because every student would have to write unique code to solve the problem
they were given.

------
keerthiko
What they call "cheating" is how I do my job as a developer of a 3-person
(dev) software company. We make software. People like it and use it. We make
money.

Who cares whether the code came from our head or from something publicly
available on the internet, or from someone willing to help us? As long as it
wasn't an actual violation of the law. There's no good reason to create a
_separate_ set of laws for the classroom than the real world.

Can we just accept that this is how software is meant to be developed? Beyond
the very intro level, the real assignments and challenges given to students
should be about how to utilize, extend, integrate and optimize easily
available existing code, not how to reinvent (regurgitate, rather) the wheel.
This tests and improves understanding just as well as, if not better than
making them implement from scratch. Evaluate the student's understanding and
the quality of his output, not how independently they wrote the code.

~~~
chrisper
>As long as it wasn't an actual violation of the law

But it is a violation of Academic Integrity, which is sort of a law you agreed
to when signing up for a class. At least at my school it was like that.

~~~
stale2002
He is saying that we should get rid of the law of Academic Integrity, and make
classes more like the real world.

It is an interesting idea, the problem being that in the real world, while you
can kinda look up the answer, it is rare to find someone who is doing the
exact same thing as what you need to do, for thousands of lines of code.

Maybe college would better simulate the real world if you gave students
personalized, large problems, that nobody has ever done before(instead of
small, toy problems)?

~~~
kurtisc
I would have liked a coursework where we had to work on a module, document it,
then swap it with another student to do the second half.

