Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Context

I will be coaching student's programming projects in my engineering faculty (group of <10 students). At this occasion I wanted to draw the student's attention to the usefulness of version control systems in particular DVCS.

There are many convincing DVCS tutorials out there, however all the ones I found use unrealistic or contrived examples (e.g. hginit uses cooking recipes).

What I am looking for

I want the students to collaborate in class on a simple but realistic programming project that makes them discover the benefits of the DVCS through its usage. The class would collaborate as a dev team.

I am looking for a toy project simple enough to keep the focus on the DVCS workflow. The goal is for student to face DVCS challenges that arise naturally in a collaborative development: bug fixes, branch management (stable vs development), merge conflict resolution, etc.

I would be greateful if you could give me specific project ideas and highlight their DVCS challenges (e.g. a basic signal processing pipe-line, where each steps is written by different student, forcing them to deal with interface conflicts, etc).

Thanks !

share|improve this question
    
Surely any collaborative project would benefit from source control. I don't see how one project would be better than another. –  ChrisF Sep 30 '11 at 10:06
    
Yeah, don’t give them a toy project; give them a real and useful project. Random, unuseful projects are the worst you can do, students hate those. –  poke Sep 30 '11 at 10:09
add comment

1 Answer

up vote 2 down vote accepted

Let them write an application that can be used at the end of the project.

In the university I used to attend had a XP project where each team wrote an application that would store times for a race, and that could support several types of races (start-stop, intervals, endurance). It's done during the semester, reserving 8 hour mondays for implementation time and a couple of hours during the week for planning. Before this they are taught version control, TDD and are introduced to the programming process (eXtreme Programming).

At the end of the project, the teams both had relay three-legged races and also pitted each other on who would produce the fastest and most correct race results with their application. I.e. the first team who printed out the correct race results would win, other than also winning the race.

The greatest challenge is coming to the point in their user-stories that would force them to do a refactoring, which often happens when they have to support other race types. And thats when the teams start to branch out in their SCM and merge their work (while crossing their fingers and hope the refactoring works and all their tests passes).

share|improve this answer
    
Reading your answer, maybe am I looking for a scenario of project evolution (new feature requested, bug reported, etc) rather that a project. Thank you for your input. –  oli Oct 3 '11 at 8:07
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.