My teaching experience is limited, but for teaching compsci I've had good results with programmatically graded assignments, where the students get unlimited submissions but also machine-enforced deadlines. (I liked this when I was a student, and I've liked structuring my own class this way too.) One of the big benefits is that you can be maximally clear about what the problem set is asking the students to do, because…
As a student I’ve taken computer science classes with and without some kind of autograder. I’ll say that depending on how it’s set up it can be complete nightmare fuel. In one class I recall that 3/4 of my time was formatting comments correctly to not trip the chest detection that came from not “properly attributing” the code I wrote. Also the assignments were written to the autograder. So instead of saying “write a…
> write a method named NAME that takes in XYZ parameters and outputs exactly in QRS format
Yeah I hate that too. Personally I went with "your program should read JSON from stdin and write JSON to stdout". For students who had never seen JSON before, that was definitely some extra friction. But the upside is that it's something they're going to see a lot of in the real world.