<!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>Towards an Online Programming Platform Complementing Software Engineering Education</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Niels Gandraß</string-name>
          <email>niels.gandrass@haw-hamburg.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Torge Hinrichs</string-name>
          <email>torge.hinrichs@haw-hamburg.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Axel Schmolitzky</string-name>
          <email>axel.schmolitzky@haw-hamburg.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Hamburg University of Applied Sciences Hamburg</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2020</year>
      </pub-date>
      <fpage>27</fpage>
      <lpage>35</lpage>
      <abstract>
        <p>-Existing online programming platforms provide many opportunities for individuals to develop and improve their programming skills. Using descriptive assignments that address different skill levels these platforms target both beginners and experienced programmers. We used one such platform featuring advanced exercises in a project course during the fifth semester of our bachelor degrees in computer science and were surprised by its success and the high motivation of the participants. Nonetheless, we also observed deficits of the platform with regard to software engineering aspects. In this paper we identify requirements for an online programming platform that complements software engineering education and match existing platforms against these proposed requirements. Index Terms-education, online assessment, online programming platform, programming, software engineering education, team programming</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        I. INTRODUCTION
“It was observed that game based learning act as
a good alternative over regular lab assignments
and rote learning. Through competitions and coding
challenges, students tend to develop interest and
therefore are expected to learn more quickly and
think more creatively. Hence, digital game based
learning should be incorporated in our education
system as it offers unique structure to compliment
traditional strategies, infusing teaching with energy,
spark innovative thinking and provide diversity in
teaching methods.” — Papastergiou, 2009 [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
      </p>
    </sec>
    <sec id="sec-2">
      <title>A key aspect of software engineering is programming [2].</title>
      <p>
        In any software development team at least one person actively
has to produce source code and all team members are required
to have an understanding of its complexity. The ability to
program is necessary to follow technical details as well as
to judge the feasibility of complex systems. Developers who
are strong in both understanding and producing source code
will get productive faster in new projects or while analysing
complex scenarios [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Therefore, the ability to program is
the most important skill that software engineering students
need to acquire. The better the programming education in
a curriculum, the more promising the software engineering
education, which later builds upon it, will be.
      </p>
      <p>The individual ability to program can be trained with the
help of an Online Programming Platform (OPP). We define an
OPP as a web-based platform that offers several assignments
of varying complexity, a possibility to enter code that solves
an assignment, and an automatic feedback mechanism for the
proposed solutions. Such platforms can be used by students
who want to gain more experience in programming.</p>
      <p>Currently, a growing number of OPPs can be observed.
Some of these aim primarily at programming beginners who
are just starting to learn the very basics of coding; in the
following we refer to such platforms as Introductory OPPs.
Others (we call them Professional OPPs) aim at
recruiting experienced programmers who program professionally,
have substantial experience in more than one programming
language and who still like to solve complex problems in
their spare time. Such professional programmers typically
know how important maintainable code and a solid
software architecture is. We miss something in between (an
intermediate OPP) for what we call advanced programmers,
loosely classified as having at least one year of programming
experience in one language, in the middle of a computer
science curriculum. Students at this stage are just starting
to abstract from concrete mechanisms of one programming
language, ideally through comparison with another language.
They get in contact with design patterns, they learn that an
algorithm can be implemented in different ways (some of them
even unnoticed wrong), struggle to write readable code, start
breaking down larger programs into modules, and designing
their interfaces. An intermediate OPP should support all of
this with appropriate assignments. Such a platform should
explicitly address the code quality of the submitted solutions
and it also should support programming in teams.</p>
      <p>In this paper we start by describing the benefits and
shortcomings we observed while using an OPP within a bachelor
project at the Hamburg University of Applied Sciences (HAW
Hamburg). Taking these findings as a baseline, we then derive
requirements for an OPP that incorporates software
engineering aspects and offers support for collaborative team work
to be used in the computer science education at universities.
Lastly, already available platforms are analysed and compared
against our derived requirements.</p>
    </sec>
    <sec id="sec-3">
      <title>II. BACKGROUND: THE PHATAI PROJECT</title>
    </sec>
    <sec id="sec-4">
      <title>The Bachelor in Computer Science (BCS) degrees at the HAW Hamburg traditionally have a strong emphasis on programming, most modules in the curricula rely on the programming abilities of their participants. But still students in higher</title>
      <p>semesters experience difficulties to model abstract or complex
problems in source code.</p>
      <p>In the fifth semester of all HAW Hamburg BCS curricula,
students have to attend a project module (we call the formal
module BCS Project or just Project in the following), in
which they are supposed to work independently in a team and
solve a larger problem, using software engineering techniques
imparted during the third and fourth semester. The subjects
of the projects depend on individual offers by staff members
of the department and vary every semester. Students may
choose from this range of offers and only a short list of the
initially offered projects (typically the most voted ones) can
take place. The Project awards 9 ECTS Credit Points (CPs)
that are typically translated to a weekly workload of 12 hours
for the participants; only three of these hours are contact time
with the lecturers.</p>
      <p>
        In one of these projects, during the summer term of
2019, we conducted an experiment [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]: the participants had
to solve problems of increasing complexity on the OPP
CodinGame [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], first simple quizzes as individuals to become
acquainted with the platform, later, in teams of four, three of
the much more complex arena games. Before we can describe
our project concept in detail, we have to describe some core
concepts of CodinGame.
      </p>
      <sec id="sec-4-1">
        <title>A. CodinGame: An Online Programming Platform</title>
        <p>CodinGame is an OPP with a focus on recruiting
programmers, thus aiming primarily but not exclusively at experienced
coders. It offers a large variety of programming assignments,
ranging from simple ones with just conditions and loops,
up to complex scenarios that require, for example, graph
algorithms or machine learning. It further offers a wide variety
of assignment conduction types, from single person exercises
over programming battles in small groups up to arena games
where the success of an implementation can be ranked in
world-wide leagues. For most assignments the success of a
solution is measured with unit tests, whereas the solutions
of the arena games battle against a large number (typically
around 100) of other solutions in the same league to get their
score and rank. Beginners of an arena game always start in
the Wood League and can climb up through the Bronze, Silver
and Gold League into the League of Legends. In some arena
games, the complexity of the assignment increases in higher
leagues through the introduction of additional rules.</p>
        <p>One key feature of CodinGame is its use of standard-IO
(i.e. the console): each assignment describes the input format
a proposed solution will get in textual form via standard input
and specifies the (syntax of the) output the solution has to
produce textually via standard output. This simple unification
concept allows the platform to support a large variety of
programming languages for the same assignment; most OPPs
are based on this general principle. At CodinGame a user can
choose from up to 27 languages.</p>
        <p>
          Another key feature of CodinGame is the visualization
of solutions. Many assignments, especially the arena games,
offer an animated, two-dimensional view of the programmed
entities, as shown in figure 1. Programmers can see how their
solutions perform; such a visualization of object interaction
is also a well-received key concept of the programming
environment Greenfoot [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. Additionally, interactive controls
allow pausing and continuing the execution, stepping forward
or backward, rewinding to the beginning or fast-forwarding to
the end of a battle. This gives the programmer fine-grained
control over the execution and allows to analyse the effects of
an improvement or the tactics of the opponent.
        </p>
        <p>A user of the platform can run a proposed solution against
a subset of the test cases of an assignment, which includes
the compilation of the source code. If the code compiles and
stands these tests, the user then can submit the code and it
will be run against all test cases. In arena games, as was said
before, the solution will also battle against other solutions.
Thus, especially for the arena games, a programmer typically
goes through multiple program-submit cycles, over a longer
period of time (from hours over days up to even weeks).</p>
        <p>We chose this platform for our project because one of us
had substantial personal experience with it.</p>
      </sec>
      <sec id="sec-4-2">
        <title>B. Integration Into a Classroom Teaching Scenario</title>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>For our new version of a BCS Project we coined the</title>
      <p>acronym PHATAI, for “Program Hard And Talk About It”.
The “program hard” part can easily be served simply by using
any OPP; but we wanted the participants to not only improve
their individual programming skills, but also their ability to
talk about their design process and design decisions with the
goal of giving useful information to others, i.e. their ability to
act as team players and benefit from it.</p>
      <p>After a warm-up phase of two weeks with individual coding
of CodinGame quizzes, we split the participants up into three
teams of four and kept these teams for the rest of the semester.
The teams went through three iterations, each with the same
basic structure - Coding, Presentation of Results, Improve</p>
      <sec id="sec-5-1">
        <title>Coding, Short Presentation of Improvements - as shown in</title>
        <p>figure 2.
Sa e cmeii</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>The initial coding phase lasted two weeks. After the first</title>
      <p>week, the lecturers held an interim stand-up meeting with
each team separately to get an impression of the progress.
After the two weeks, in a plenary session each team had
to give a 30 minutes presentation of the design and the
concepts (algorithms, data structures, . . . ) of its solution. Each
team then got another two weeks to improve its solution
(again with interim stand-up meetings), ideally also based
on the information gathered during the talks. Finally, a 15
minutes presentation had to be given by each group on the
improvements. Even though CodinGame offers 27 programming
languages, we decided that Java had to be used exclusively in
all coding challenges. This allowed for a better comparison of
the developed solutions.</p>
      <p>One highly motivating effect during such an iteration was
that each solution was automatically ranked by the platform;
a higher rank typically indicated a better solution. But if the
final rank after four weeks were the only criterion for success,
the project would have been all about coding only. Therefore
we defined success differently: After the presentations, all
participants had to mark the usefulness of the talks of the
other groups. After three iterations of being graded by peers,
the team with the highest “reputation” won a small prize (a
set of Rocket Books, sponsored by a friendly company located
in Hamburg).</p>
      <p>Because there is no support for team programming on
CodinGame, the teams had to organize their collaboration on
their own; the lecturers just required the use of a GitLab
instance where they were granted access to the code repositories.
This allowed additional plenary sessions in which the quality
of the code could be discussed.</p>
      <p>At the end of the semester, each group had given a total
of six presentations. The quality of the presentations clearly
improved over the time of the project: The presented UML
diagrams and code snippets became more readable; the
students became more confident and their talks more focused.
Furthermore, we observed that the quality of the team work
improved: at the start of the first arena game we observed
mainly “lonesome hacking” and almost no team work; at the
end of the third arena game iteration the students made fair
use of the git repository, started building architectures that
also allowed parallel work on different components and tried
to comply with established coding conventions.</p>
      <sec id="sec-6-1">
        <title>C. Lessons Learned</title>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>The overall success of the project was a surprise. Pro</title>
      <p>gramming on a platform with attractive visualizations of the
solutions in combination with competitive rankings turned out
as highly motivating for the students. The project gave the
participants the time to delve deeply into coding and problem
solving, so that they even liked to give talks about it.</p>
      <p>But there were also some downsides. One of the arena
games was taken off the platform in the middle of its iteration;
the lecturers had no control over it. The platform offers no
support for team work: neither does it support the use of a
repository nor does it encourage to split an implementation
into suitable modules since the editor allows just one
compilation unit. The quality of the code is completely irrelevant
the ranking depends solely upon the effective textual output
of a solution.</p>
    </sec>
    <sec id="sec-8">
      <title>III. IDENTIFYING PLATFORM REQUIREMENTS</title>
    </sec>
    <sec id="sec-9">
      <title>One outcome of the PHATAI project, as described in the</title>
      <p>
        previous section, is that we will repeat it in a similar form in
the summer term 2020. Some aspects will be improved, but we
will again stick with CodinGame for that pass. Nonetheless,
we see a clear demand for an OPP that offers improved
support for aspects relevant to software engineering education.
Therefore, we identified basic requirements for such an OPP
that would better suit our needs. These requirements are based
on our experiences gathered from the PHATAI project as well
as from the usage of Moodle1 based online Java programming
assignments [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] in introductory programming education (first
and second semester).
      </p>
      <sec id="sec-9-1">
        <title>A. Stakeholder Analysis</title>
        <p>The first step towards requirements is an analysis of the
stakeholders including their individual goals and needs. Each
stakeholder has a different point of view and pursues different
objectives working with the platform. While the number of
stakeholders is potentially larger, the following sections focus
on the most important ones. We identified four main roles,
namely: Student, Lecturer, Developer, and Administrator. In
the following we describe their primary goals as well as their
behaviour during usage and operation of the aspired platform.</p>
        <p>1) Student: The role Student denotes users of the platform,
i.e. persons spending a considerable amount of their time
on solving provided assignments to improve their skills. As
users could also be interested lecturers or other non-students
having access, this role has to be distinguished from the formal
student status at universities. We still decided to name this role
Student, as students are the main target group of the platform.</p>
        <p>Students are participants in any given course that is available
via the OPP. If using the platform within a university course
1Moodle project website: https://moodle.org/ (visited on 10/18/2019)
is mandatory for students, they then can be further categorized
into two subsets. The first consists of students that are highly
motivated and that aim at learning new skills and improving
their existing ones. In contrast, the second set contains students
whose primary goal is to pass the course or who lack extra
time to spend improving their skills due to the workload of
other courses or for personal reasons.</p>
        <p>2) Lecturer: A lecturer wants to utilize such a platform
to improve the quality of his course by giving students an
opportunity to practice and repeat lessons, or even allowing
for an optional deeper dive into a certain topic. In our context
every person that provides coherent sets of exercises for the
OPP falls into this category. From a software engineering
lecturers point of view it is desirable to shift the focus away
from sole technical details towards a more abstract, method
or concept based approach incorporating software engineering
aspects.</p>
        <p>
          3) Developer: An OPP should be designed for continuous
improvement and development. Developers for an OPP can be
divided into platform developers and assignment developers.
The primary goal of a platform developer is to implement new
features and fix bugs that were found during operation of the
platform. A platform developer also provides the ecosystem
for assignment developers that design and implement new
assignments for the platform. Ideally it is (technically) less
demanding to develop a new assignment than to develop the
platform itself. Such a distinction has been successful for
example in the Greenfoot programming environment [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ].
        </p>
        <p>4) Administrator: Administrators are responsible for the
operation and maintenance of the platform. This includes
deployment of the OPP software as well as the hardware and
other resources required to run it, e.g. servers or network
bandwidth. Their key objective is to provide the needed
resources and keep the required amount of maintenance effort
low.</p>
      </sec>
      <sec id="sec-9-2">
        <title>B. Deriving Requirements</title>
        <p>We used the observed benefits and shortcomings, identified
in section II, as a baseline for our requirements. These include
both a selection of important features and functional
requirements. In the following, they are categorized according to their
appropriate stakeholders, as identified above. The requirements
mainly source from our own experience as lecturers, students
and admin staff, but we also conducted informal interviews
with other lecturers and students to reflect our ideas.</p>
        <p>1) Students: The platform shall incite the students to solve
the provided assignments by providing interesting/challenging
assignments that are either realistic or entertaining or, ideally,
both (STD-01). Visual feedback mechanisms shall help to
understand the assignments and also guide the workflow
(STD-02). A simple and lightweight on-boarding (registration
and initial orientation) is required for students in order to
minimize the entrance barrier (STD-03). Furthermore, the
platform shall support both pseudonymous (e.g. trough local
user accounts) and personal (e.g. trough university LDAP /
single sign-on) authentication mechanisms to allow students
to complete exercises without the possibility to link negative
results to their real identity (STD-04). This can be especially
relevant for students of the second identified group, which are
still feeling insecure about programming.</p>
        <p>From a students perspective the platform has to be easy to
understand and use during the work on assignments.
Therefore, no complicated setup or configuration should be required.
In addition, the development environment shall be
supportive, through functionality such as syntax highlighting,
autocompletion and “search and replace” as known by existing
developer tools (STD-05). This is particularly important for
students of the first group, which already have programming
knowledge and used professional development environments
before. It shall also be possible for a student to get hints or
additional assistance, when stuck during an assignment, in order
to primarily support programming beginners (i.e. the second
student group) and keep up their motivation (STD-06). The
solution progress shall also be visible at any time (STD-07).
In case of syntax errors, the editor shall assist the student in
solving the issue (STD-08). Evaluation of the current solution
and generating feedback accordingly shall be possible at any
time and be quickly available (STD-09).</p>
        <p>Another central requirement is that students should be able
to work in teams of variable sizes (STD-10). Accordingly, it
is required that the platform can handle solutions build from
multiple files coming from various input buffers (STD-11).
Moreover, the integration of a version control system (e.g.
Git), that enables features such as file revising, branching,
code collaboration, and rollback, is a desired feature (STD-12).
Furthermore, it shall be possible for teams to compare their
solutions against each other in the form of code reviews and
course-wide competitions (STD-13).</p>
        <p>2) Lecturers: The platform shall support lecturers in a way
that they can utilize it within their courses while generating
as little work overhead as possible (LCR-01). Its primary
objective shall be the incorporation of practical programming
assignments that are also able to integrate software engineering
concepts or different methods and approaches (LCR-02).</p>
        <p>A lecturer should be able to manage course members and
teams as well as the assignments relevant for the course.
Therefore, adding, modifying and deleting assignments is
required (LCR-03). Available assignments shall be exchangeable
between lecturers (LCR-04). In addition, it shall be possible
to provide additional. Course-specific information for an
assignment (hints, bonus material, links, book recommendations
on specific topics) (LCR-05). In this context a lecturer shall
be able to set limitations on the workflow, e.g. to restrict the
order in which the assignments may be solved or to set timing
constraints (LCR-06).</p>
        <p>Different types of assignments shall be available. These
shall include at least the following (LCR-07):
• Solo Assignments</p>
        <p>– One student solves the assignment alone.
• Competitive Assignments
– Solutions of multiple students are compared against
each other or put into a competitive scenario.
• Collaborative Assignments
– Multiple students work together to create a common
solution.</p>
        <p>Orthogonally, assignments can be categorized into</p>
      </sec>
      <sec id="sec-9-3">
        <title>Language-Independent Assignments (LIAs) and Language</title>
        <p>Specific Assignments (LSAs), and both types should be
supported by the platform (LCR-08). This includes that LIAs
must be agnostic to the used programming language and
therefore grading of a proposed solution can only be done
using black-box tests via Standard-IO. In contrast, LSAs can
define various constraints on the source code of a solution
that have to be respected while solving an assignment;
this includes the mandatory use of a specific programming
language and the mandatory use or the exclusion of a
specific language construct. The latter implies the need for a
sophisticated source code analysis tool support that allows to
define the necessary white-box tests.</p>
        <p>One of the key benefits of such a platform should be that it
allows transparency for the lecturer as well as the students.
The evaluation criteria should be publicly visible for all
participants. The passing criteria should be independent of the
lecturer and the learning outcome becomes comparable. This
general requirement dictates more specific ones. A lecturer
shall be able to define evaluation criteria and weigh them
(LCR-09). For example, it shall be possible to reward “clean
code” or a “smart” solution. Another aspect of this requirement
is that the lecturer shall be able to trace the progress of each
student on the assignment (LCR-10).</p>
        <p>3) Developer: The requirements of platform developers
focus on developing, improving and shipping the platform.
The platform developer team has to be able to roll out a
new version or parts of the platform seamlessly without any
interaction by the user (DVL-02). It must also be possible
to run and test individual parts of the platform separately and
independent of each other in local test environments or through
CI-pipelines (DVL-03).</p>
        <p>Platform developers furthermore provide an ecosystem for
assignment developers who shall be able to create and maintain
available assignments without the need to get in touch with
core components of the platform (DVL-04). Created
assignments shall be releasable on the platform without modifying
the platform code (DVL-05).</p>
        <p>4) Administrators: Administrators define requirements that
are primarily important for the operation and back-end design
of such a platform. For them it is important that the OPP is
self-contained and every execution of untrusted source code is
encapsulated inside a sandbox environment, therefore running
independently of the actual platform itself (ADM-01). This is
required so that the platform can not be easily taken over by
a malicious user.</p>
        <p>Submitted programs and source code assignments also need
to be run independent of each other without any possibility
of interaction besides well-defined APIs given by the
exercise (ADM-02). Furthermore, the (repeated) execution of a
submitted solution must not depend on the state of previous
executions. Consequently, proper environment initialization
and clean-up is required (ADM-03).</p>
        <p>Resources that are available to executed assignments shall
be limited and it must be possible to stop the execution of
an evaluation or grading task at any given time (ADM-04).
For the sake of resource efficiency, a flawed execution shall
be detected and stopped as fast as possible (early stopping)
(ADM-05). This includes pre-execution checks (e.g. static
code analysis) as well as runtime checks (e.g. interdependent
test cases).</p>
      </sec>
    </sec>
    <sec id="sec-10">
      <title>IV. ANALYSIS OF EXISTING PLATFORMS</title>
    </sec>
    <sec id="sec-11">
      <title>After the identification of our requirements for an advanced</title>
      <p>OPP we systematically analysed existing platforms. We did
this with two intentions:
1) To find out how far these platforms already fulfil our
requirements.
2) To get more inspiration and insight on how such
platforms can be designed.</p>
      <p>
        Because not all platforms that have been described in
publications are openly available, we could only take a closer look
at OPPs that are publicly accessible. We further selected the
platforms according to their popularity across different scoring
websites [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] and took different distribution platforms like
mobile app or websites into consideration. We ended up with
seven platforms that we devided roughly into two groups:
The Introductory OPPs LightBot [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], Edabit [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], and
CodeMonkey [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] that are designed for programming beginners;
and the Professional OPPs CodinGame [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], CoderByte [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ],
HackerRank [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], and CodeWars [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] that target professional
programmers. An overview of the analysed platforms and
some of their properties is given in table I. For the sake
of readability and compactness, we merged the identified
requirements in Section III into the following criteria:
Number of Supported Languages: This metric provides a
fairly good first impression of the capabilities of a platform.
Recruiting: Whether the main business case of the platform
is recruiting.
      </p>
      <p>Competition: Whether solutions by users can compete against
each other.</p>
      <p>Visual Feedback: Whether some form of graphical feedback
to the user is provided that helps to understand the assignment
and supports debugging of the written source code.
Version Control: Whether an external version control system
can be connected to the platform.</p>
      <p>Team-play: Whether the platform supports group assignments
in any form.</p>
      <p>Supportive Editor: Whether the editor of the platform offers
IDE-like features such as syntax highlighting, auto completion
and search &amp; replace.</p>
      <p>Code Quality Feedback: Whether the automatic feedback
mechanism takes also the quality of the source code of the
solution into account, not just its functionality.</p>
    </sec>
    <sec id="sec-12">
      <title>Most available OPPs have in common that they provide easy to use code editors with usability features such as autocompletion and syntax error highlighting.</title>
      <sec id="sec-12-1">
        <title>A. Introductory Platforms</title>
      </sec>
    </sec>
    <sec id="sec-13">
      <title>Introductory OPPs mainly support only one programming</title>
      <p>language and typically provide instantaneous and pleasing
visual feedback to the user, as exemplary shown in figure 3.
They offer a low entrance barrier that aims at keeping novice
programmers motivated. Assignments range from control flow
handling to basic algorithmic thinking.</p>
      <p>Figure 3 shows the LightBot UI. The goal is to navigate
the robot to all blue tiles and transform them into yellow
tiles by performing only the actions provided at the bottom
of the screen. In the example in Figure 3, the robot can move
forward, transform a blue tile into a yellow one with the bulb
action, turn left or right, and jump. All actions of a solution
need to fit into the yellow area on the right side of the screen.
All solutions are evaluated in isolation and never compared to
or put into competition with other solutions.</p>
      <p>Comparing this platform to the requirements in III shows
that only some of the points match. The platform is easy to
use (STD-01, STD-03) and provides a visualization of the
solution and the problem (STD-02). If the user continuously
answers wrong, some help text is displayed (STD-05). Due
to the simplicity of the platform other requirements are not
applicable. For example, it is not possible to produce source
code with syntax error, because the language consists of
predefined building blocks only. The platform is a standalone
application run in a browser or on a mobile device. There is
no interaction with others or the server once the application
is downloaded and run. All requirements regarding the
infrastructure or development are not applicable.</p>
      <sec id="sec-13-1">
        <title>B. Professional Platforms</title>
      </sec>
    </sec>
    <sec id="sec-14">
      <title>The professional OPPs are frequently backed and utilized</title>
      <p>by large companies to identify potential software developers
for recruiting. They allow for solutions using various
programming languages, but are often limited to console based output.</p>
      <p>The only professional OPP that provides pleasing visual
feedback is CodinGame, as shown in figure 1. The complexity of
available assignments ranges from simple ones that can easily
be completed within 5 minutes to more advanced challenges
including agent behaviour modelling and various algorithmic
problems. Furthermore, some platforms also offer exercises
targeting specific skills such as regular expressions, for
example found at the HackerRank platform. Professional OPPs
usually incorporate some sort of competition among users.</p>
      <p>This can be found in the form of global score-boards, user
levels, badges, achievement systems, and skill certifications.</p>
      <p>On top of that, some platforms that feature AI programming
exercises allow the solutions of multiple users to compete
against each other and rank them in a platform wide league
system. Moreover, platforms feature regular programming
challenges users can take part in and compete against each
other. This strong inter-user competition is utilized on most
professional OPPs to keep advanced programmers motivated.</p>
      <p>
        The professional platforms are based on basic gamification
aspects. The users generally enjoy solving the assignments
(STD-01). They are web-based and thus run in a browser
(STD-03). CodinGame provides a graphical feedback
mechanisms (STD-02), the others are only text based. Feedback on
syntax errors is provided by the compiler error shown in a
console output (STD-07). This is not supportive but at least
shows the error. Assisting features of the editors are minimal
(CodinGame and HackerRank provide code completion
(STD05) and syntax highlighting, some others only only
highlighting) or not existing. None of the platforms supports teamwork
in any form (STD-09) or a real version control system such
as git (STD-11), splitting a solution into several text files
is also not possible (STD-10). The platforms offer ways to
post a solution into a forum and discuss different approaches
(STD-12). On all professional platforms it is possible to create
and manage own assignments and support during the creation
process is offered (LCR-01). Additional information can be
provided in the detail description field of each assignment
(LCR-05). The assignments are available for all users so pipeline or the execution of the different tasks are discussed
they are exchangeable with others (LCR-04). Other aspects vaguely. The paper also includes a survey of BotZone in
like restricting certain language features, clean code, different practice. The platform was used in an AI learning course and
assignment types or forcing specific software engineering the authors showed that the use of BotZone was fun and also
methods is not possible (LCR-02, LCR-06, LCR-07, LCR- stressful for a large part of the students.
10). Other requirements for lecturers are not applicable. From BotZone is an excellent example of a platform that focuses
an administrative and development point of view the platforms on competing solutions. In the design of any new platform
are commercially used, so the internal features and processes that is supposed to incorporate competition aspects the lessons
are not publicly available. But the execution of a solution has learned from this work should be considered.
limited use of resources and execution time (ADM-05). 3) Kodr: The paper of Amr Draz et al. [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] presents a
modular learning platform that combines several features from
C. Further Platforms different other platforms to teach Python programming. Kodr
      </p>
      <p>During our analysis we discovered further platforms that helps students to debug their code by using a visualization of
are documented in scientific publications but are not openly the written code. Students are able to review and replay each
available to the public. Therefore, these could not be included step the program performs. It also visualizes the memory and
into our detailed analysis. Nonetheless, the platforms depicted stack usage. In addition, the paper features two surveys on how
below feature novel approaches that we considered noteworthy to evaluate the use of the platform and its different exercise
and inspirational during our research. types.</p>
      <p>
        1) EasyHPC: Zou et al. [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] created a platform to give The evaluation method of Kodr can be helpful in examining
students a hand-on experience in high performance computing. the learning behaviour of students in different assignments.
The most important feature of this platform is that they are D. Summary
using one of the strongest supercomputers worldwide (Rank
4, June 2019) [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] for their calculations. The platform shall Even though a lot of inspiration could be found during
be able to support four forms of education: online courses, this analysis, none of the platforms examined fulfils all our
quiz database, interactive community and a virtual laboratory. requirements; and we also see no extension path for any of
Online courses are lectures provided by a university or a the platforms to suit the needs for an OPP complementing
lecturer. The quiz database provides questions for an according software engineering education. No platform supports
collabtopic. The community shall enable students to discuss their orative team work or incorporates version control systems
solutions in a forum. The virtual laboratory provides a virtual (VCS), such as Git or SVN. The lack of such functionality
desktop environment, which can be predefined by teachers prevents the improvement of many valuable skills a software
to allow for an easy start into an exercise. In the paper, developer is required to have, such as conducting code reviews
design choices and requirements of students and lecturers and managing team workflow. Moreover, none of the OPPs
are presented. Students can select online courses offered by take execution performance, general code quality or software
lecturers and complete both assignments and small tasks architecture into account when judging a proposed assignment
step-by-step. Teachers can publish new courses, update class solution. The test verdicts solely depend on whether the
materials and deliver course assignments. One unique feature submitted programs solve the assignments or not.
of this platform is that it is possible to configure high- V. RELATED WORK
performance computing environments and upload programs Our requirements seem to lighten up a blind spot in the
running in parallel. platform landscape, but several research projects had at least
      </p>
      <p>Regarding our requirements, this platform is not enough partly similar goals or tackled problems that also result from
focused on teaching and supporting software engineering. our requirements.</p>
      <p>
        However, the design process presented in the paper should
be taken into consideration in the design of new platforms. A. Automated Assessment in a Programming Tools Course
2) BotZone: BotZone was presented in 2018 by Zhou et José Luis Fernández Alemán [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] used an automated
assessal. [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] of Peking University. The platform focuses on studying ment approach on a programming tools course, which teaches
AI and machine learning. The goal is to design and build a the use of established tools like make, gcov, gbd or gcc using C
multi-agent game AI platform that is capable of evaluating as the given programming language. The assessments include
different implementations of game AI by applying them to testing, debugging, deployment and versioning tasks. Students
various scenarios. The implementations compete against each are able to access the assignments trough a web based platform
other and achieve ranks in an Elo ranking system. In this and solve the problems on their own. The solution is then send
way the best approach of the submitted implementations can to an ”Online Judge” that compiles and executes the program
be evaluated. Students are able to write their solutions in with predefined input cases. The results get analysed and a
different languages, such as C/C++, Java, C# JavaScript, or feedback is generated for the student notifying if the program
Python. The main focus of the platform is the competitive is correct or not.
aspect. Therefore, the structure and architecture is optimized This is a very basic approach but is underlined with a case
to achieve this goal. Detailed technical information on the study of 46 participants showing that this approach lead to
better results comparing to the learning outcome participants
who were trained in a traditional way. This paper shows
that even basic assistance in programming education helps to
improve the learning outcome for students.
      </p>
      <sec id="sec-14-1">
        <title>B. The BOSS Online Submission and Assessment System</title>
        <p>
          Joy et al. [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] use a more complex approach for an online
assessment system. They identified three fundamental
components for an assessment. The first being the correctness of the
solution. This is defined by the specification of the assignment
and is checked by black and white box tests. The second
component is the style, which they sub-classify in two parts,
language independent and language specific characteristics.
Independent features are for example efficiency of the program
or the choice of an algorithm used. Among others, Language
specific features are the code structure or the use of external
libraries. The last component, authenticity, describes tasks of
organizational nature such as managing the users, verifying
the identity of users and checking for plagiarism. The paper
shows which requirements can be derived from different
usergroups interacting with the platform for example the staff and
the students. These requirements define different views of the
system, which dictate the basic architecture and the individual
components inside the system.
        </p>
        <p>In comparison to the requirements presented in this work,
some are in common and the lessons learned can be reused,
for others, such as teamwork or version control and
management, new approaches have to be developed. The detection
of plagiarism, a core requirement in the BOSS system, is
deliberately excluded from our requirements. We think that
the focus on platforms that provide helpful, non-mandatory
additional resources for learners reliefs from many problems
formal grading systems have to face.</p>
      </sec>
      <sec id="sec-14-2">
        <title>C. Towards Practical Programming Exercises and Automated</title>
      </sec>
      <sec id="sec-14-3">
        <title>Assessment in Massive Open Online Courses</title>
        <p>
          Staubitz et al. [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] state several benefits and shortcomings
of different approaches of designing an online programming
platform for massive user use. They concluded that they need
a flexible solution that can handle different scenarios based
on the expertise of the course. Programming beginners prefer
a web based editor where no set up is required. Advanced
users favour development tools used on their own machine.
The presented platform consists of an automated testing suite
that can check the given solution with a number of different
tests on unit and acceptance level. This paper conquers issues
we also identified as relevant in our requirements, such as
scaling the application and modifying it on demand, depending
on the course and the experience of the students. The results
can help to improve strategies dealing with those issues in
future systems.
        </p>
      </sec>
      <sec id="sec-14-4">
        <title>D. Giving Automated Feedback About Student Code Identi</title>
        <p>fiers: a Method Based on the Description of Programming</p>
      </sec>
      <sec id="sec-14-5">
        <title>Problem</title>
        <p>
          Nascimento et al. [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] presented a system that can help
programmers to improve the readability of their programs. The
system analyses student assignments and generate automated
feedback on the used identifier names. A survey shows that
this can help to improve the code quality of the assignments
and enhances the readability of the code in contrast to manual
reviews by lecturers. The first step is a normalization of
the assignment description and extract a reference vocabulary
from it. This step contains normalization, tokenization and
stemming techniques. In the second phase, the identifier names
in the source code are estimated in a mapping to the words in
the vocabulary. Words that can not be mapped to a vocabulary
entry are considered to be inappropriate and a warning is
created to signal the students to reconsider the identifier name.
In a case study also presented in the paper this leads to an
accuracy of 75% compared with a manual assessment by the
lecturers.
        </p>
        <p>This paper presents useful techniques and methods for
performing analyses of non-functional characteristics of student
source code. The approaches used for normalization of source
code and the deduction of code quality can be used in future
systems.</p>
      </sec>
    </sec>
    <sec id="sec-15">
      <title>VI. CONCLUSION</title>
      <p>Online programming platforms provide vast opportunities
for individuals to develop and improve their programming
skills. In this paper, we showed that many platforms feature
novel approaches that provide users with modern and highly
motivational game-based programming assignments. But none
of the available platforms addresses essential software
engineering aspects such as code quality, maintainability, adequate
program architecture, team based programming, or code
reviews.</p>
      <p>Based on our experience gathered from successfully
using the CodinGame platform within a bachelor project, we
proposed requirements for an OPP that better complements
software engineering education. We assume that an OPP, when
developed with respect to these requirements, can significantly
raise the quality of teaching and be beneficial for both students
and lecturers.</p>
      <p>In future work we aim at creating a platform prototype
which is based on the proposed requirements and at evaluating
it with students in software engineering courses. Gathered
feedback will be used to refine the requirements and improve
the created platform. A long term goal is to establish such
an online programming platform in the BCS degrees at the
HAW Hamburg as an assistance in all programming-related
modules.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Papastergiou</surname>
          </string-name>
          , “
          <article-title>Digital Game-Based Learning in high school Computer Science education: Impact on educational effectiveness and student motivation”</article-title>
          ,
          <source>Computers &amp; Education</source>
          , vol.
          <volume>52</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          ,
          <year>2009</year>
          , ISSN:
          <fpage>0360</fpage>
          -
          <lpage>1315</lpage>
          . DOI: https://doi.org/10.1016/j.compedu.
          <year>2008</year>
          .
          <volume>06</volume>
          . 004. [Online]. Available: http://www.sciencedirect.com/ science/article/pii/S0360131508000845.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A.</given-names>
            <surname>Schmolitzky</surname>
          </string-name>
          , “Zahlen,
          <article-title>Beobachtungen und Fragen zur Programmierlehre”</article-title>
          , in Tagungsband 15. Workshop ”Software Engineering im Unterricht der Hochschulen”,
          <year>2017</year>
          , pp.
          <fpage>83</fpage>
          -
          <lpage>90</lpage>
          . [Online]. Available: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>1790</volume>
          /paper10.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>D. I. K.</given-names>
            <surname>Sjoeberg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. E.</given-names>
            <surname>Hannay</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Hansen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V. B.</given-names>
            <surname>Kampenes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Karahasanovic</surname>
          </string-name>
          , N. .
          <string-name>
            <surname>-</surname>
          </string-name>
          .
          <string-name>
            <surname>-</surname>
          </string-name>
          .
          <string-name>
            <surname>Liborg</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A. C.</given-names>
            <surname>Rekdal</surname>
          </string-name>
          , “
          <article-title>A Survey of Controlled Experiments in Software Engineering”</article-title>
          ,
          <source>IEEE Transactions on Software Engineering</source>
          , vol.
          <volume>31</volume>
          , no.
          <issue>9</issue>
          , pp.
          <fpage>733</fpage>
          -
          <lpage>753</lpage>
          , Sep.
          <year>2005</year>
          . DOI:
          <volume>10</volume>
          .1109/TSE.
          <year>2005</year>
          .
          <volume>97</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>T.</given-names>
            <surname>Hinrichs</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Schmolitzky</surname>
          </string-name>
          , “
          <article-title>Einbindung einer Online-Programmierplattform in die Präsenzlehre - ein Erfahrungsbericht”</article-title>
          ,
          <source>in Proceedings of the Fourth Workshop "Automatische Bewertung von Programmieraufgaben" (ABP</source>
          <year>2019</year>
          ), Essen, Germany, October 8-
          <issue>9</issue>
          ,
          <year>2019</year>
          , Gesellschaft für Informatik e.V.,
          <year>2019</year>
          . DOI:
          <volume>10</volume>
          . 18420/abp2019-8.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5] CodinGame, [Online]. Available: https : / / www . codingame.com/ (visited on 10/15/
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Kölling</surname>
          </string-name>
          , “
          <article-title>The Greenfoot Programming Environment”</article-title>
          ,
          <source>Trans. Comput. Educ.</source>
          ,
          <volume>14</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>14</lpage>
          :
          <fpage>21</fpage>
          ,
          <string-name>
            <surname>Nov</surname>
          </string-name>
          .
          <year>2010</year>
          , ISSN:
          <fpage>1946</fpage>
          -
          <lpage>6226</lpage>
          . [Online]. Available: http://doi.acm.
          <source>org/10</source>
          .1145/1868358.1868361.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>N.</given-names>
            <surname>Gandraß</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Schmolitzky</surname>
          </string-name>
          , “
          <article-title>Automatisierte Bewertung von Java-Programmieraufgaben im Rahmen einer Moodle E-Learning Plattform”</article-title>
          ,
          <source>in Proceedings of the Fourth Workshop "Automatische Bewertung von Programmieraufgaben" (ABP</source>
          <year>2019</year>
          ), Essen, Germany, October 8-
          <issue>9</issue>
          ,
          <year>2019</year>
          , Gesellschaft für Informatik e.V.,
          <year>2019</year>
          . DOI:
          <volume>10</volume>
          .18420/abp2019-1.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <source>[8] The 10 most popular coding challenge websites for</source>
          <year>2020</year>
          , [Online]. Available: https://www.freecodecamp. org / news / the - 10
          <string-name>
            <surname>- most -</surname>
          </string-name>
          popular
          <string-name>
            <surname>-</surname>
          </string-name>
          coding
          <string-name>
            <surname>-</surname>
          </string-name>
          challenge
          <string-name>
            <surname>-</surname>
          </string-name>
          websites-of-2016-fb8a5672d22f/ (visited on 10/29/
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <source>[9] The 10 Best Coding Challenge Websites for</source>
          <year>2018</year>
          , [Online]. Available: https : / / medium . com / coderbyte / the - 10
          <string-name>
            <surname>- best -</surname>
          </string-name>
          coding
          <string-name>
            <surname>-</surname>
          </string-name>
          challenge
          <string-name>
            <surname>-</surname>
          </string-name>
          websites
          <string-name>
            <surname>-</surname>
          </string-name>
          for
          <string-name>
            <surname>-</surname>
          </string-name>
          2018
          <source>- 12b57645b654 (visited on 10/29/</source>
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10] LightBot, [Online]. Available: https : / / lightbot . com/ (visited on 10/15/
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Edabit</surname>
          </string-name>
          , [Online]. Available: https://https://edabit.com/ (visited on 10/15/
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <fpage>CodeMonkey</fpage>
          - Coding for Kids, [Online]. Available: https://www.codemonkey.com/ (visited on 10/15/
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Coderbyte</surname>
          </string-name>
          , [Online]. Available: https://coderbyte.com/ (visited on 10/15/
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14] HackerRank, [Online]. Available: https : / / www . hackerrank.com/ (visited on 10/15/
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15] CodeWars, [Online]. Available: https://www.codewars. com/ (visited on 10/15/
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>Z.</given-names>
            <surname>Zou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Hei</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Du</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Wu</surname>
          </string-name>
          , “
          <article-title>EasyHPC: An Online Programming Platform for Learning High Performance Computing”</article-title>
          ,
          <source>in 2017 IEEE 6th International Conference on Teaching, Assessment, and Learning for Engineering (TALE)</source>
          ,
          <year>Dec</year>
          .
          <year>2017</year>
          , pp.
          <fpage>432</fpage>
          -
          <lpage>435</lpage>
          . DOI:
          <volume>10</volume>
          .1109/TALE.
          <year>2017</year>
          .
          <volume>8252374</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>TOP500</given-names>
            <surname>List - June</surname>
          </string-name>
          2019 Supercomputers, [Online]. Available: https://www.top500.org/list/2019/06/ (visited on 10/29/
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>H.</given-names>
            <surname>Zhou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Wang</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Li</surname>
          </string-name>
          , “
          <article-title>Botzone: An Online Multi-agent Competitive Platform for AI Education”</article-title>
          ,
          <source>in Proceedings of the 23rd Annual ACM Conference on Innovation and Technology in Computer Science Education</source>
          , ser.
          <source>ITiCSE</source>
          <year>2018</year>
          , Larnaca, Cyprus: ACM,
          <year>2018</year>
          , pp.
          <fpage>33</fpage>
          -
          <lpage>38</lpage>
          , ISBN:
          <fpage>978</fpage>
          -1-
          <fpage>4503</fpage>
          -5707-4. [Online]. Available: http://doi.acm.
          <source>org/ 10</source>
          .1145/3197091.3197099.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>A.</given-names>
            <surname>Draz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Abdennadher</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Abdelrahman</surname>
          </string-name>
          , “
          <article-title>Kodr: A Customizable Learning Platform for Computer Science Education”, in Adaptive and Adaptable Learning, K</article-title>
          . Verbert,
          <string-name>
            <given-names>M.</given-names>
            <surname>Sharples</surname>
          </string-name>
          , and T. Klobucˇar, Eds., Cham: Springer International Publishing,
          <year>2016</year>
          , pp.
          <fpage>579</fpage>
          -
          <lpage>582</lpage>
          , ISBN:
          <fpage>978</fpage>
          -3-
          <fpage>319</fpage>
          -45153-4.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>J. L.</given-names>
            <surname>Fernandez</surname>
          </string-name>
          <string-name>
            <surname>Aleman</surname>
          </string-name>
          , “
          <article-title>Automated Assessment in a Programming Tools Course”</article-title>
          ,
          <source>IEEE Transactions on Education</source>
          , vol.
          <volume>54</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>576</fpage>
          -
          <lpage>581</lpage>
          , Nov.
          <year>2011</year>
          , ISSN:
          <fpage>1557</fpage>
          -
          <lpage>9638</lpage>
          . DOI:
          <volume>10</volume>
          .1109/TE.
          <year>2010</year>
          .
          <volume>2098442</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>M.</given-names>
            <surname>Joy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Griffiths</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Boyatt</surname>
          </string-name>
          , “
          <article-title>The Boss Online Submission and Assessment System”</article-title>
          ,
          <string-name>
            <surname>J. Educ. Resour. Comput.</surname>
          </string-name>
          , vol.
          <volume>5</volume>
          , no.
          <issue>3</issue>
          ,
          <string-name>
            <surname>Sep</surname>
          </string-name>
          .
          <year>2005</year>
          , ISSN:
          <fpage>1531</fpage>
          -
          <lpage>4278</lpage>
          . DOI:
          <volume>10</volume>
          . 1145 / 1163405 . 1163407. [Online]. Available: http://doi.acm.
          <source>org/10</source>
          .1145/1163405.1163407.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>T.</given-names>
            <surname>Staubitz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Klement</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Renz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Teusner</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Meinel</surname>
          </string-name>
          , “
          <article-title>Towards practical programming exercises and automated assessment in Massive Open Online Courses”</article-title>
          , in 2015 IEEE International Conference on Teaching, Assessment, and
          <article-title>Learning for Engineering (TALE)</article-title>
          ,
          <year>Dec</year>
          .
          <year>2015</year>
          , pp.
          <fpage>23</fpage>
          -
          <lpage>30</lpage>
          . DOI:
          <volume>10</volume>
          . 1109 / TALE .
          <year>2015</year>
          .
          <volume>7386010</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Marcos Nascimento Eliane Araújo</surname>
          </string-name>
          , “
          <string-name>
            <surname>Giving Automated Feedback About Student Code</surname>
          </string-name>
          <article-title>Identifiers: a Method Based on the Description of Programming Problem”</article-title>
          ,
          <source>in Anais do SBIE 2019 (Proceedings of the SBIE 2019)</source>
          ,
          <year>2019</year>
          . DOI:
          <volume>10</volume>
          .5753/cbie.sbie.
          <year>2019</year>
          .
          <volume>537</volume>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>