I was a TA in a prominent CS university. We used software that would compare everyone’s submissions to see if things were copied. The penalty for getting caught was high, and we made it clear to everyone that this software was, while not perfect, capable of detecting simple tricks (like copying code and renaming variables).
Nonetheless, after every project, I would go and have to manually review all the cases. There would be 10-20 severe cases, about 30 moderate cases, and then about 50 cases where some things might look suspicious but there wasn’t enough proof to act.
Overall, we would penalize about 20-50 people per project (granted this is a class size of over 1000). But still, 2-5% would still cheat despite our repeated warnings that we could catch them.
I shudder to think what would happen if we had no way to detect.
While TAing there, I was also a student. Cheating was pretty much the norm. I was always a cynic after those experiences.
Seems to me the problem is how the assignments are posed – If the goal is to create a program that does X, and I can do that by copy/pasting or tweaking something from StackOverflow, have I not completed the goal? But if what you actually want is for me to understand all of the principles behind a program that does X, well that's a very different thing. And the assignment should be set up differently.
It feels like Proctorio and similar solutions are treating a symptom of the real problem, which is that the way a lot of higher learning is administered is inherently flawed. And until we fix that, won't cheating and cheating detection be the same Coast-Guard-vs-smugglers arms race it's always been?
One part of one my math exams in a previous university was (I feel like) modeled around this idea, where you were allowed to use a non-programmable (graphical) calculator and to bring basically any written material in to help yourself solve that part of the exam. Of course there were some restrictions: none of the solutions to the various homework assignments etc. That part alone for the ~2 hours of the whole exam would've been nice if there hadn't been the other half: no calculator, no helping materials apart from those maybe provided on the exam sheet. This part (of course) was the one containing the questions about specific definitions, one or more things to write a proof on and calculating things like double and/or triple integrals, deriving complicated expressions.
In other courses (Databases 1 and 2, Web Dev) at my 2nd/current uni with some specific professors there was a clause that you could bring with you help in the form of: "DIN A4 sheet paper, hand-writing on one side, non-copied" and the professor or the TA if one was present would pass through the rows during the exam to check the student ID, have the student sign a presence sheet and whether the help sheet was compliant (also if maybe there were some answers to the exam), signed that help sheet and would collect that together with the exam upon completion/timeout.
Although our course was only ~80-90 people at the start of my first and ~30 at the start of my current uni, so we had to be thrown together with some other disciplines/outlines ("Studiengänge" in Germany) for exams of the same courses to have an exam that made sense for everyone.
I generally find it silly to teach things that you can adequately grasp from Google in 10 minutes. That's not to imply that anything can be learned from Google in 10 minutes, but I find it dumb to spend time on that in a college. Learning how to implement on optimized bubble sort? That's kind of dumb; in the real world you just use an existing one. It's almost certainly faster than what you would have come up with. Learning recursion? Yeah, that probably deserves to be taught because some people really struggle with it.
I agree 100%. I also don't see the value in forcing people to memorize googleable facts. It's frustrating to see schools implement curricula like that. However, I disagree with your implication here. You're implying that because schools make you learn stupid things, everybody should just cheat. What's the point of that, exactly? You think the curricula is not optimized well, so you would rather reduce the entire institution to a diploma mill, instead of simply learning with the unoptimized programme?
> Isn't the purpose of school to train you to where you can do X for a company?
That may be true for a vocational school, but for a computer science programme at a university, it is not true at all. If you look up the stated purpose of computer science programmes, they are about educating people for the sake of knowledge itself, not to achieve an ulterior purpose like producing a useful workforce.
> Learning how to implement on optimized bubble sort? That's kind of dumb; in the real world you just use an existing one.
If you memorize a bubble sort algorithm without understanding, just to be able to repeat it back verbatim in the exam, I agree that's dumb (and it's also dumb on the school's part to create a programme that incentivizes such behavior). However, that's not the only way to learn bubble sort. You can also approach it from an "algorithm design" perspective, and strive to develop the skills needed to design and work with algorithms. That's not dumb at all. In fact, I would argue that's one of the core skills that a computer science education should provide.
> in the real world you just use an existing one.
No, you wouldn't. You would never use a bubble sort in the real world, because it has O(n^2) time complexity and it has no redeeming qualities when compared to other algorithms.
So let me get this straight: if someone at work asks you to "implement sorting for these results", you might just google "bubble sort java", copypaste code, test that it works, and ship it? And you don't think there's any value in learning what properties these algorithms have or how they work? Don't care, don't wanna learn, cheat through school, end up using bubble sort in production. Great. That's exactly the type of attitude that causes 5 minute startup load times in GTA.
There is research that the certainty of getting caught is the strongest deterrent (as opposed to the severity of the consequences if someone gets caught) and yet, assuming the software was as good as you suggest and assuming the students were adequately and repeatedly warned, 2-5% of the class still chose to cheat. Which begs the question: why would so many (presumably logical and rational) students take such a risk despite knowing they were substantially likely to be caught?
I have to imagine those students, for whatever reason, felt cheating was their best (or perhaps only) option.
The cynic in me believes we’ve created a system that strongly incentivizes getting an expensive piece of paper with a value completely divorced from what it was intended to represent: having studied.
Or they do get a job and are able to keep it down, in which case, so what if they cheated? They're clearly capable. Let them keep doing the job.
My solution: get rid of degrees completely. Can't cheat if there's no test to cheat on.
The problem is, hiring is expensive, hiring mistakes are expensive, and new grads are a combination of “lack of signals” and “need lots of time to pan out”. The result is companies look for any possible signal - this more or less becomes a degree, and within the degree, the GPA. Thus incentivizing the student to get the degree with a high GPA by any means necessary, and companies will still give you a year to ramp up.
Isn't effectively the entire problem with university/college in the current age that instead of its original purpose it's treated as a hiring filter for companies. Shouldn't we do anything we can to disincentivize use of college degrees as a signal for hiring?
Like, doing the job of software development a degree is completely irrelevant. Computer science degrees shouldn't be 4(?) year long coding bootcamps, they should be about computer science for people who are interested in computer science. (disclaimer I never did a computer science degree, I did chemistry but I felt the quality of the degree was similarly afflicted). Anything we can do to make college as a hiring signal worse for companies is better for the quality of education, better for people's financial health and better for equality.
The entire system is rotten and we need to bring the edifice crashing down, not make life easier for companies who are about the only entities with money. You know what costs a lot more than hiring relative to the entity's financial means? A student loan [citation needed I guess].
Restructuring is a good idea but you don't want to throw the baby out with the bathwater in the meantime.