A course on algorithms and data structures using on-line judging

High dropout rates are commonly the main problem we must face in Computer Science degrees. There are two main causes of dropout: the implicit complexity of the matter, and a lack of motivation among students. The second-year programming course of our university suffered dropout rates of over 70% of the more than three hundred enrolled students. In order to overcome this problem, we have adopted a new teaching methodology based on two key ideas: replacing the traditional final exam with a series of activities in a continuous evaluation context; and making those activities more appealing to the students. In particular, most of the activities are designed as on-line programming competitions; they are carried out by using a web-based automatic evaluation system, the on-line judge. Experimental results show the high effectiveness of the proposed approach. On average, the dropout rate decreased to 45% while the pass rate doubled. Some strategies are used to ensure the authorship of the programs and to detect source code plagiarism.