<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Online Judge Information System Modernization*</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Adyghe State University</institution>
          ,
          <addr-line>Maykop</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <fpage>0000</fpage>
      <lpage>0003</lpage>
      <abstract>
        <p>Currently, the issue of informatization of education is relevant, therefore, online judge class systems are widely used in the field of online testing of students' knowledge. However, the problem of the complexity of the compiler messages for understanding by students remains relevant. The article discusses an information system for online checking of programming tasks, for which it is planned to implement a compiler message processing module. An algorithm for processing compiler messages is proposed, taking into account the need to modify and translate these messages. To achieve this goal, the open-source system "OnlineJudge" was chosen, which is written in the Python programming language and supports some other languages. On its basis, many error handling templates and corresponding alternative response templates have been developed. For this, a statistical analysis was carried out and the most common errors were identified, after which translation and auxiliary information were added for each of them. Such messages are processed by the compiler using regular expressions. As a result, the resulting system was introduced into the educational process to test a set of laboratory work on programming. The conclusion is made about the possibility of using this system in the educational process, besides, the open architecture of the software module allows you to additionally modify it, for example, to check the students' answers to plagiarism.</p>
      </abstract>
      <kwd-group>
        <kwd>Program Code Automated Testing</kwd>
        <kwd>Online Judge</kwd>
        <kwd>Compiler Errors</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>One of the main problems in the initial stages of learning to program is the complexity
of the compiler messages. Students find it difficult to independently understand these
messages since they are given in English and often contain terms and formulations that
are difficult for a new programmer to understand.</p>
      <p>
        Currently, the issue of the informatization of education is relevant. Particular
attention is paid to the development and implementation of new solutions to improve the
efficiency of the educational process with the help of modern information technologies.
*
However, the informatization process is still not completed [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ], so many teachers
check students' programming skills mainly manually and are forced to view a large
number of similar works in a limited time.
      </p>
      <p>
        Automation of routine work when checking programming assignments will allow
teachers to pay attention to more complex and interesting aspects of learning. Students,
in turn, will have the opportunity to learn more effectively [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        The goal of online judge systems [
        <xref ref-type="bibr" rid="ref4 ref5">4, 5</xref>
        ] is to provide a secure, reliable, cloud-based
evaluation of user-uploaded algorithms. Stages of operation of the system shown in
Figure 1.
      </p>
      <p>To solve the indicated problems and increase the effectiveness of training, it is proposed
to introduce into the educational process an information system for automated testing
of programming tasks, which includes the function of processing compiler messages.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Theoretical part</title>
      <p>
        Online judge class systems are widely used in the field of student knowledge
assessment. An online judge is an online platform that real-time fully automated verification
of the program code provided by the user [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. This class of systems contains basic
functionality, which can be modified to achieve the set goals with minimal labor and time.
      </p>
      <p>As a result of the analysis of existing open-source online judge class systems, the
OnlineJudge system was chosen for subsequent modernization, since it is based on a
component approach, which facilitates the process of its modernization, the system also
has a free license and supports several programming languages.</p>
      <p>To introduce this system into the educational process, it is necessary to perform some
improvements. First, you need to implement the compiler message handling module.
Secondly, given that the "OnlineJudge" system is intended for holding programming
competitions, it is necessary to modify the system in such a way as to ensure the
possibility of its integration into the educational process.</p>
      <p>As a result of the analysis of the system, a block diagram is built, shown in Figure 2.</p>
      <p>Compilation and testing of the code are performed using the JudgeServer and
JudgerSandbox modules. The result of the assessment, including the compilation errors that
we must handle, is transmitted to the web server, which writes the necessary
information to the database and communicates with the web interface, which carries out the
output for the user.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Practical part</title>
      <p>
        It is supposed to handle compiler errors for the C ++ language, in the selected system
it is g ++ 5.4. It is not possible to process the entire list of compiler errors [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. First, it
is necessary to conduct statistical analysis and identify a list of the most common
mistakes, after which each of them should be translated into Russian or another language
(with the greatest possible simplification) and additional information on it should be
added. The most convenient way to process messages is in a web server since the
Django framework on which it is written provides convenient tools for working with a
database where information about errors is recorded.
      </p>
      <p>
        Docker is used to deploying this application. Docker [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] is an open platform for the
development and operation of applications, the connecting link between all of the above
components. As it was already found out at the stage of analyzing the subject area, one
of the key factors in the development and support of online judge systems is security,
since the user code is executed inside the system and there is a high probability of a
wide range of attacks. Besides, deployment is an urgent issue for the project. The
system contains several modules that must function in one environment in harmony with
each other. The process of configuring and deploying without the use of third-party
applications is complex and requires additional steps, which increases the time spent
on solving the tasks. Docker was chosen by the system developers to solve the above
problems. The advantages of this tool:
      </p>
      <p>- It is possible to separate the application from the infrastructure and work with the
infrastructure as a managed application, which makes it easier and faster to launch and
test when changes are made to the system.</p>
      <p>- Isolation of applications when they run in a container provides the required level
of system security.</p>
      <p>- The ability to "package" the application in a container will simplify the process of
handing over the product to its destination at the end of work on it. This will ensure
ease of deployment and system support.</p>
      <p>
        The algorithm for processing compiler messages is presented in Figure 3.
Before implementing the compilation error handling module [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], it is necessary to
change the program code so that it contains the templates of the processed errors and
the corresponding templates of alternative error texts. After the system detects a
compilation error, the algorithm will try to find the required template in the list, if
successful, it will match it with the alternative text, substituting the necessary data into it, such
as the line number or the name of a variable, and transfer it to the interface for display
on the screen.
      </p>
      <p>
        Let's consider the operation of the algorithm using a specific example. The second
line of Table 1 shows the code in which the variable is declared 2 times. This situation
will cause an error, the output of which is shown in the third row of the table. The
message is difficult to understand [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. It is suggested to replace it with a simpler and
more understandable message presented in the fourth line of Table 1.
After the modules were implemented, they were tested and integrated into the system.
Taking into account the changes made, the system works as follows.
      </p>
      <p>Preparatory stage:
1. Deployment of the system.
2. The administrator adds several users to the system.
3. The teacher adds several practical tasks to the system.</p>
      <p>
        At the next stage, the system functions as part of the educational process. Students
solve problems, study, gain the necessary marks. In more detail, the process of solving
a specific problem by a student follows the following scenario:
1. The student writes the code to solve the problem and sends it to the system.
2. The code is checked for originality. If the verification is successful, the code is
compiled. In case of a compilation error, the compilation error handling module is
activated (figure 4).
3. If the compilation is successful, testing takes place. During testing, some errors can
also occur.
4. If the task is solved correctly and all the stages of the check have been successfully
passed, then the system displays a message about success.
Thus, in this article, an information system for online verification of programming tasks
was considered. The "OnlineJudge" system, which has an open-source code and is
implemented in the Python programming language, was chosen as a basis. For additional
processing of the compiler's messages, an algorithm for processing its messages was
developed. The algorithm is based on the selection of templates of the most popular
messages, their translation into another language, and their simplification to make it
easier for students to understand. The work of the implemented software module is
demonstrated by an example. Processed messages look simpler and clearer than the
original ones, which allows for a more effective learning process. Besides, the open
architecture of the software module allows for additional modification, for example, to
check students' responses to plagiarism [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Woolcott</surname>
          </string-name>
          , G.:
          <source>Reconceptualising Information Processing for Education. Springer Singapore</source>
          , pp.
          <fpage>168</fpage>
          . (
          <year>2020</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Shopin</surname>
            ,
            <given-names>A.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Buchatskiy</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Yu</surname>
          </string-name>
          .:
          <article-title>Electronic Information and Education Environment of the Adyghe State University</article-title>
          . The Bulletin of the Adyghe State University,
          <source>the series NaturalMathematical and Technical Sciences</source>
          , vol.
          <volume>1</volume>
          (
          <issue>154</issue>
          ), pp.
          <fpage>147</fpage>
          -
          <lpage>150</lpage>
          . (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Arakelov</surname>
            ,
            <given-names>A.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Buchatsky</surname>
            ,
            <given-names>P.Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Аrakelovа</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          А.:
          <article-title>Preparation of Professional Personnel in the Process of Realization of the All-Russian Program "Digital Economy of the Russian Federation"</article-title>
          .
          <source>In: 2nd All-Russian Proceedings on Proceedings Remote educational Technologies</source>
          , pp.
          <fpage>20</fpage>
          -
          <lpage>24</lpage>
          , Yalta, (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Pham</surname>
            ,
            <given-names>M. T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nguyen</surname>
          </string-name>
          , T. B.:
          <article-title>The DOMJudge Based Online Judge System with Plagiarism Detection, 2019 IEEE-RIVF International Conference on Computing and Communication Technologies (RIVF), Danang</article-title>
          , Vietnam, pp.
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          . (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Wu</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          , Liu,
          <string-name>
            <given-names>Y.</given-names>
            ,
            <surname>Qiu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <surname>Y.</surname>
          </string-name>
          :
          <article-title>Online Judge System and Its Applications in C Language Teaching</article-title>
          ,
          <source>2016 International Symposium on Educational Technology (ISET)</source>
          , Beijing, pp.
          <fpage>57</fpage>
          -
          <lpage>60</lpage>
          . (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Wasik</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Antczak</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Badura</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Laskowski</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sternal</surname>
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>A Survey on Online Judge Systems and Their Applications</article-title>
          . Poznan University of Technology, ACM Computing Surveys,
          <volume>35</volume>
          p. (
          <year>2018</year>
          ) URL: https://arxiv.org/pdf/1710.05913.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Rabin</surname>
          </string-name>
          ,
          <string-name>
            <surname>Md</surname>
            <given-names>R. I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Alipour</surname>
            <given-names>M. A.</given-names>
          </string-name>
          :
          <article-title>Configuring Test Generators using Bug Reports: A Case Study of GCC Compiler and Csmith</article-title>
          ,
          <source>The 36th ACM/SIGAPP Symposium on Applied Computing, Software Verification and Testing Track (SAC-SVT'21)</source>
          , 9 p. (
          <year>2020</year>
          ) URL: https://arxiv.org/pdf/
          <year>2012</year>
          .10662.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Azab</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Enabling Docker Containers for High-Performance and</article-title>
          <string-name>
            <surname>Many-Task Computing</surname>
          </string-name>
          ,
          <source>2017 IEEE International Conference on Cloud Engineering (IC2E)</source>
          , pp.
          <fpage>279</fpage>
          -
          <lpage>285</lpage>
          , Vancouver, (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Sharp</surname>
          </string-name>
          , Ch.,
          <string-name>
            <surname>Assema</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yu</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zidane</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Malan</surname>
            ,
            <given-names>D.J.:</given-names>
          </string-name>
          <article-title>An Open-Source, API-Based Framework for Assessing the Correctness of Code in CS50</article-title>
          .
          <source>25th annual conference on Innovation and Technology in Computer Science Education (ITiCSE)</source>
          , 6 p., (
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Stallman</surname>
          </string-name>
          , R.M.
          <source>: GCC 5</source>
          .
          <issue>2 Manual 2</issue>
          /2,
          <string-name>
            <given-names>Samurai</given-names>
            <surname>Media</surname>
          </string-name>
          Limited,
          <volume>442</volume>
          p. (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Asuni</surname>
          </string-name>
          , N.:
          <article-title>Quality Features of TCExam, an Open-Source Computer-Based Assessment Software</article-title>
          , pp.
          <fpage>58</fpage>
          -
          <lpage>63</lpage>
          . (
          <year>2008</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>