If you give cheaters too many chances, the other students will feel betrayed. And I guess rightly so.
It’s not uncommon to get mails directly, or later in course evaluation, from students who complain about other students that didn’t put in the work. I can only remember few cases where there were names involved. Typically it’s some general complaint, but the frustration is obvious.
It sucks when you make an effort but witness other students cheating their way through the class. What are we supposed to tell them when the dishonest behaviour of other students doesn’t cause any consequences?
You tell them that they have learned the important life lesson:
In most situations, results matter more than the means by which you got them.
The result of a CS degree is supposed to be someone who knows how to program. This prof got what he wanted.
The result of any degree is someone who can get a degree. Everything else is a potential bonus, not a guarantee at all.
In the real world the faculty would step in to prevent losing so many students at once (tuition is lucrative), and the students would learn a couple life lessons: cheat but don’t get caught, and if you do then might makes right.
Getting a degree without cheating is an impressive feat and teaches valuable skills. Unfortunately the underperforming cheating frat bro at the back of the auditorium will use his connections to land a C-level job making about 10x as much as his former classmates.