The course introduces students to principles, concepts and techniques associated with team-based development of large, complex software systems. Major topics include teamwork, configuration management, project management, requirements engineering, and systematic testing techniques. Students will learn to use software tools in the context of a Scrum-based Agile development project. It is assumed that students know how to program and debug using the Java language.