Modern software systems are often created by the joint effort of dozens, hundreds or even thousands of individuals. Effectively coordinating the efforts of such teams requires methods and tools that go far beyond those needed by an individual programmer. Topics include programming in the large; case studies from the Internet, electronic commerce and other domains; and teamwork, including remote collaboration.