At my university the focus is moved to tests and exams. In larger courses homework has usually no or very little significance, while in smaller classes very few attempt copying (it is too easy to spot).
On the other hand, programming homework is handled via plagiarism software (we have our own, its internals being kept secret; the output is reviewed manually), this is a routine procedure, as homework is usually tested automatically, and it is a standard step in various national-level contests that our university handles.
Now, to answer your question, how to handle copying when it happens?
I know of three ways:
- By a formal process. The statute of our university says it's forbidden to do so (I suspect this is not unique), and such a student could be expelled. In practice, as far as I can remember, it had never happened. I heard that there had been such attempt, however, the student council had caused enough trouble that it all had come to nothing. This might have something to do with the fact, that the STEM-campus and the humanities don't like each other very much and the student council is in majority from the latter.
- Fail the course. Some insist that such students shouldn't be allowed to attend the make-up session exam, but this would result in a bureaucratic mess. Instead, by plagiarism the student achieves an equivalent of $-\infty$ points and it all fits into professor's "freedom of grading".
- By some agreement. This might be not the most fair, but during their first semester, it might be the most appropriate. Students come from various neighborhoods, their high-school had different policies and are frequently immature. A good talking-to has more positive effects than punishment, which you could still apply later if he/she hasn't learned from the mistakes. Fortunately, at my university copying is rare enough that we can afford such a lenient treatment (and you don't even need to keep track, because people remember).
I hope this helps $\ddot\smile$