Take the 2-minute tour ×  I teach the third required intro
course in a CS department. One of my homework assignments asks
students to speed up code they have written for a previous
assignment. Factor-of-ten speedups are routine; factors of 100
or 1000 are not unheard of. (For a factor of 1000 speedup you
have to have made rookie mistakes with malloc().)  Programs are
improved by a sequence is small changes. I ask students to
record and describe each change and the resulting improvement.
While you're improving a program it is also possible to break
it. Wouldn't it be nice to back out?  You can see where I'm
going with this: my students would benefit enormously from
version control. But there are some caveats:    • Our computing
environment is locked down. Anything that depends on a central
repository is suspect.   • Our students are incredibly
overloaded. Not just classes but jobs, sports, music, you name
it. For them to use a new tool it has to be incredibly easy and
have obvious benefits.   • Our students d