Merits of teaching VCS as enrichment Senior students in the computer science major at my school work on a project which is supposed to be relatively big (i.e. just a graphic calculator isn't enough). 

I was wondering (for next year; it's too late for this year) what might be gained if we teach the students about Version Control (probably git).

Naturally, this makes the project easier to track and has all the advantages that vcs offers. But given that these students aren't taught about correct\good design concepts and such, if we do attempt to teach about vcs, some students might be confused.

So, what advantages might teaching vcs to these students (so that they use it to organize their projects) have?

An option is to make the lesson optional (i.e. enrichment).
The advantages of using VCS from a content-creation point of view are already written about in depth, so I'm providing only arguments for why this is advantageous to you - regardless of how well they utilise it for their own workflow.

Lost work

If all students are committing their work to a repository you have access to, you will never need to worry about somebody losing their USB and with it - their entire coursework. If the work is stored in the repository, you always have something that can be salvaged for a hand-in, even at the last minute.

Reduced Plagiarism

When marking a single hand-in, you potentially have no history to work from. You are seeing the cleaned up, finished product and hoping that they came to those conclusions themselves. If on the other hand you have their work, as they make it, you can more easily identify "odd" commits where the quality of code has changed dramatically - it is much harder for a student to plagiarise, and much less likely that they will try.

Reduced Last Minute Sprints

As with the reduction in plagiarism, by having continuous check-ins of their work - you are encouraging them to work on their code throughout the term. Avoiding a last-minute sprint to get the hand-in ready is ideal, and not only will this help encourage them not to do that, it gives you a tool to check they are not getting into that situation before it's too late.

Debugging

When a student approaches you with "code that doesn't work", it can be hard to identify exactly what the cause is. Even if the problem that needs solved is clear - it can be hard to see how they got themselves into that mess. With VCS you now have a tool to check back, ask for their last working commit, and see what they changed/ask them why. It may be clearer why some bad choices were made based on what they already had.



As an aside: using VCS such as git does not mean the students need to know the VCS inside out. A simple cheat-sheet of how to commit, branch and pull is all they really need; anything else can be done with your individual help when needed. Teaching proper use of a VCS is not necessarily required to get a lot of its initial benefits.