June 18, 2006
June 18, 2006
June 21, 2006
Software Engineering Constituent Committee
11.1223.1 - 11.1223.13
Teaching Software Engineering Through Competition and Collaboration
This paper reports a case study in teaching senior-level software engineering using both competition and collaboration. The students were divided into teams to write computer games and competed in the second to last week of the semester. Meanwhile, each team had representatives to write libraries used by all teams. This course adopted several princi- ples of “problem-based learning”: students discovered the needed skills as they progressed throughout the semester. Because competition was conducted through a computer network, the students had to learn network programming and synchronization among concurrent pro- grams. A competition required three programs: two players and one referee called “game server”. In addition to network communication and concurrent programming, students also learned graphical user interface and game strategies later in the semester. This course also emphasized team building and team management. Each team included ﬁve or six students. Five unique roles were suggested by the instructor and the students decided their roles by exchanging their resumes among their team members. A leader was elected by each team; the leader received bonus points when the team met its schedule and penalty if the schedule was missed. Even though this successfully kept all teams on schedule, team leaders suggested more participation in deciding the grades of team members. We discovered three important aspects of using competition and collaboration in edu- cation. First, students consider collaboration within a team much more important than collaboration across teams. Second, it is important to select a game that is suﬃciently chal- lenging for the competition and allows sophisticated strategies. Third, competition itself cannot promote higher quality. If the teams only need to compete within the class without a higher standard, it is possible that all teams resort to simple strategies. Instead, the in- structor should provide a reference player that implements an advanced strategy and then encourage students to defeat this reference player.
Introduction A typical course on software engineering discusses software process, project management, requirement and design, and maintenance.4, 14 While these topics provide a theoretical foun- dation for the students to construct large-scale software, these concepts can be better con- veyed through a semester-long team project. Students can learn how to collaborate with their teammates in the project. A recent study13 suggested that students would be better motivated through competition. In the spring semester of 2005, a senior-level course on software engineering was taught using both collaboration and competition. In this course, students collaborated in two ways. First, they worked with their teammates in the projects.
Lu, Y., & Johnson, M. C. (2006, June), Teaching Software Engineering Through Competition And Collaboration Paper presented at 2006 Annual Conference & Exposition, Chicago, Illinois. 10.18260/1-2--706
ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2006 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015