> Well, maybe we should start by rolling back this common conception that when it comes to schools, everyone’s opinion matters an equal amount

I have some thoughts about the education system, and despite not being a teacher or academic I like to believe that my opinions have some value because I'm an expert programmer that has worked in the field for over 50 years. I attended three different major universities and have degrees in Math, EE, and CS. I still code almost every day (my Emacs configuration is never finished!), and I have in the past taught or been a teaching assistant for both undergrad and graduate courses for four semesters. Cheating has always been a concern, but now things are different.

The original article highlights the scale of exam cheating during the pandemic, but for us, the readers of HN, there is another problem with university learning that happens because of the internet. I've seen this affect virtually all of my younger friends pursuing degrees in CS. Programming assignments in school are unrealistically difficult, and it causes everyone to cheat.

Here's a typical real-life example: after covering doubly linked lists in the undergrad data-structure's class the programming assignment is to write a GUI based text editor in Java using doubly linked lists. This isn't especially hard for a professional programmer, but this is the first programming assignment of the course. Students had to wrestle with Eclipse, learning the AWT/Swing interfaces, event loop programming, and how to translate low level pointer based data structures into non-idiomatic Java based imitations of linked lists that kind of simulated using pointers. Most of the students really couldn't do this on their own, but they didn't have to because they can find the solutions to this very problem right on the internet.

Why would professors give such a program to beginning programmers to write? Because every student turns in a solution, and this causes the professors to lose touch with how difficult their assignments are. Over and over again difficult assignments are given, but the students are seemingly keeping up. The bomb lab assignment is a great assignment for CS students[1], but I've seen it given out with far too few attempts allowed to solve it. Again professors feel like a small number of attempts is all the students should need, they keep turning in the answers. The reason they can is that the complete solution is available on dozens of public Github repos and web sites.

The consequence of such hard and challenging programming assignments is a kind of inflation of the difficulty. The high difficulty causes students to cheat more, since their fellow students are cheating by downloading, cutting and pasting, or simply sharing their programs. There are commercial web-sites like chegg.com that sell the solutions to virtually every homework problem found in CS textbooks. Why should an undergrad spend so much time working on their own homework solutions while other students work openly in big teams at table in the university library?

This kind of cheating is pervasive at the undergrad level. How do we prevent our students to being pushed into cheating to keep up? Graduate school is different, the classes are smaller and more interactive. In my grad school classes I've often had to go to the board to demonstrate my code or proof to the class. Professor Dijkstra used to give individual oral exams to his students. So small interactive classes would help.

I've also seen assembly language programming classes given that require all work to be done on lab computers. The lab computers weren't on the internet and students had to sign in with the lab proctor to use the machines for their assignments. This at least helped some with the problem.

If I was teaching a programming class now, I would require everyone to maintain a git repo that could be checked for realistic commits of the programs as they are written. This might discourage the simple copying of a solution from GitHub the day before the assignment was due.

[1] The text for the bomb-lab assignment (highly recommended by the way):
Computer Systems: A Programmer’s Perspective, 3rd edition,Bryant and O’Hallaron, Prentice-Hall, 2016 (ISBN: 0-13-409266- X), a google search will return many bomb-lab assignments and solutions from colleges all over the world.