At UIUC, we have a class called "Programming Studio." Each week there's a different assignment, and every three weeks or so the class switches languages. In addition to making our chops better, a focus of the class is communication.
At the beginning of the semester, we were split into discussion sections of 6 students each and a moderator (grad student or a past student who was very good). Now, once a week, we have 2 hour sections where we look at each persons code and are graded on conventions, design decisions, and, perhaps most importantly, the ability to critique our own and others' code.
I guess I kind of took for granted the usefulness of this experience. Perhaps I'll try to look forward to it a little more each week ;)