views:

67

answers:

3

This semester I am teaching a lab at my university which is the first in a series on numerical methods for engineering students. The class is split into two parts:

  • Linux and Programming

  • Linear Algebra

The downside of this split is that we have a little less that 7 weeks to introduce the Linux operating system and how to program in the Fortran language. Because of the time constraints, there simply isn't enough time to teach students some very valuable programming skills such as how to use a revision control system.

For student using a Macintosh at home, I wrote up a set of instructions on how to use the Homebrew package manager to install the gfortran compiler. As Homebrew is backed by git I was sorely tempted to launch into an explanation about what git does and why they should use it or a system like it. However, such a tangent would detract from the business at hand which is getting gfortran installed and working.

Therefore, I want to add a footnote that points inquisitive students to an article that explains what a revision control system is and why they should use it. The article should:

  • Do a good job of convincing a programming neophyte that learning how to use revision control is an extremely valuable investment; even on top of learning how to program, learn Linux and become friends with their compiler.

  • Avoid descending into "holy wars", I.E.:

    • Distributed vs. Centralized
    • Mercurial vs. Git vs. Subversion vs. [insert religion here]

In the end, I don't care which specific version control system they get excited about, as long as they get excited about using one.


Update

The aspects of computing covered by the course are the Linux operating system and the Fortran programming language. Students are not taught how to install a compiler or use a revision control system and are not expected to learn these things. However, I am assembling supplementary material that convers these topics and this question pertains to articles that provide a good introduction to version control.

+7  A: 

This is a tremendously good article on what revision control is, how it works, and why you should use it. And they explain it visually, which is how most people learn best. (And in my opinion it's the only good way, besides experimentation, to learn how revision control works.)

There's also a Wikipedia article, but it's dry and boring.

Charles
A: 

Redesign the course. Numerical methods will have language-specific, hardware-specific, and operating-system-specific pitfalls, but those are course footnotes.

A good numerical methods course will be language/hardware/os independent. Make familiarity with programming in a language of sufficient math power a prerequisite, but let the students choose the language and programming environment they prefer to use to solve the assigned problems. An assignment like "solve this dynamic programming problem" shouldn't say "but you have to use Fortran on Linux". Plus, the variation in solutions you get from students using disparate languages and machines will make for interesting comparisons and discussions.

If you must teach Linux and a programming language and compiler installation and revision control, make it a separate 1-unit quickie procedural course suitable not just as a prerequisite for your engineering course, but also for other courses like physics, math, etc. Esoterics like revision control have no business in your numerical methods course any more than it should appear in courses for other majors.

joe snyder
I'm sorry, but I have to downvote this one. Redesigning the course is not an option. I agree with your sentiment, but the answer has contains no information on material that provides a good introduction to version control which was the topic of the question.
Sharpie
@Sharpie: you're not asking for just a good introduction to version control, you're asking for it in a numerical methods course. that's like asking how to include weapon-cleaning instructions in a deer-stalking course. my answer remains: DON'T DO IT, because it's absolutely unnecessary and you're only making the course worse. (even if you can't design out linux and fortran and compiler installation, you can certainly leave out version control.)
joe snyder
Joe, the first time you see a kid accidentally wipe out hours of work because they mist-typed a compiler command they learned two weeks ago... well that look of anguish will haunt you. Version control is something that is necessary for anyone writing programs. Period. We don't have time to teach it but I want to make sure there are good supplementary resources available so students can find out about it.
Sharpie
@Sharpie: let's see, they're going to type destructive compiler commands because you're forcing an unsafe and unfamiliar development environment to be used, so the solution is to pile on more environment stuff they've never seen before, not instruct them on it, but hope they use it? you're trying too hard to make this course a pain in the butt. quit putting bandaids on bandaids. make tool familiarity a prereq as previously stated, let them program with the tools they know, and give those poor engineers a solid 7 weeks of numerical methods. otherwise, i don't envy them. what university is this?
joe snyder
@Joe: There are good reasons it has to be Fortran, good reasons this *IS* the perquisite programming class and good reasons we start the numerical method series this way. But these won't fit in 600 characters and, like your answer, are tangental the question I asked.
Sharpie
@Sharpie: perquisite? this is which university?
joe snyder
A: 

Heres one highly recommended: Source Control HowTo

Zaki