>>13150148>Back in the day Dijkstra said that a person needs to study mathematics for 5 years before they ever sit in front of a computer for the first time when learning computer science. A bit extreme but I agree with the sentiment. What we really need to do is use the computer to help them test and understand algorithms and systems first and foremost. I think Dijkstra was complaining since now compilers are smarter than you, language features are extensive, implementations are optimal, and hardware is so fast, it's easy to half ass what is supposed to be an incredibly instructive assignment. I'd fix this in a few ways.
0) get your students familiar with command line and linux (not CS but basic hygiene and simplifies things)
1) pick a language that is minimal. Stick with this language for about a decade for teaching until considering moving onto another one.
1.5) give an explicit list of allowed import statements and state that any extra imports will result in a max grade of 5/100 on the assignment
2) build an emulation layer that runs student code on a single core, downclocked massively.
2.5) make sure they pass in source code to the emulator so you can enforce the optimization levels on the compilation
3) have this emulator hosted on a school server box
I like autograders in principle, but you also want to teach people how to write their own test cases (ie think critically about how what they made can break). I think, especially in early CS, if you treat the machine like it's slow as shit and only smart enough to run instructions naively, you end up being able to teach your students how to think. The computer is a valuable teaching tool in CS, but it shouldn't be allowed to make up for its students failings