diagnostic messages emitted by the compiler for
each single translation performed.
2.2 User Stats
In an e-learning system, in addition to learning tools
and objects, it is important to have reporting tools
allowing students to track their progress having an
evaluation, teachers to monitor the development of
individuals and of the group.
For this reason the system is equipped with a
tracker for the operations in order to store statistics
about translations performed and errors found.
Errors are grouped into macro categories according
to their type and their severity. For each translation a
record is inserted into the database containing the id
of the page, the user id and the number of errors
differentiated by type. Such an organization allows,
by intersecting the data, to generate a variety of
statistics like:
• % of compilation with errors for student;
• % of errors for student grouped by typology;
• % of compilation with errors for program;
• % of compilation with errors for program
grouped by typology;
• % of compilation with errors for course;
• % of compilation with errors for course
grouped by typology;
• list of students who make more errors;
• list of students who make more errors
grouped by typology;
• list of pages where are made more errors;
• list of pages where are made more errors
grouped by typology;
These data can be used for statistical purposes:
for example to perform comparisons between
students and work groups, or any act aimed to
reinforce topics subject of major errors.
2.3 History
Gaston Bachelard (1977) believes that the error is
positive, normal and useful, and endorses his theory
by claiming that the error is not an obstacle to
knowledge, rather this is characterized as a
perspective of errors corrected.
In this perspective, we think that students can
benefit a lot from the use of a tool that allow them to
inspect the history of a given source code, to study
how errors were committed and were propagated,
and to highlight the differences between successive
versions.
Both the teacher and the students can access
these data to identify the issues and situations in
which mistakes are made and to analyze how
students' knowledge and ability to program improve
over time.
We consider it particularly important that
students have available tools to analyze their own
progress and error, because this helps to improve
critical thinking, the ability to self-evaluation and
the engagement in the use of the system beyond the
scheduled lectures.
Another important reason to provide historical
data is code reuse.
When programming, one often finds himself in
front of errors or problems that have already been
addressed before, but for which one does not know
the solution, either because one forgot or because it
was provided by another person.
The repository can be used as a source of ready
to use solutions, explained in detail and validated
both by means of automatic correction provided by
the system, either by the sieve of other users.
2.4 Module Compile and Report
In this section we describe in more details the tools
that allow to compile source code, which constitute
the real core of the system.
After the creation or the update of a page
containing source code, unlike a conventional wiki
which just saves the content into a database, the
compiling module comes into play. According to the
specific programming language employed, it
extracts the source code from the page and dispatch
it to the appropriate compiler. If the compilation is
successfully completed, no further operations will be
performed. Otherwise, diagnostic messages emitted
by the compiler are submitted to the virtual tutor.
The virtual tutor's role is to interpret the output
of the compiler and to provide to the user a natural
language description of errors, other problems,
possible solutions, related topics
This poses two main difficulties:
• the need to know all the possible errors
detectable by the compiler;
• the need to be able to recognize individual
errors, despite the fact that different
compilers usually emit completely different
diagnostic messages for the same problems.
As regards to the first issue, the only solution is a
total enumeration of all possibilities. This solution,
although expensive, is the only that guarantee a
complete feedback to users, a fact that we consider
important for novice programmer.
To overcome the second difficulty, we employ a
ACOLLABORATIVEENVIRONMENTTOLEARNPROGRAMMING
473