Get a peer-to-peer source control such as GIT or Mercurial. Our team uses Mercurial. We partitioned the code into subsystems. Assign each subsystem to different programmers. Each subsystem is in a separate file so to minimize the need of other programmers having to touch your file. There are some common files that contains common definitions and constants. It should not be too frequent for students to change them once they are in place. If there is a need to do so, the student will announce it ahead of time to avoid conflicting changes to common files. Even if it happens, you should be able to merge without too much problem. The benefit of peer-to-peer source control is that you can push the code to a USB flash drive and pass it around for other students to pull (synchronize) the code from it. We also have a server that is one of the peer sync targets. The server, in addition to being a sync target, provides a web interface allowing you to inspect the change history and the differences between different versions.
For example, here is a link to our server.
http://proj.titanrobotics.net/hg/Frc/2013/code/