Abstract
The Online Judge (http://icpcres.ecs.baylor.edu) is an on-line programming trainer created by University of Valladolid in 1995 with the aim of training users who participate in programming competitions. Currently this tool has over 64,000 users from many countries and more than 2,000 tasks.
In 2007 the project "Integrating On-line Judge into effective e-learning", funded by the European Commission under the Life Long Learning Programme (grant number 135221-LLP-1-2007-1-ES-KA3-KA3MP), was launched in order to satisfy the users' demand for greater pedagogic character and to facilitate the use of the Online Judge in courses of informatics in higher and secondary education.
The Online Judge has been maintaining a task database, which can be very useful for teaching algorithms at various levels. However it is not easy for teachers to find proper tasks which fit particular students. At the moment it is possible to weight task difficulty by the percentage of participants who provide correct solutions. It is impossible to find which topics or algorithms are required to solve tasks.
An attempt to classify the existing tasks by possible solution algorithms was started by the Online Judge members,
using a Wiki (http://www.algorithmist.com/index.php/Categories). However the process is ad hoc and needs systematic revision and analysis.
We are providing several schemas for classification of the tasks: (1) Categories proposed by task authors, e.g. by providing comments on the best solution. (2) Categories proposed by the Online Judge administrators, e.g. length of source code or time required for solving the task. This type of classification can only be done by the administrators as other users do not have any access to the solutions and statistical data. (3) Categories proposed by participants ranking the difficulty of solved tasks. (4) Categories proposed by teachers who have used the tasks for several years in their courses, e.g. task topics and difficulty.
To make an easier classification process we propose to develop a set of keywords or key phrases. Applying these key phrases to each task will provide more information to users.
Initial set of keywords and key phrases can include: (1) Theory or algorithms [1] needed to solve the task (Fig. 1). Fig. 1. Number of Online Judge tasks classified by algorithms (2) Task difficulty, e.g. involves required knowledge, no mathematics, basic mathematics, no algorithms, no data structures, no abstract data structures, suitable for first year students, correct algorithm is not obvious, & (3) Recommending prior tasks that should be solved first. (4) Task type by solution output format, e.g. output is unambiguous, output is ambiguous, output is one number, & (5) Task type by source, e.g. Which competition or course proposed this task? Who is the author?