The class was organized as a small software development organization, with instructor serving the role of senior manager, and the team leaders run competing development teams. Each team consists of five members, each serving one of the defined roles in TSP. In addition, students from the software testing graduate course were required to participate in the development of the product, by providing the software quality assurance function. The graduate students in the software testing class were also divided to five competing teams, were each team cooperate with one of the development team. The remainder of this paper describes the roles and responsibilities of the students in each course, and the interaction between the students in the two classes.