Why don't more universities teach revision control?



In the answers to this question, it's suggested that one of the most common things that CS graduates still need to learn to be employable developers is revision control, and by inference that many CS graduates don't learn how to use it while at university.

This surprised me, because on my CS* course we started using revision control (git) on literally the first day of the course, and a lot of the work we did during our degrees would have been much more difficult without it.

Taking this claim at face value, if knowledge of revision control is both a) useful during the degree and b) desirable afterwards, why don't more universities teach students to use it?

I understand that this could be seen as primarily opinion based so, if possible, I'd be particularly interested to see actual reasons given by the institutions themselves or people who teach CS (particularly software engineering) courses.

*I should clarify that my course was in actuality a Computing degree (BEng) and so contained more practical components than others may do.


Posted 2017-09-11T14:21:57.263

Reputation: 308

Comments are not for extended discussion; this conversation has been moved to chat.

– thesecretmaster – 2017-09-13T11:15:25.213

4Do you mean version control? – ErikE – 2017-09-13T23:56:31.933


@ErikE: One of those terms not worth being nitpicky about ;) https://stackoverflow.com/questions/1056912/source-control-vs-revision-control

– Sebastian Mach – 2017-09-14T08:53:40.230

2For the same reason that mechanical engineers never have to pick up a screwdriver. – J... – 2017-09-14T10:13:06.317

2Why Excel isn't thought in CS? – Calculator Science – 2017-09-14T11:46:37.490

2Extreme example: using a computer and/or typing with more than two fingers is also desirable for employment and useful during the degree. Why is it not taught in a CS curriculum (or a Philosophy curriculum, as I expect philosophy students to type long essays as well)? – Tobia Tesan – 2017-09-14T12:19:18.143

1@CalculatorScience Because there are more intuitive functional languages available. – JAB – 2017-09-14T13:44:54.240

1@TobiaTesan Probably because it's assumed those skills will have been developed earlier in general education. I had classes in middle school about how to type properly (though I'd already developed touch typing skills by that point from personal use). I don't think most grade schools teach how to use version control (yet). – JAB – 2017-09-14T13:46:18.577

@TobiaTesan that strikes me as a bit of a straw man, really. – walrus – 2017-09-14T13:51:58.040

1@JAB I have never heard of typing classes in high school where I come from, but you can replace that with any practical skill of your choice that happens to be relevant in day-to-day university and work life and is not taught in general education. My point is that at the end of the day, there is a plethora of practical skills and mechanical tools you end up learning how to use on your own. Besides it being impractical to set aside more than an epsilon of class time for Word 101, Google 101, Emacs 101, etc... I am not sure that teaching the use of standard tools is University's main job. – Tobia Tesan – 2017-09-14T14:14:50.450

1@walrus I did say "extreme", and it was an exaggeration on purpose - but why does it strike you as a straw man? I believe therein lies a possible answer to your question. – Tobia Tesan – 2017-09-14T14:23:40.627

@TobiaTesan, it struck me as a straw man because it is both extreme and not equivalent - as JAB says it's a skill that you can reasonably assume students to have learned before university. – walrus – 2017-09-14T15:06:51.313

1Very well, you can indeed assume students who graduate from high school know how to use a graphing calculator or Excel. But in high school they don't have classes on how to use a graphing calculator or Excel and certainly middle school children don't know their way around the things, so how do they learn? It's just another example of a handy tool that people can and eventually will learn to use on their own by R'ing the good ol' FM, if you get what I mean. Excel is to high school what a VCS or an IDE is to college. At least that's my humble point of view: it's not the University's job. – Tobia Tesan – 2017-09-16T08:07:19.653



I suspect it's a combination of several factors:

  1. Version control isn't that challenging to learn (assuming you know how to use the command line). It's something you can trivially understand by following a few tutorials online -- I'd argue the hardest part is actually finding the right tutorial (there are tons of garbage "how to use Git" tutorials out there, and surprisingly few good ones, for example).
  2. Despite that, it can be hard to find time to fit in the command line and git. You'll probably need to spend at least 30 minutes talking about both things, and if you have a lot of material you need to cover, it can be hard to squeeze that in without compromising on something else.

    In particular, it's worth noting that you can't necessarily just add in new material somewhere and shift everything over. You need to make sure your change maintains the overall tempo of the course, make sure no topic "overlaps" oddly over a weekend or a holiday, need to make sure students are still being taught the material they need a sufficient amount of time before you make related HW due... If the original course was competently designed, it's probably a well-tuned engine where every minute matters, so adjusting it will require some degree of effort.

  3. If your university didn't find time to squeeze in version control, you'll be told to learn it on at least day 1 of your first internship or job.

    (And they'll probably do a better job of teaching it! It's hard to teach the value of things/give students the opportunity to practice things like branching, rebasing (if you're using git), using specific workflows, etc. in a university setting -- those sorts of more advanced operations are really only useful in larger teams working on a long-term project.)

  4. You mentioned that your intro course covered git on day 1. I can see an instructor considering against that approach if they want to prioritize moving to programming as soon as possible to try and "hook" the students in with instant gratification. (If you're completing new to programming, I can imagine learning to use tools like version control would be relatively dull and sort of a bother -- you don't really get to see the payoff until you start tackling more complex projects later on.)

So basically, it's material that's difficult to fully cover (where the subset you can cover is easy to learn yet still takes up an awkward amount of time), and that the student is going inevitably run into and learn without any real difficulty anyways.

None of the issues I pointed out are insurmountable, of course, but if you toss in inertia into the mix, you can see why some schools would never get around to rejiggering their curriculum to fit version control in.

I personally think it's worth teaching version control anyways (I'll go even further, actually -- I think schools that don't teach version control in some capacity are doing their students a major disservice), but can't deny that it can sometimes be logistically challenging to work that material in.


Posted 2017-09-11T14:21:57.263

Reputation: 3 430

1This answer seems to mainly address point b) from the question. Do you have any thoughts on why some universities ignore the benefits to them apart from inertia and lack of time (the latter of which I struggle to believe is a real issue in a 3 or 4 year degree). – walrus – 2017-09-11T17:41:30.130

@walrus -- I think it's less that you're ignoring the benefits. Rather, it's more that there are just so many things that could be teaching and it's hard to pick. An undergraduate degree has time to cover only a tiny fraction of computer science -- that's a part of why we have masters degrees and PhD programs, after all (and even those can only cover a small fraction of what's out there).. – Michael0x2a – 2017-09-11T18:02:24.123

2Also, it's worth noting that the university and the instructors themselves don't necessarily get any huge benefit out of using version control (it's sometimes the opposite, in fact: somebody needs to set up and maintain all the infrastructure and tooling). Rather, it's mainly the students who get the benefit. – Michael0x2a – 2017-09-11T18:02:57.567

that's one way of looking at it. I suppose I'm surprised that you'd struggle to fit a course with only a couple of hours' content in, especially considering some of the things that (both my and other) courses do find time to include.

Regarding the university getting the benefit; I can see that it could definitely be more trouble than it's worth, but I can also see that it could make certain things a lot easier to administer for the university. – walrus – 2017-09-11T22:02:03.843

3@walrus -- oh, don't get me wrong. I think adding an extra, lightweight course containing all of these additional "things you should probably know" is a pretty decent way of solving this particular problem -- that's exactly what my university does, in fact. But the path of least resistance for a typical instructor is to modify their (existing) course, and my point is that can sometimes be a bit challenging. – Michael0x2a – 2017-09-11T22:09:27.693

5"Version control isn't that challenging to learn." I disagree with this. When I finally did need to learn version control, it took me several weeks to really get the hang of it, and I continued to learn more about it for years. And there are many, many wrong ways of using VCS that are easy to fall into if you aren't taught well or don't have a deep enough understanding of what you're doing. Proper VCS usage could easily cover multiple lectures, if not an entire unit in a class. – Kevin – 2017-09-12T00:16:19.367


@Kevin: I suppose it might depend on which VCS you're learning -- there are certainly some quirky ones out there. But I genuinely do think that a CS graduate shouldn't find it too hard to pick up something like Git by working through something like LearnGitBranching: after all, Git basically boils down to a tool for manipulating DAGs, and graph manipulation should be the sort of thing that's extensively covered both explicitly and implicitly in a decent CS curriculum. The other best practices stuff is only a google search or two away with the right query.

– Michael0x2a – 2017-09-12T01:32:01.340


I second @Kevin's comment. See e.g. this or this question. At the very least, I certainly think it's wrong to say that you could learn Git trivially easily. This is supported by the fact that Git's primary documentation includes a 574 page book, and that book doesn't even explain how Git works, a topic which the same author wrote a separate 120 page book on.

– JBentley – 2017-09-12T14:06:04.173

@Kevin I partly disagree with you. I think that it's very easy how to learn how to use Git in a single-user environment, where you are working out of master, never branch, and never merge. (Which describes how you would probably use version control for most school assignments) I agree though, that Git gets very complex very fast, as soon as you involve branching and merging. That when you run into this: http://justinhileman.info/article/git-pretty/

– Patrick M – 2017-09-12T16:24:05.967

@JBentley sorry, I still disagree. I do think Git is often taught poorly, but don't think it's inherently hard to learn. All you need to know is that Git is a tool for manipulating DAGs -- you can infer what's possible and how to do it on-the-fly based on just this and a little googling without needing to read a ~600 page manual. For example, if you didn't know about something like rebase -i, you'd still be able to easily infer the existence of this command: you can rearrange nodes in a DAG, so Git certainly must support such an operation. You can then google/read the book to get details. – Michael0x2a – 2017-09-12T17:45:21.130

That said, I do agree that if you try and learn Git without knowing about graphs or using a tutorial that doesn't emphasize the DAG that learning to use Git would be challenging: without understanding the underlying model, Git would be very cryptic. Unfortunately, many tutorials seem to de-emphasize the DAG (possibly to target beginners?) and focus on teaching specific commands instead, which is probably why people find Git challenging to pick up. That fact that Git commands are often named unintuitively only compounds the problem for people who learned this way. – Michael0x2a – 2017-09-12T17:46:10.717

5@Michael0x2a I've had to teach Git in a commercial setting a few times. What I have found is that if you can start from "learn the correct model of how git models everything under the hood," and then learn how to use it, Git is easy. However, if you cannot justify learning the entire model before doing anything, it's very easy to develop wrong models in one's head. I still grapple with issues regarding the index because I learned it wrong the first time. Honestly, I find most people want to being seeing productivity as they learn, not after they learned it. – Cort Ammon – 2017-09-12T19:17:57.713

2I think another thing here that has not been touched on is that command line Git is not the only version control method out there. I would bet that if one can grasp fundamental data structures, one can figure out a version control system at their leisure. – Tim – 2017-09-12T22:35:54.270

The challenge of finding good tutorials on a subject is the most compelling justification for universities even existing. – Kevin Krumwiede – 2017-09-13T21:35:25.030


Teaching revision control as part of CS course.


Revision control is not a computer science thing, it has nothing to do with computer science. Though it is a software engineering tool.


Everybody should learn revision control, if they use a computer. Even from non-technical subjects. Even though it is a software engineering tool, it can, and should, be used by everyone, in every subject.

When dealing with MS-Word documents and other non-diffable objects, a revision control system that uses / or allows locking should be used. This precludes distributed revision control. For this use case Subversion (svn), is preferable to git or mercurial (hg).


Posted 2017-09-11T14:21:57.263

Reputation: 7 268

11True story: I did quite a lot of theatre at uni and did an entire play script in LaTeX, which I of course version controlled using git & github. The director (not at all technically minded) was confused, to say the least. – walrus – 2017-09-11T22:07:52.553

1There are tools that can diff MS-Word files, which can be plugged into your version control system – JoelFan – 2017-09-12T19:51:27.340

@JoelFan I would be interested in knowing what they are. Can they also merge? – ctrl-alt-delor – 2017-09-12T19:53:47.263


@ctrl-alt-delor, http://blog.martinfenner.org/2014/08/25/using-microsoft-word-with-git/

– JoelFan – 2017-09-12T20:03:02.733

1@JoelFan that pandoc tool looks awesome. I have many uses for it. Looks better than what I was using for a few task, plus I have other jobs for it. Turns out that I already had it, so I just installed it. – ctrl-alt-delor – 2017-09-12T20:21:04.580

1I think it's a mistake to say revision control is "computer engineering" topic. Revision control should be thought of as an essential tool for any area of study/work that deals with preparing files using a computer. And even if you won't be doing it using a computer, the same principles should be learned for preparing creative works by hand - organizing and filing different revisions you went through (rough drafts, sketchbook sketches, recordings while preparing a song or a speech, etc.) - because it's how you study and improve your own processes. – R.. – 2017-09-12T21:15:10.917

4As such, in a modern academic environment where most work is prepared to hand in digitally, revision control software of some sort should be the first thing you're taught when you go to college, or even in high school, not just for CS students but for everyone. – R.. – 2017-09-12T21:16:45.810


I'll stick my head above the parapet, and offer that the people teaching these courses won't have been taught about version control as part of their degree courses. I certainly remember that the hassle of learning about how it worked (and some doubt/uncertainty) meant it wasn't something I adopted until I was forced to by work requirements. At the time it felt hard. Now, if I want someone to see some code, I give them a 'git clone' command line...

There seems no real justification to avoid introducing version control in its simples form fairly early on. You can argue that it isn't needed, which may be true, so there is no need to go overboard on the detail. What is most important is to instill the understanding that version control makes life easier.

It feels that GIT works more easily than RCS, although that might just be an effect of the concepts being more familiar to me now.

Sean Houlihane

Posted 2017-09-11T14:21:57.263

Reputation: 1 429

Are people still using rcs? – ctrl-alt-delor – 2017-09-11T18:26:59.563

1No, don't think so - but good version control feels like a fairly new thing, and there is a great temptation to teach things as you learnt them, as your tutor learn them - etc. – Sean Houlihane – 2017-09-11T18:36:50.680

4I think this is probably the main factor. The lifecycle (and inertia) for intro CS courses is quite a bit longer than the cycle for programming developments. Having a robust, readily available version control system which can be instituted on a personal level and doesn't require major support infrastructure (e.g. a server) is relatively recent, especially when measured against how frequently departments revamp their CS courses. As more people get familiar with Git and the like, I imagine it will be incorporated more widely in the "best practices" suggestions/requirements given to students. – R.M. – 2017-09-11T18:38:35.820

@ctrl-alt-delor Yes, with a modern wrapper.

– CL. – 2017-09-12T17:18:01.703


The main thing you need version control for is for group coding projects.

When I was taking CS back in the misty past (mid 80's), the only class that had a group coding project was my Software Engineering course. I remember complaining to a TA about updates from teammates wiping out my changes, and him mentioning to me off-handedly that our OS (VMS) actually had a program to help deal with that.

Perhaps these days that info would be given up-front (I sure hope), but I think they can be forgiven for not teaching me about it before then, simply because without having the experience of working in a team, there'd be no need for it.

Typical practice back then, and I gather today as well, was to train CS students to work alone. Students coding all by themselves and not going to peers for help is treated as virtuous behavior, while actually coding in concert with another human being is treated as cheating so vile, it merits expulsion. So I think its somewhat understandable that they wouldn't train students to use tools that encourage that evil behavior.

Ironically, when I did job interviews my Senior year, I had a least two interviewers who were only interested in my grades in the Software Engineering course, and only interested in talking about how that one course went for me. Seems like a bit of a disconnect there...


Posted 2017-09-11T14:21:57.263

Reputation: 207

19The main thing you need version control for is for group coding projects. citation needed? I've seen many instances where people do all sorts of things where VCS would be beneficial. Not the least of which is the CS rite of passage, doing an accidental rm -rf on something important. – enderland – 2017-09-11T16:22:15.123

Interesting; in my course (graduated this year) we did five big, term-long group projects and probably a couple of dozen smaller group coursework pieces, plus more pieces of coursework that could be done individually or in small groups. About the only work that was strictly individual was the exams. – walrus – 2017-09-11T16:26:27.483

@walrus - Yay! Very encouraged to hear that. – T.E.D. – 2017-09-11T16:31:47.323

14This answer is ludicrous. You don't need multiple people to make mistakes you'd like to revert, or want to keep track of change history, or try out experiments on a separate branch. – BlueRaja - Danny Pflughoeft – 2017-09-11T19:28:42.510

@BlueRaja-DannyPflughoeft - You don't need a full-blown revision control tool to do any of that either though, and its a conspicuously heavy solution if those are the only tasks you use it for. I was doing all that stuff just fine with VMS and its automatic edit backup version system before I ever heard about their revision control tool. What I couldn't do without it was manage simultaneous work from multiple people.

– T.E.D. – 2017-09-11T21:11:15.387

1Perhaps I should add "teaching what a revision-control tool is really for" to my list of CS complaints here, since clearly a lot of people still don't understand this. – T.E.D. – 2017-09-11T21:16:59.020

@enderland - I believe my first crack at this ever with the VMS tool kept the repository in my main working directory. Early revision control tools liked to work that way, and if you didn't like it you had to fake it out with link directories. The VMS equivalent of the "rm -rf" command would have likely deleted my repository just as easily. Remember that revision control tools are designed for controlling revisions from multiple people. If you can use it as a glorified emergency backup tool, that's nice, but it isn't its prime designed purpose. – T.E.D. – 2017-09-11T21:26:59.593

@enderland ...today if I use git, that mistaken "rm" command will still delete everything I've done since my last merge push up to the master. If the "master" is in fact in my .git subdirectory because nobody else is collaborating with me, then the mistaken "rm" will delete all my code, and all history, so your "CS rite of passage" is probably quite safe. – T.E.D. – 2017-09-11T21:45:12.340

@T.E.D. part of the rite of passage is understanding the importance of pushing your code somewhere, too ;-) This helps you in industry if you accidentally rm -rf ~ when you have too little coffee without fully thinking when trying to delete an errantly created folder named ~ (speaking for someone else, of course). – enderland – 2017-09-11T22:05:13.047

1@enderland - Point is, revision control tools don't fix this (and weren't meant to). – T.E.D. – 2017-09-11T22:19:13.647


It's not university-level material.

Version control can be picked up easily by one of the thousands tutorials available on the web. It's more interesting to give a course on data structures, algorithms, formal logic, mathematics... and lay a broad foundation to widen & deepen the understanding, than explaining trivial concepts like version control.


Posted 2017-09-11T14:21:57.263

Reputation: 149

If it's not university-level material, then it seems like students should already know it before attending a college programming course. Right? – ErikE – 2017-09-14T00:00:05.900

2No - just like the university won't teach you how to program monopoly, risk & yahtzee, it won't teach you how to use source control. It will teach you what you need to learn it by yourself: logical thinking, databases, modelling, programming basics, certain methodologies... it's a level of abstraction. University lays the foundations, the student is supposed to erect the building themselves. – Konerak – 2017-09-14T06:08:35.187

2Ad hominem attacks are counted as a fallacy in a discussion, ErikE. They don't really add any value. We actually did learn how to program (not play - I said programming monopoly in my comment above, you twisted it to playing) in university, but as an exercise to anchor the learned (theoretical) material. – Konerak – 2017-09-14T11:11:00.563

3@ErikE I don't think that the complement set of "university-level stuff" is "stuff that all students know already" or "stuff that is taught in high school". See also: using a graphing calculator or a word processor. – Tobia Tesan – 2017-09-14T12:24:13.327

1I did misread what you said, and thought you were referring to playing those games, not programming them. My apologies. Had that been your actual statement, I would stand by what I said. It was not an ad hominem attack that meant your argument was invalid because you were not an adult, but simply that anyone making such a ridiculous statement is not acting in an adult way. What I thought you were saying deserves to be called "not adult." – ErikE – 2017-09-15T06:55:25.103

2A serious comment then. The types of commits you make, what changes you include together, how you comment your commits, and your workflow options for collaboration and code review are integral to coding. These change how you code. I don't agree version control is an afterthought or mere application like the way you might program a game. I see developers struggle with git all the time. It's a valuable tool and, all else being equal, I would take a developer who'd learned git over one who'd learned b-trees or any other three data structures taught in college. – ErikE – 2017-09-15T07:00:01.407

1Git rebase, splitting a commit, index editing, fixing problems like the public repo getting rewritten, recovering lost commits, solving tricky merge conflicts, rewriting or replacing a commit several commits back, and so on and so forth are super useful knowledge that CS graduates ought to be well-versed in. It's hardly like "using a word processor". – ErikE – 2017-09-15T07:03:30.610


CS students are taught to use version control software.

I teach at a small liberal arts college, and we've taught its use in our capstone course (and sometimes others) for as far back as I can remember, at least since 2005.

A graduate's not knowing something does not necessarily imply it was not taught. Students tell me they've never seen material that I know was in the prerequisite class. I'm sure this is not unique to CS. (Students are taught proper writing in the required English 1, but they don't all use it.)

Teaching something does not guarantee that students understand it. They could have copied-and-pasted commands or relied on their teammates (or Stack Overflow.)

I don't include questions about VCS on tests, just like I don't include questions on how to use IDEs and debuggers, but that doesn't mean it isn't taught.

Ellen Spertus

Posted 2017-09-11T14:21:57.263

Reputation: 4 408


Version control is most effective in an environment where at least one user understands it quite well. As long as you have one individual on the team that understands how to recover from a messy situation, everyone else can comfortably learn as they go. However, if one does not have such a knowledgeable individual, there may be no clear way to recover from the sorts of situations that VCS is supposed to help you with. For example, if I'm not on your team, and you come across a "Tree conflict" in Subversion, it's unlikely that anyone has bookmarked the StackExchange answer that lists each tree conflict and the series of commands which resolve it. Instead, "Tree conflict" quickly becomes "wipe out your repository and do it again."

In a commercial setting, there are typically senior developers or team leads who are actively monitoring the state of the repositories and can guide you down your path. In an academic setting, one is not so lucky.

If I were to introduce VCS to a curriculum, I would use it in the context of group projects, and I would want to make sure the VCS tools are actively maintained and used. This may call for extra effort on my part, or that of a TA (which may not be an acceptable cost). I'd say 95% of the value of VCS becomes apparent when one is working on a team, rather than on their own.

Cort Ammon

Posted 2017-09-11T14:21:57.263

Reputation: 661

Is it likely that anyone can find a StackExchange answer that they haven't bookmarked? – JoelFan – 2017-09-12T19:53:47.273


Along with the several reasons mentioned above (especially the part about educators themselves not having used version control in their learning days, and the part where it was written that version control is more of a work place concept), one more reason why we (as in universities here in India) cannot teach is because we simply don't have git server access. Its a cost that some colleges are simply unable to bear.

An alternative to that would be using an online service such as GitHub or Bitbucket (my preferred choice) which are free. However, that also does not work because internet access is either non-existent or not provided (because kids will spent time on the internet).

Perhaps the final reason why we don't use it here is because, for many students computer access and internet access at home itself is a challenge. Even if the college does provide version control access, the students cannot access it when they want to anyway.

Due to these 'infrastructure issues' code is usually carried by the student via printouts, USB pen drives or simply stored as files on their mobile phones.


Posted 2017-09-11T14:21:57.263

Reputation: 1 612

4Huh? You don't need a server or Internet access to use RCS, CVS, Subversion, or git; I haven't used any others, but I assume they work fine from a pen drive too. – Peter Taylor – 2017-09-12T08:33:44.283

2@PeterTaylor true, e.g. .svn and .git folders can also be copied along with the project's subfolders. If revision control was heavily used in those repositories, these folders may be bigger than the project itself, but they can be completely copied to a pen drive and reused without Internet access. – Armfoot – 2017-09-12T15:58:12.520

for me, version control without server access is essentially useless. hence the answer above :) It's like a car without fuel or a light bulb that won't burn when needed. Or a super hero who can no longer fly. Utterly useless. – Jay – 2017-09-13T04:27:30.377

Makes sense, but you still want to be keeping a repo in the pen drive. You have the barrier of working out how to make the workflow, but it will pay back quickly. – Sean Houlihane – 2017-09-13T14:48:05.250

Use the pen drive as the repository storage (instead of a server) is an interesting approach. I will have to think about that if only because, as a responsible trainer, I am bound to keep my mind open for suggestions. A superhero who can no longer fly can still kick ass on the ground. – Jay – 2017-09-13T15:14:31.757

1@Armfoot nitpicking: you probably want to git clone --mirror instead of copying the .git folder. – Tobia Tesan – 2017-09-14T12:25:18.213

1@Jay for me, version control without server access is essentially useless -- you are missing out. I'm surprised that you can't find value in having a history and being able to revert your changes alone. – Tobia Tesan – 2017-09-14T12:27:00.247

Looks like I am missing out indeed. My first experience with git was at an office and yeah, it was all connected. Yet, here I am, learning stuff. – Jay – 2017-09-14T12:42:46.670


I'd suggest that it's a flaw in contemporary version control systems that they (might) require university level training to use effectively, as opposed to implement or architect at a higher level (branching models, etc)

My degree did cover version control, but from a position of understanding design challenges and solutions in creating such a system (which provided a knowledge in how to use the chosen system as a by-product).


Posted 2017-09-11T14:21:57.263

Reputation: 107

3I think the point is not so much that they're difficult to use as that many people struggle to get by without them without realizing that their struggles would be alleviated by simply using version control. – Kyle Strand – 2017-09-12T15:51:01.027


One point not mentioned in other answers is that it up until quite recently (more or less as git has arrived, which is by and large recently) it has not been easy to give students access to version control.

Subversion requires you set up a local server on your computer, SourceSafe requires a license.

And you will have to support students that have messed up their installations. This alone will take an awful lot of time from other things students have to learn.

To use version control in teaching you'll have to have a lab, where the students can go and get their problems and computers fixed. That is a cost most institutions rather not incur.

And there is the problem of teaching material. I doubt there is much available litterature for students. Most material on the net is for people who already are developers and know what version control is and it is simply to high a level for students.


Posted 2017-09-11T14:21:57.263

Reputation: 99

1I learnt sccs in 1991, it was installed on all of the university computers. – ctrl-alt-delor – 2017-09-12T17:09:34.110

Your answer rather ignores the fact that most institutions that teach CS will have one or more computer labs, with machines on which they can pre install useful software, but I can believe that using version control systems was harder in the past than currently and so many institutions will have no tradition/habit of using them. – walrus – 2017-09-12T17:24:34.173

2>Subversion requires you set up a local server on your computer - It can be used without one, just like git. This is how we did it at university a year or two before git was created – Nye – 2017-09-14T13:32:41.887


The majority of 'Version Control' actually pre-dates the Titanic, and was developed as part of Drawing Office procedures. It is only very very recently that the newer distributed version control capabilities have been developed.

Back in the day, drawings were made with India ink on kaolin and linen sheets, and were effectively more valuable than the 'old masters' artworks. If they were damaged then the product could not be built, thus great pains were taken to protect the master from damage or modification. Drawings were 'traced', and from those trace's the blue-prints were made. One would have to request changes, which would be batched up, before a 'change order' was allowed.

In those days there was only one physical master. Protection was paramount. The problems were human and physical. It was an administrative exercise.

Now we have perfect replication and high volume storage. Thus now we often use verification hashes to check if our 'master' is the same as their 'master'. And we use Merkle trees to verify the history of the modifications - Is our master properly derived from their base design (e.g. Git).

So underneath there is a lot of CS theory at work, but it's still something of an administrative exercise. It all depends on whether one is educating someone to be an academic, or a practitioner (or developing the practice..).

It's still a bit of a human problem, it's just that anyone over 30 probably still thinks the old way.

Philip Oakley

Posted 2017-09-11T14:21:57.263

Reputation: 97

I'm not quite sure what you're saying: do you think that as a dinosaur in my mid-30s I use kaolin and India ink? – Peter Taylor – 2017-09-15T10:55:29.160

@PeterTaylor, The older we are, the more history we have embedded in our knowledge (and less the younger we are). So I do remember the smell of the blue print machine from long ago (only seen kaolin and linen in the museums;-), and I now use Git when I can. At my work site (established during WWII) our (computerised) version control system has many attributes of the older DO systems. In part I was noting that modern CS 'version control' have developed from perhaps unexpected origins - Is it still my grandfather's axe? Is this the one that cuts down trees? – Philip Oakley – 2017-09-15T11:20:58.733

Welcome to CSEducators. While history isn't our main focus here it was nice to see a bit of it here. As an old person, I can agree..... wait, I forget... – Buffy – 2017-09-15T11:54:07.410

@Buffy, the history helps provide the "why's" that put the "how's" into context ;-). E.g. I personally like FORTH as a language (1976-) because of it's ease of use and contrasts with other programming styles. (Knowledge of) It helps one think! – Philip Oakley – 2017-09-15T14:58:47.613