My message regarding questions like this has always been that it depends on the course
. A course in algebraic topology probably will be graded very differently from a course in multivariable calculus, unless the latter is a sophisticated, theoretical introduction that is more like a calculus on manifolds course. If the course is just a service course to a massive population, then it will probably be basic enough that a few timed tests with basic checks of the key concepts will be enough to assess understanding, and to a degree just getting a grasp on the sample problems should allow good students to do well.
On the other hand, with more advanced material which is primarily designed to familiarize a student with theory, lots of homework assignments plus a take-home exam seems to work extremely well. Yes, students may collaborate to an extent, but my observation has been that when the load of work is sufficient in volume and sophistication, it no longer becomes easy to just fudge it. It takes a lot
of work to really write up problems fully in clarity, and I think people get held to much better standards when they have time to write things up at home. In a challenging enough class, the less hardcore students give up...many solutions to problems will be subtle, and not things which someone with a lesser understanding can just easily copy.
Again, invariably it will be best to allow for collaboration on the work. This leads to good discussions between students and professors on the work. All this only works in a relatively smaller course