And this, I think, is why good programs tend to have a known "weed-out" course. If there's at least one course with a focus on independent, code-centered assignments, you can't fake your way through. That forces some students out, and others to shape up and actually put in the effort they might have coasted by without. Programming and hard pseudo-code tasks on exams can play a similar role.
Teaching group work for programming is great. Among other things, it gets lots of side benefits like promoting source control practice and distribution of code tasks. There just needs to be something that consists of "sit down alone and code".
> If there's at least one course with a focus on independent, code-centered assignments, you can't fake your way through.
Unfortunately this seems to be increasingly foiled by an active market in solutions. I've even seen people hire freelancers online to do their programming assignments for them.
Teaching group work for programming is great. Among other things, it gets lots of side benefits like promoting source control practice and distribution of code tasks. There just needs to be something that consists of "sit down alone and code".