Learning to create well-designed and robust Java programs requires, besides a good understanding of the language, a significant amount of practice. In this paper we present the JavaFest, a collaborative learning technique for teaching Java to beginning programmers. A JavaFest is a group exercise that instructors can add to their repertoire of teaching techniques. It provides an opportunity for students to practice programming in a motivating but non-threatening environment, and to learn from the experience of their peers. Moreover, a JavaFest allows the instructor to gain insight into the current standing of the students in her class.
We describe the concept of a JavaFest and present three case studies in the form of three concrete JavaFests we developed and evaluated in our own object-oriented programming course. The general idea of a JavaFest, and the three specific examples we describe and evaluate, can easily be adopted to enhance any Java programming course.