One of the more exciting things I’ve learned as a programmer is being able to grasp CVS as a tool to maintain projects. Sure, CVS has its disadvantages: it’s clunky, it can be insecure. It can be ununderstandable particularly when you have to start merging code. But there goes nothing above having an overview what has actually changed over time. And at the press of a ‘button’ (that is when using a ‘CVS GUI’) you can revert changes or even work on multiple versions of your program side by side.
(And with a web interface, it’s actually cool to see how a program has changed or ‘evolved’ over time).