The source code files that you write for your programming projects create many issues for all (i.e., students, instructors, graders, coordinators) involved. The basic requirements for the student include ways to:
Additional requirements for the student include:
There are also requirements for the instructor including:
Although a specialized student-program-handling-grading system could be constructed (as I have in the past), all of these features can be provided by proper configuration of a version control system.
The requirements explained above are a subset of those provided by a version control system. A version control system allows developers to maintain, share, and easily use multiple versions of a file. All software projects done in a professional manner use a version control system.
A version control system has a repository where copies of the files are kept. The repository is typically on a remote machine that can be used as a server. The programmer keeps a working copy of the source code files. The programmer then periodically sends any changes from the working copy to the repository.
A popular version control system is CVS (Concurrent Versioning System) used by most open source projects. CVS is reliable and well-established. However, it does lack some needed features, e.g., CVS doesn't understand renaming a file. Also is not easy to setup for more complex applications, e.g., storing student programs.
A more recent versioning system, Subversion, is a replacement for CVS that attempts to fix some of its problems. We will be using Subversion in this course, however many of the concepts and commands are very similar between the two.