In today's world a professional programmer is expected to work in a team. The smallest unit of development is a software project in which a number of programmers are involved at the same time. That's why any computer-programming course must include instruction in teamwork.
Developing software in a team poses very specific challenges and, at the same time, provides invaluable feedback for each member of the team.
It's hard to encourage good programming practices and methodologies when the development is restricted to a few hundred-line mini projects. Methodologies like structured programming or object-oriented programming were developed specifically for dealing with the complexities of large software projects.
The basic tool that is used in team development is a version control system. Just like an individual developer needs a compiler a team of developers need a version control system. The education of a programmer is incomplete if he or she doesn't have hands-on experience with using a version control system.
So far the main roadblocks to widespread use of version control systems in computer instruction were:
Reliable Software's Code Co-op changes all that. It is an affordable, reliable, professional-quality version control system that doesn't require a server and is extremely easy to install, configure, and use.
Code Co-op has been successfully tested in academic environments. I used it in teaching computer science at the University of Wroclaw in Poland and at the DigiPen Institute of Technology in Redmond, WA. At DigiPen, in particular, we let the students install and configure Code Co-op on almost a hundred Windows workstations to develop their game projects in teams of three to five students.
In a typical teaching environment, students have access to a computer lab in which all workstations are on a LAN. Each development team selects a team leader, whose machine should be configured as a Code Co-op hub. The rest of the team should configure their machines as Code Co-op satellites. The team leader creates a project and the team members join it. Each student can then check files out, modify them, test his or her changes, and check them back in. This is the basic cycle of development when working with a version control system.
The instructor should encourage students to review their changes. With Code Co-op it's natural to review changed file (view the diffs) before checking them in. It is also natural to review each other's changes when synchronizing the project. Code reviews should be an integral part of development. They help in catching most of the bugs and improving code maintainability.
The results of using Code Co-op in computer instruction were most spectacular when it was introduced to students who have already been working in teams, without the help of a version control system. A typical reaction was "I can't imagine how we were able to work without Code Co-op." Their productivity was vastly improved and so was their knowledge of each other's code.