Brett Morgan continues the discussion of OSS as a learning tool.
One of the problem's I see with fresh out of uni coders is that the biggest project they have worked on is usually say 2 months coding (in a team of say 3 coders), so they have no real understanding of what working on 10k loc project is like. They have no idea of the real need for code documentation (because it was small enough to fit in their heads), they have no idea of the need for refactoring (we hand it in, and then we never see it again), and a total lack of ability to communicate.
So, here is a thought. Take a class of third year CS students. Bring up a CVS server and slave it to some large project. Force the students to then work at understanding the code base. Then get them to work out small projects to make changes to the tree. Make sure to update the tree nightly from the main CVS server to keep the students on their toes.
I definitely agree that CS programs don't give students as much exposure to real team development as it could. Whether it's an existing OSS project, or simply a large class project, something like this could be very cool.
The project for the Operating Systems course I took was developing an OS that ran on a MIPS simulator. We worked in teams of 2 or 3, and every few weeks we had a new piece of the system to write; process scheduler, virtual memory manager, file system, etc. Very cool. I'm not sure whether you could have an entire class work on the whole thing, a big part of the value of the course was building up each component from scratch.
But what could be very educational would be to force teams to swap code after each module. So after you finished the file system, you have to use a different team's file system code to write your virtual memory management component. Students would learn very quickly to like comments and good code design.