<!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>Modularity for Automated Assessment: A Design-Space Exploration</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Steffen Zschaler</string-name>
          <email>szschaler@acm.org</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sam White</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Kyle Hodgetts</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Martin Chapman</string-name>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Informatics, King's College London</institution>
          ,
          <addr-line>The Strand, London</addr-line>
          ,
          <country country="UK">UK</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Department of Informatics, King's College London</institution>
          ,
          <addr-line>The Strand, London</addr-line>
          ,
          <country country="UK">UK</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Department of Informatics, King's College London</institution>
          ,
          <addr-line>The Strand, London</addr-line>
          ,
          <country country="UK">UK</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>Department of Informatics, King's College London</institution>
          ,
          <addr-line>The Strand, London</addr-line>
          ,
          <country country="UK">UK</country>
        </aff>
      </contrib-group>
      <fpage>57</fpage>
      <lpage>61</lpage>
      <abstract>
        <p>-As student numbers continue to increase, automated assessment is an inevitable element of programming education in university contexts. Modularity is a key factor in ensuring these systems are flexible, robust, secure, scalable, extensible, and maintainable. Yet, modularity has not been explicitly and systematically discussed in this field. In this paper, we first present an overview of the modularity design space for automated assessment systems and a discussion of existing systems and their place in this space. This is followed by a brief overview of our novel NEXUS platform, which uses fine-grained modularisation of graders implemented through a micro-service architecture.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Automated grading has been of interest to computer-science
educators for a long time. ASSYST [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] was probably the
first systems that tried to provide automation support for the
task of assessing student submissions to programming
assignments. At the time, automation was focused on giving a first
assessment of a piece of software, with responsibility for the
actual grading and provision of feedback still remaining firmly
with the human teaching staff. As student numbers increase,
we see a stronger move towards fully automated grading
and feedback. Such a system has many benefits, including a
reduction in time spent on marking by teaching staff, freeing
them up for more productive work, and an opportunity for
students to receive more feedback on incremental development
stages of their software.
      </p>
      <p>As the functionality and workload of automated grading
systems increases, it has become evident that we need to
consider sound software-engineering principles in the
development of these systems. We have requirements on the reliability,
security, extensibility, scalability, and maintainability of these
grading systems, which cannot easily be satisfied with a simple
set of shell scripts to be invoked by a teacher in response to a
set of student submissions. Students are asking for web-based
systems well integrated with their preferred tool infrastructure
and providing high-quality, near-time feedback. Teachers are
interested in using automated grading systems for a range
of modules teaching programming in different languages,
teaching other aspects of computer science, or even beyond
computer science. System operators want automated grading
systems to be robust against (intentional or unintentional)
attacks by student code under assessment and to be scalable
in order to manage the highly bursty workload of large
classes of students working against coursework submission
deadlines. Errors are inevitable in any software development,
so we want to be able to partially update an existing, running
automated grading system, as fixes for problems identified
become available. Finally, academics want to be able to
continuously develop our grading systems as our research into
better methods for assessment and feedback evolves.</p>
      <p>Modularity is key to satisfying all of these requirements.
By breaking grading systems into suitable components and
ensuring they can be exchanged and recombined flexibly
and robustly, we establish the foundations for extensibility,
maintainability and reliability. By ensuring independent
execution of components, we achieve scalability through
appropriate replication and load-balancing techniques. Modularity
also provides opportunities for encapsulation and sandboxing,
which can help ensure secure execution of student code.</p>
      <p>Some existing systems already reap some of the benefits
of modularity. However, to the best of our knowledge, no
systematic mapping of the design space for modularity in
automated grading systems and the benefits and drawbacks
of different spots in this space exists.</p>
      <p>In this paper, we provide a first such analysis. We begin by
exploring two dimensions of modularity: what to modularise
and how to modularise. These dimensions span a design space,
and we identify different positions in this space taken by
different existing systems. Our preference is for a fine-granular,
micro-service–based modularisation and we will briefly sketch
the architecture of our NEXUS system, implementing such an
architecture.</p>
      <p>II. MODULARITY IN AUTOMATED ASSESSMENT SYSTEMS</p>
      <p>We discuss two dimensions of the design space for modular
automated-assessment systems:
1) What to modularise. Which different concerns in a grading
system should be separated out into different modules? At
what granularity?
2) How to modularise. What are the technology choices
available for implementing components and re-composing
them into a working automated-assessment system?
For each dimension, we discuss a range of choices taken
by different existing systems1 as well as the benefits and
drawbacks of these choices.</p>
      <sec id="sec-1-1">
        <title>A. What to modularise</title>
        <p>
          In [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ], Sclater and Howie describe requirements for the
“ultimate” automated assessment system (AAS). In a similar
vein, in Fig. 1 we sketch the logical architecture of the
“maximal” AAS. Figure 1 is meant to highlight the units of
functionality required for any AAS, but should not be read as
a description of how to bundle these functionalities into actual
components. Any AAS would need to allow assignments to
be created and viewed and submissions to be sent to the
system (possibly through a number of different submission
pathways). Submissions received need to be graded by grader
services; multiple grading steps will likely be involved and
require some form of scheduling and weighting of the resulting
marks according to a mark scheme. Marks and feedback will
need to be presented to students and academics in meaningful
ways. To execute grading, a number of execution services
are needed, such as sandboxing of execution, monitoring,
or possibly load balancing across grader servers. System
wide, common services are required to provide solutions for
submission storage, auditing of the grading process, plagiarism
detection, or setting of unique assignments etc. Often, AAS are
used in the context of existing virtual-learning environments
(VLE) and some functionality needs to be provided to connect
VLE and AAS.
        </p>
        <p>In the following, we discuss different options for
“packaging” these logical units of functionality into actual system
components. Not all AAS provide all functionalities—for
example, many AAS do not provide explicit support for VLE
integration.</p>
        <p>
          Any automated assessment system will need to provide
support for defining and managing assignments, enable
students to make submissions (possibly through a number of
different submission pathways), execute grading tools on the
submissions, and present grades and feedback to students. In
most grading systems—including ASSYST [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ], Graja [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ],
PABS [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], PASS [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ], ASAP [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], DUESIE [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], BOSS [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ],
or Marmoset [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]—these two concerns are separated into at
least two components: one component provides functionality
for teachers to define assignments and for students to upload
submissions, while a second component performs the actual
grading.
        </p>
        <p>
          In modularising graders, we differentiate two levels of
granularity:
1) Coarse-grained grader modularisation packages a
complete grading pipeline (often for one course) into one
module. For example, a grader might compile Java code,
1We tried to include as many existing systems as possible, but do not claim
complete coverage of the literature.
perform some style checks or static analyses, run a number
of unit tests, and provide a combined grade and
accumulated feedback to the student. The automated-assessment
systems listed in the previous paragraph are examples of
coarse-grained grader modularisation.
2) Fine-grained grader modularisation considers graders
building blocks for constructing a marking scheme for an
assignment. This implies graders can be more flexibly
reused across assignments and assignments can choose to use
only the graders required. Fine-grained grader
modularisation has, for example, been applied in ASB [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], JACK [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ],
and CourseMarker/Ceilidh [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ].
        </p>
        <p>
          Clearly, fine-grained grader modularisation has many
benefits. In particular, some graders are easily reusable across
assignments and courses (e.g., a peer feedback grader as
described for Praktomat [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]), and with fine-grained
modularisation, these can be easily reused for different courses.
Similarly, fine-grained grader modularisation makes it easy
to select exactly the set of graders that should be applied
for a particular assignment and to weight the grades provided
specifically for the expected level of teaching. For example,
for beginning programmers, we might put more weight on
compilation, while for more advanced programmers this would
become merely a check at the start of the assessment, with
substantial weight placed on the assessment of functionality.
        </p>
        <p>
          At the same time, there are drawbacks to fine-grained
modularisation. First, graders must be developed independently and
cannot easily make assumptions about other graders. This may
mean some duplication of effort (e.g., for compilation) and
requires explicit support for workflow management to ensure
redundant feedback is not given to students (e.g., when
compilation fails, attempting to run unit tests would only confuse
students with redundant feedback). With coarse-grained grader
modularisation, these interdependencies can be easily
hardcoded. With fine-grained modularisation, responsibility rests
with the assignment author. An important question is who
“owns” which part of the data: most current techniques seem
to focus on giving ownership to the central system, so that
graders must fit all their configuration data into a centrally
pre-defined schema (e.g., using ProForma [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]). ASB [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]
supports hierarchical configuration, where configuration at the
course level is automatically reused for all assignments etc.
Configurations still need to correspond to a centralised data
schema. Typically (e.g., as described for JACK [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]) this
centralisation means that the data is also managed by the
central “assignment manager” so that graders need to request
it every time they grade a submission. As we will describe in
Sect. III, we prefer a modularised configuration, where each
grader “owns” its own configuration data (both the schema
and the actual data) as this decouples different parts of the
system better and requires less network traffic when marking
submissions.
        </p>
        <p>Other concerns of automated assessment have also been
considered for modularisation. However, more detailed
analysis of these modularisation choices is clearly still needed:
VLE Integration</p>
        <p>Assignment Manager
Assignment Creation</p>
        <p>Feedback Presentation
Assignment View</p>
        <p>Submission Management</p>
        <p>ZIP Webform Git
Email IDE …</p>
        <p>Scheduling
(mark schemes)</p>
        <p>
          GGraraddeersrs
Some grading systems have focused on modularising their
front-end services. For example, BOSS [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] distinguishes
student and teacher servers to support the different roles
engaging with the system (in principle, this could be
extended to a larger subset of the ideal set of
stakeholders [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]). Similarly, FW4EX [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] defines separate servers
for creating/editing assignments, accessing assignments, and
uploading submissions, so that these can be resourced in
accordance with their different performance requirements.
FW4EX also has some modularisation of different
submission pathways through the introduction of IDE plugins for
use by students.
        </p>
        <p>
          Some works have focused on modularising general services.
For example, Grappa [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] provides generic middleware for
connecting graders to a standard VLE. PABS [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] uses a
standard SVN server as the shared file-storage system for
submissions and assignment data (although, surprisingly,
both are kept in the same repository). ASB [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] explicitly
modularises different execution environments. A number of
systems provide plagiarism detection services as a separate
module.
        </p>
      </sec>
      <sec id="sec-1-2">
        <title>B. How to modularise</title>
        <p>The decision of what to modularise affects primarily the
maintainability, extensibility, and flexibility of the system. In
order to modularise for scalability, robustness, and security, we
need to consider how to implement the modular architecture.</p>
        <p>
          There is a clear trend from monolithic systems with
some internal modularisation (typically using object-oriented
principles—for example, PASS [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]) to more distributed and
loosely coupled multi-process systems (e.g., JACK [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] or
[
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]). For the latter systems, different communication
protocols have been experimented with: [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] uses internal email
communication, ASB [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] implements a dedicated event-bus,
JACK [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] uses a bespoke protocol with graders pulling
new submissions from the assignment manager. Recently—
for example in eduComponents [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]—service-based
architectures are being discussed. Especially when building on
standardised protocols (such as REST-ish web APIs,
containerisation through Docker or similar, . . . ), these substantially
simplify the scaling of automated assessment systems through
the use of state-of-the-art virtualisation, load-balancing, and
swarm-management techniques. Containerisation also helps
with security as containers can be confined in their use of
resources. This has been initially explored, for example, for
Praktomat [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
        </p>
        <p>Distribution and using web-based APIs brings its own
potential security challenges: if these API endpoints can be
accessed by students, extra measures are needed to prevent
students from submitting fake marks for their own assignments
or from manipulating grader configurations. Service-based
distribution potentially also creates concerns about trust
between services, especially where they are managed by different
organisations.</p>
        <p>
          With fine-grained grader modularisation, an interesting
question is how to specify mark schemes (i.e., which graders to
use and how to weight the marks provided). For coarse-grained
grader modularisation, the mark scheme can be hard-coded
into the system or possibly configured by parametrisation of
the fixed steps [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. For fine-grained grader modularisation,
different systems provide different answers. Some systems [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]
have used Java code to implement mark schemes. This
maximises flexibility, but also requires more attention to low-level
detail from the assignment developer. Other systems [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ], [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ],
[
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] allow configuration through (XML) files at the level of
assignments. This is less flexible, as essentially the assignment
developer can only choose from a range of pre-defined
configuration options, but provides a more standardised interface
and higher level of abstraction.
        </p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>III. NEXUS: A MICRO-SERVICE APPROACH TO</title>
      <p>FINE-GRANULAR MODULARITY</p>
      <p>At King’s we are developing an automated assessment
platform called NEXUS. This platform was designed specifically
to be flexible and extensible, including potentially to
nonprogramming modules. To support extensibility, we aimed
to maximise modularity: NEXUS uses fine-granular
modularisation of graders and modularises a number of common
services: in particular, all submissions are stored in GitHub
Enterprise (decoupling graders from submission pathways and
providing access to a student’s submission history) and we
provide generic support for the generation of unique
assign</p>
      <p>TABLE I</p>
      <p>CURRENTLY AVAILABLE GRADERS
Grader
javac
jUnit
io-test
dyn-trace
matlab
python
peer-review
manual</p>
      <p>Purpose
Check compilation and code style of Java code
Run unit tests against Java code
Run input-output tests against Java code
Capture Java execution traces &amp; compare against
model solution
Grade MatLab-based mathematics submissions
Unit test python-based submissions
Enable student peer review of submissions</p>
      <p>
        Support manual grading of assignments
ments. Flexibility and security is increased by decoupling all
components into their own micro-service [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]; with services
interacting through REST-ish web-API endpoints. Figure 2
gives an overview of the architecture. Each service (with the
exception of GitHub Enterprise, which is managed separately
within King’s) is maintained and managed by us in a central
monorepo [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] and is deployed in its own Docker containers.
As a result, we can easily scale the system by deploying
redundant instances of overloaded services and using Docker
Swarm to ensure adequate load balancing. Using a monorepo
means development can proceed as if the system was a tightly
coupled monolith, ensuring continuous compatibility between
all micro-services in the overall architecture.
      </p>
      <p>All parts of the system are loosely coupled. For
example, the available graders are configured by providing the
URLs of their respective API endpoints for configuration and
submission-marking. This makes it easy to add in additional
graders even at runtime, by adding their API information
through the web-based administration interface. We use a
fine-granular modularisation of graders (see Table I),
including some graders such as peer-review or manual that
can be easily reused across different modules. Graders own
their configuration data, allowing for arbitrarily complex data
schemata. For example, the peer-feedback grader allows
the configuration of a web-form for students to fill in when
providing a review.</p>
      <p>Because graders are independent micro-services, faults are
easily contained in the problematic grader. A fault in a grader
may mean students having to wait longer to receive a grade or
feedback, but will not cause issues for the remaining graders
or assignments. This also minimises the opportunities for
rogue student code to attack the grading infrastructure. At
the same time, it also simplifies incremental improvement
of graders. Student submissions can sometimes be highly
creative and difficult to predict, occasionally causing graders
to fail processing a submission. Because all submissions are
managed centrally and the actual submission files are kept
in GHE, a faulty grader can easily be repaired and a new
version spun up (reusing configuration data from the service’s
database). NEXUS provides the ability to request a regrading
of a particular submission or a set of submissions, whereupon
these submissions are simply sent to the relevant graders again
for repeat processing.2 This increases overall reliability and
resilience.</p>
      <p>
        We provide explicit support to express grader dependencies
and use simple distributed dataflow controls [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]: graders can
specify the type of files they produce and require. Given
such specifications, NEXUS will automatically determine a
maximally concurrent grader execution. When invoking a
grader, NEXUS provides information about which kinds of
files should be sent to other graders. Graders then send on
any files produced as indicated. Subsequent graders can use
these additional files without having to recreate them.
      </p>
      <p>Modularisation and the use of web interfaces creates a new
attack surface. Students could, in principle, attempt to spoof
marks by sending requests directly to NEXUS’ IMark
interface. Similarly, they could attempt to modify the configuration
of graders by directly accessing their IConfig interfaces. To
prevent such attacks, NEXUS uses randomly generated tokens
which must be passed along with any HTTP/HTTPS requests.
These allow the receiver to check that the invocation did
indeed originate from the claimed source. Graders provide
feedback as HTML code, which is directly embedded into
the NEXUS feedback page. If graders were allowed to be
arbitrary web-services, this could easily be a security risk
through the potential for XHR attacks. However, in our
microservice architecture, all services are directly under our control
so that we can trust their implementations.</p>
    </sec>
    <sec id="sec-3">
      <title>IV. CONCLUSIONS</title>
      <p>Modularity concerns are important for developing robust,
scalable, flexible, and extensible automated assessment
systems. Yet, modularity has not been systematically discussed
in this field to date. We have presented an exploration of
the modularity design space for automated assessment,
including how different existing systems are positioned in this
space and some of the benefits and drawbacks of different
choices. Additionally, we have briefly presented our novel
NEXUS platform taking a previously unoccupied position in
this space by providing fine-granular grader modularisation
realised through a micro-service architecture. We believe that
this architecture provides substantial benefits to the robustness
and flexible extensibility of our platform as well as to its
scalability and reliability. In the future, we plan to extend
usage of our NEXUS platform, including to modules outside of
computer science and, in particular, will focus on improving
the feedback provided by individual graders.</p>
    </sec>
    <sec id="sec-4">
      <title>2NEXUS maintains an audit log tracking any such requests</title>
      <p>ITeacher
IFeedback</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Amelung</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Forbrig</surname>
          </string-name>
          , and D. Ro¨sner, “
          <article-title>Towards generic and flexible web services for e-assessment,”</article-title>
          <source>in Proc. 13th Annual Conf. Innovation and Technology in Computer Science Education (ITiCSE'08)</source>
          . ACM,
          <year>2008</year>
          , pp.
          <fpage>219</fpage>
          -
          <lpage>224</lpage>
          . [Online]. Available: http: //doi.acm.
          <source>org/10</source>
          .1145/1384271.1384330
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>W.</given-names>
            <surname>Binder</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Constantinescu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Faltings</surname>
          </string-name>
          , “
          <article-title>Decentralized orchestration of composite web services,”</article-title>
          <source>in IEEE Int'l Conf Web Services (ICWS'06)</source>
          ,
          <year>2006</year>
          , pp.
          <fpage>869</fpage>
          -
          <lpage>876</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>O. J.</given-names>
            <surname>Bott</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Fricke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Priss</surname>
          </string-name>
          , and M. Striewe, Eds., ser. Digitale Medien in der Hochschullehre. Waxmann Verlag GmbH,
          <year>2017</year>
          , vol.
          <volume>6</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J.</given-names>
            <surname>Breitner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Hecker</surname>
          </string-name>
          , and G. Snelting, “
          <article-title>Der grader praktomat,” in Automatisierte Bewertung in der Programmierausbildung, ser</article-title>
          . Digitale Medien in der Hochschullehre,
          <string-name>
            <given-names>O. J.</given-names>
            <surname>Bott</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Fricke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Priss</surname>
          </string-name>
          , and M. Striewe, Eds. Waxmann Verlag GmbH,
          <year>2017</year>
          , vol.
          <volume>6</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M.</given-names>
            <surname>Choy</surname>
          </string-name>
          et al.,
          <article-title>“Design and implementation of an automated system for assessment of computer programming assignments,”</article-title>
          <source>in Proc. 6th Int'l Conf. Advances in Web Based Learning (ICWL'07</source>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Leung</surname>
          </string-name>
          et al.,
          <source>Eds</source>
          . Springer,
          <year>2008</year>
          , pp.
          <fpage>584</fpage>
          -
          <lpage>596</lpage>
          . [Online]. Available: https://doi.org/10.1007/978-3-
          <fpage>540</fpage>
          -78139-4 51
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>C.</given-names>
            <surname>Douce</surname>
          </string-name>
          et al.,
          <article-title>“A technical perspective on ASAP - automated system for assessment of programming,”</article-title>
          <source>in Proc. 9th Computer-Assisted Assessment (CAA) Conference</source>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>P.</given-names>
            <surname>Fricke</surname>
          </string-name>
          et al., “Grading mit Grappa - Ein
          <string-name>
            <surname>Werkstattbericht</surname>
          </string-name>
          ,”
          <source>in Proc. 2nd Workshop</source>
          “
          <article-title>Automatische Bewertung von Programmieraufgaben” (ABP'15), ser</article-title>
          . CEUR-WS,
          <string-name>
            <given-names>U.</given-names>
            <surname>Priss</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Striewe</surname>
          </string-name>
          , Eds., vol.
          <volume>1496</volume>
          ,
          <year>2015</year>
          , pp.
          <fpage>9</fpage>
          -
          <issue>1</issue>
          -9-8. [Online]. Available: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>1496</volume>
          / paper9.pdf
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>R.</given-names>
            <surname>Garmann</surname>
          </string-name>
          , “Graja - Autobewerter fu¨ r Java-Programme,” Fakulta¨t IV -
          <article-title>Wirtschaft und Informatik, Hochschule Hannover</article-title>
          ,
          <source>Tech. Rep.</source>
          ,
          <year>2016</year>
          . [Online]. Available: http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de: bsz:
          <fpage>960</fpage>
          -
          <lpage>opus4</lpage>
          -9418
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>B.</given-names>
            <surname>Herres</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Oechsle</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Schuster</surname>
          </string-name>
          , “
          <article-title>Der grader asb,” in Automatisierte Bewertung in der Programmierausbildung, ser</article-title>
          . Digitale Medien in der Hochschullehre,
          <string-name>
            <given-names>O. J.</given-names>
            <surname>Bott</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Fricke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Priss</surname>
          </string-name>
          , and M. Striewe, Eds. Waxmann Verlag GmbH,
          <year>2017</year>
          , vol.
          <volume>6</volume>
          , pp.
          <fpage>255</fpage>
          -
          <lpage>271</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>C. A.</given-names>
            <surname>Higgins</surname>
          </string-name>
          et al.,
          <source>“Automated assessment and experiences of teaching programming,” J. Educ. Resour. Comput.</source>
          , vol.
          <volume>5</volume>
          , no.
          <issue>3</issue>
          ,
          <string-name>
            <surname>Sep</surname>
          </string-name>
          .
          <year>2005</year>
          . [Online]. Available: http://doi.acm.
          <source>org/10</source>
          .1145/1163405.1163410
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Hoffmann</surname>
          </string-name>
          et al.,
          <article-title>“Online- u¨bungssystem fu¨ r die Programmierausbildung zur Einf u¨hrung in die Informatik,” in 6te e-Learning Fachtagung Informatik (DeLFI'08), ser</article-title>
          . LNI, S. Seehusen et al., Eds., vol.
          <volume>132</volume>
          .
          <string-name>
            <surname>GI</surname>
          </string-name>
          ,
          <year>2008</year>
          , pp.
          <fpage>173</fpage>
          -
          <lpage>184</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>L.</given-names>
            <surname>Iffla</surname>
          </string-name>
          <article-title>¨nder et al</article-title>
          .,
          <article-title>“PABS - a programming assignment feedback system,”</article-title>
          <source>in Proc. 2nd Workshop</source>
          “
          <article-title>Automatische Bewertung von Programmieraufgaben” (ABP'15), ser</article-title>
          . CEUR-WS,
          <string-name>
            <given-names>U.</given-names>
            <surname>Priss</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Striewe</surname>
          </string-name>
          , Eds., vol.
          <volume>1496</volume>
          ,
          <year>2015</year>
          , pp.
          <fpage>5</fpage>
          -
          <issue>1</issue>
          -5-8. [Online]. Available: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>1496</volume>
          /paper5.pdf
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>D.</given-names>
            <surname>Jackson</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Usher</surname>
          </string-name>
          , “
          <article-title>Grading student programs using ASSYST,”</article-title>
          <source>in Proc 28th Technical Symposium on Computer Science Education. ACM</source>
          ,
          <year>1997</year>
          , pp.
          <fpage>335</fpage>
          -
          <lpage>339</lpage>
          . [Online]. Available: http: //doi.acm.
          <source>org/10</source>
          .1145/268084.268210
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <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>
            <given-names>J.</given-names>
            <surname>Educ</surname>
          </string-name>
          .
          <source>Resour. Comput.</source>
          , vol.
          <volume>5</volume>
          , no.
          <issue>3</issue>
          ,
          <string-name>
            <surname>Sep</surname>
          </string-name>
          .
          <year>2005</year>
          . [Online]. Available: http://doi.acm.
          <source>org/10</source>
          .1145/1163405.1163407
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>S.</given-names>
            <surname>Newman</surname>
          </string-name>
          , Building Microservices: Designing
          <string-name>
            <surname>Fine-Grained Systems</surname>
          </string-name>
          .
          <source>O'Reilly</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>M.</given-names>
            <surname>Oberlehner</surname>
          </string-name>
          , “
          <article-title>Monorepos in the wild</article-title>
          ,”
          <year>2017</year>
          , last accessed 30 January,
          <year>2018</year>
          . [Online]. Available: https://medium.com/@maoberlehner/ monorepos
          <article-title>-in-the-wild-33c6eb246cb9</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>A.</given-names>
            <surname>Pardo</surname>
          </string-name>
          , “
          <article-title>A multi-agent platform for automatic assignment management,”</article-title>
          <source>in Proc. 7th Annual Conf. Innovation and Technology in Computer Science Education (ITiCSE'02)</source>
          . ACM,
          <year>2002</year>
          , pp.
          <fpage>60</fpage>
          -
          <lpage>64</lpage>
          . [Online]. Available: http://doi.acm.
          <source>org/10</source>
          .1145/544414.544434
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>U.</given-names>
            <surname>Priss</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Striewe</surname>
          </string-name>
          , Eds.,
          <source>Proc. 2nd Workshop</source>
          “
          <article-title>Automatische Bewertung von Programmieraufgaben” (ABP'15), ser</article-title>
          .
          <source>CEUR-WS</source>
          , vol.
          <volume>1496</volume>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>C.</given-names>
            <surname>Queinnec</surname>
          </string-name>
          , “
          <article-title>An infrastructure for mechanised grading</article-title>
          ,”
          <source>in Proc. 2nd Int'l Conf. Computer Supported Education</source>
          ,
          <year>2010</year>
          , pp.
          <fpage>37</fpage>
          -
          <lpage>45</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>N.</given-names>
            <surname>Sclater</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>Howie</surname>
          </string-name>
          , “
          <article-title>User requirements of the “ultimate” online assessment engine</article-title>
          ,
          <source>” Computers &amp; Education</source>
          , vol.
          <volume>40</volume>
          , no.
          <issue>3</issue>
          , pp.
          <fpage>285</fpage>
          -
          <lpage>306</lpage>
          ,
          <year>2003</year>
          . [Online]. Available: https://doi.org/10.1016/S0360-
          <volume>1315</volume>
          (
          <issue>02</issue>
          )
          <fpage>00132</fpage>
          -X
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>J.</given-names>
            <surname>Spacco</surname>
          </string-name>
          et al., “Experiences with Marmoset,
          <source>” Univ. Maryland, Tech. Rep.</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>S.</given-names>
            <surname>Strickroth</surname>
          </string-name>
          et al.,
          <article-title>“ProFormA: An XML-based exchange format for programming tasks,” e-learning &amp; educaton (eleed)</article-title>
          , vol.
          <volume>11</volume>
          , no.
          <issue>1</issue>
          ,
          <year>2015</year>
          . [Online]. Available: http://nbn-resolving.de/urn:nbn:de:
          <fpage>0009</fpage>
          -5-41389
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>M.</given-names>
            <surname>Striewe</surname>
          </string-name>
          , “
          <article-title>An architecture for modular grading and feedback generation for complex exercises</article-title>
          ,”
          <source>Science of Computer Programming</source>
          , vol.
          <volume>129</volume>
          , pp.
          <fpage>35</fpage>
          -
          <lpage>47</lpage>
          ,
          <year>2016</year>
          , special issue on eLearning Software Architectures. [Online]. Available: http://www.sciencedirect.com/science/article/pii/S0167642316300260
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>A.</given-names>
            <surname>Zeller</surname>
          </string-name>
          , “
          <article-title>Making students read and review code,”</article-title>
          <source>in Proc. 5th Annual Conf. Innovation and Technology in Computer Science Education (ITiCSE'00)</source>
          . ACM,
          <year>2000</year>
          , pp.
          <fpage>89</fpage>
          -
          <lpage>92</lpage>
          . [Online]. Available: http://doi.acm.
          <source>org/10</source>
          .1145/343048.343090
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>