<!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>Execution-Trace-Based Feature Engineering To Enable Formative Feedback on Visual, Interactive Programs</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Wengran Wang</string-name>
          <email>wwang33@ncsu.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gordon Fraser</string-name>
          <email>gordon.fraser@uni-passau.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tiffany Barnes</string-name>
          <email>tmbarnes@ncsu.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Chris Martens</string-name>
          <email>crmarten@ncsu.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Thomas Price</string-name>
          <email>twprice@ncsu.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>North Carolina State University</institution>
          ,
          <country country="US">USA</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Passau</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Offering students immediate, formative feedback when they are programming can increase students' learning outcomes and self-efficacy. However, visual and interactive programs include dynamic user input and visual outputs that change over time, making it difficult to automatically assess students' code with traditional functional tests to offer this feedback. In this work, we introduce Execution Trace Based Feature Engineering (ETF), a feature engineering approach that extracts sequential patterns from execution traces, which capture the runtime behavior of students' code. We evaluated ETF on 162 students' code snapshots from a Pong game assignment in an introductory programming course, on a challenging task to predict students' success on fine-grained rubrics. We found that ETF achieves an average F1 score of 0.93 over 10 grading rubrics, which is 0.1-0.2 higher than a high-performing syntax-based code classification approach from prior work. These results show that ETF has strong potential to be used for code classification, to enable formative feedback for students' visual, interactive programs.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>
        Real-time, formative feedback promotes students’ learning
gains and self-efficacy [
        <xref ref-type="bibr" rid="ref20 ref33 ref40 ref8">20, 8, 33, 40</xref>
        ], for it allows students
to judge how well they are meeting assignment requirements,
and make modifications to their code, both as they develop
it, and before submitting it. To provide such formative
feedback in real-time, CS instructors commonly write test cases,
allowing students to run their code against these test cases
when programming [
        <xref ref-type="bibr" rid="ref10 ref12 ref16 ref24">24, 12, 16, 10</xref>
        ]. However, visual,
interactive programming projects, such as creating apps and
games [
        <xref ref-type="bibr" rid="ref38">38</xref>
        ] include dynamic user interactions, and visual
outputs that change over time, making it challenging to use test
cases to assess these programs [
        <xref ref-type="bibr" rid="ref34 ref35">35, 34</xref>
        ].
      </p>
      <p>
        In contrast to test case-based approaches, data-driven
methods allow instructors to offer formative feedback by
grading a smaller set of programs instead of writing test cases
[
        <xref ref-type="bibr" rid="ref27 ref32 ref43 ref48">32, 43, 27, 48</xref>
        ]. These data-driven methods start with
transforming code into input vectors using feature engineering,
typically by extracting syntax elements from an abstract
syntax tree (AST), where nodes and their children
correspond to specific code elements (e.g., if statements).
However, when applying these syntax-based AST feature
extraction techniques to classify programs based on fine-grained
assignment rubrics, prior work showed mixed results, which
are often not high enough to ensure the quality of student
feedback [
        <xref ref-type="bibr" rid="ref1 ref2 ref32">32, 1, 2</xref>
        ].
      </p>
      <p>
        A known key limitation of such AST-based feature
engineering approaches is that code is first and foremost
“executable”, and that its execution traces include dynamic data
about the program functionality, which cannot be directly
captured by the syntax-based features [
        <xref ref-type="bibr" rid="ref23 ref3">23, 3</xref>
        ]. Some prior
work has used execution traces to classify students’ sorting
programs based on their specific strategies, and has shown
that execution-trace-based classification achieved higher
accuracies than a syntax-based classification approach [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].
However, no prior work has conducted feature extraction on
the execution trace of visual, interactive programs, which
include dynamic user interactions and various changing
outputs.
      </p>
      <p>In this work, we explore extracting useful features from
execution traces that capture the runtime behavior of
visual, interactive programs. We designed an execution
tracebased feature engineering approach (ETF) to transform
students’ source code into feature vectors, for classification
algorithms to build models based on rubric-based labels (e.g.,
the presence of a key-triggered movement). We evaluated
ETF by classifying 162 students in-progress and submitted
code snapshots. We found it to achieve high prediction
performance with an average of 0.93 F1 score over 10 grading
rubric items, which is 0.1–0.2 higher than a high-performing
syntax-based code classification approach. Our work has the
following contributions: 1) We designed and implemented a
novel, execution trace-based feature engineering (ETF)
approach to extract temporal patterns in students’ visual,
interactive programs (Section 3); 2) We evaluated the ETF
approach on students’ code snapshots for a widely-used,
representative visual, interactive program assignment (Section 4).
Copyright ©c 2021 for this paper by its authors. Use permitted under
Creative Commons License Attribution 4.0 International (CC BY 4.0)
2.</p>
    </sec>
    <sec id="sec-2">
      <title>RELATED WORK</title>
      <p>
        Students can easily get stuck during programming [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], and
may need help in order to proceed. Such timely feedback
that is provided in the middle of programming is called
“formative feedback”. Unlike summative feedback, offered
after a student completing a programming task, formative
feedback aims to monitor students’ on-going learning
process and provide timely assessment and suggestions [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
Receiving such formative feedback has been shown to improve
students’ learning outcomes [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and self-efficacy [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. In
programming education, such formative feedback is built on an
accurate assessment of students’ current progress based on
their code, which can take the form of analyzing students’
progress against instructor rubrics [
        <xref ref-type="bibr" rid="ref32">32</xref>
        ]. With the growing
size of CS classrooms [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], such assessment is challenging to
offer manually.
      </p>
      <p>
        To enable formative feedback, many learning systems make
use of functional tests; some used syntax-based approached
to generate hints [
        <xref ref-type="bibr" rid="ref26 ref50">26, 50</xref>
        ], other researched data-driven code
classification. We first review prior work on test-case-based
assessment to understand its benefits and limitations. Next,
we describe prior work on data-driven code classification,
which inspired our work.
1) Test-case-based Automated Assessment. Many
learning systems offer test-case-based automated assessments, where
students are allowed to submit their solutions multiple times.
With every submission, the system checks students’
solutions through a set of test cases and sends the report to
the students (e.g., [
        <xref ref-type="bibr" rid="ref10 ref12 ref16 ref24">24, 12, 16, 10</xref>
        ]). However, visual and
interactive programs include dynamic user interactions and
program properties that change over time [
        <xref ref-type="bibr" rid="ref34 ref35">35, 34</xref>
        ]. Prior
work that has applied functional tests to analyze these
programs identified shared challenges for instructors to author
such test cases, which requires temporal logic-based
specifications of program behaviors and time bounds, using a
domain-specific language [
        <xref ref-type="bibr" rid="ref35 ref41">35, 41</xref>
        ].
2) Data-driven Student Code Classification. Prior
work has made use of data-driven methods to classify
student programs for enabling formative feedback. These
methods take as training data a set of graded programs and
predict students’ success or failures on a given assignment. To
do that, prior work used syntax-based feature engineering
approaches to extract features from the code abstract syntax
tree (AST) and feed them into machine learning algorithms.
We describe their methods and applications below.
2.a) Methods. Syntax-based approaches extract patterns
inside a code AST, use the presence or absence of a feature,
or the count of the feature to generate input vectors. As an
example, we explain a recently-applied AST n-Gram feature
extraction approach [
        <xref ref-type="bibr" rid="ref2 ref39">2, 39</xref>
        ] by making an analogy to Natural
Language Processing (NLP): In NLP, an n-Gram with n = 1
is a 1 -Gram feature taken from each word; and an n-Gram
feature takes a continuous sequence of n words to extract
relationship between words (e.g., orders); in an AST, 1
Gram features represent each node in students’ code. And
to extract structural relationships, Akram et al. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] designed
the use of n-Grams to represent n-length sequences of code,
where a vertical n-Gram is created by a depth-first search
of leaves; a horizontal n-Gram is created by a
breadthfirst search of all direct children of each AST nodes (e.g., in
      </p>
      <p>
        Other AST feature engineering approaches were introduced
with the usage of Neural Network models, which commonly
apply an embedding layer that takes as input multi-dimensional
code representations (e.g., a matrix) [
        <xref ref-type="bibr" rid="ref13 ref22 ref3 ref32">3, 13, 22, 32</xref>
        ]. In
addition, many embedded approaches use sequential models,
so that the embedding is trained based on relative locations
of code elements [
        <xref ref-type="bibr" rid="ref13 ref22">13, 22</xref>
        ]. Depending on the Neural
Network’s architecture, these embedded approaches also vary
in ways to represent code as vectors to feed into the models.
For example, Alon et al. used leaf-to-leaf feature
extraction, connecting the shortest path from each two leaf nodes
[
        <xref ref-type="bibr" rid="ref4 ref5">5, 4</xref>
        ]. They used this approach to represent code and used it
for an attention-based model (code2vec) to predict method
names. The results show that it achieved relatively high
accuracy (0.58 F1 score), and that it learns meaningful vector
embeddings that reveal semantic similarities [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
2.b) Applications on Student Code Classification. 1 -Gram
and n-Gram-based AST feature extraction approaches have
both been applied for student code classification tasks. For
example, Azcona et al. applied 1 -Gram feature extractions
as a baseline to extract features in 591,707 snapshots of
students’ Python code, and achieved 0.598 F1 in predicting
students’ overall success in completing programming
problems, using a simple Naive Bayes model [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Compared to
1 -Gram feature extractions, prior work has shown that
nGrams provide more predictive features for code analysis.
For example, Akram et al. used n-Grams with n ranging
from 1 to 4 to extract features, and used a Gaussian
Process model to infer scores on 642 students’ code pieces, in
a block-based programming environment. This achieved an
R-square of 0.94, higher than the 0.88 achieved by the
baseline 1 -Gram approach [
        <xref ref-type="bibr" rid="ref1 ref2">2, 1</xref>
        ].
      </p>
      <p>
        Most prior work has used data-driven methods to predict
students’ success or failures of the entire problem [
        <xref ref-type="bibr" rid="ref18 ref46 ref7">7, 18,
46</xref>
        ]. However, to offer students informative feedback, it is
important to understand what specific rubric items a
student has succeeded or failed in. Some prior work has tried
to predict students’ success on specific rubrics, e.g., by 1)
generating rubrics based on a set of correct programs [
        <xref ref-type="bibr" rid="ref49 ref9">9, 49</xref>
        ];
or by 2) predicting success/failures on rubric items based on
training data of a set of graded programs. For example, Shi
et al. applied code2vec on 207 students’ program
submissions to predict their success on six different rubric items, in
an introductory programming assignment [
        <xref ref-type="bibr" rid="ref32">32</xref>
        ]. They found
that code2vec achieved an average F1 of 0.69 over all
assignments, while a simple SVM model on a 1 -Gram feature
extraction achieves an average of 0.46 F1 score. This work
applied data-driven code classification in a real-world, practical
setting: in practice, instructors do not have a large amount
of training data at hand to train a data-hungry machine
learning model (e.g., such as in [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] (591K) and [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] (14M)).
[
        <xref ref-type="bibr" rid="ref32">32</xref>
        ] shows the potential of applying data-driven code
classification not only on a relatively small dataset, but also to
predict fine-grained, rubric-specific grades.
3) Representing Programs by Execution Traces. In a
systematic literature review on machine-learning-based code
analysis, Allamanis et al. critiques that executability
contributes the key difference between code and natural
language, and that execution traces, which log variable states
during each step of program execution, add an important
dimension of analyzing programs by presenting a dynamic
viewpoint, and directly linking a piece of programming code
to its functionality [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. In the domain of student code
analysis, prior work has identified similar limitations of
syntaxbased approaches, and pointed to the lack of work of
executiontrace-based code analysis [
        <xref ref-type="bibr" rid="ref23 ref25">23, 25</xref>
        ]. Consequently, recent
work that applied execution traces-based code analysis has
revealed promising results [
        <xref ref-type="bibr" rid="ref23 ref45">23, 45</xref>
        ]. For example, Paaßen
et al. used execution-trace-based distance measures to
classify programs into different strategies (e.g., bubble sort v.s.
Insertion sort), and found that execution- race-based
classification achieving 90% accuracy, higher than the 80%
accuracy achieved by syntax-based approaches [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. This shows
the potential of using execution traces to classify students’
programming code.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. THE ETF APPROACH</title>
      <p>
        The goal of ETF is to extract useful and relevant features
from execution traces. It is a feature engineering approach
that leverages n-Gram-based feature extraction, which has
not previously been applied on execution traces for student
code classification. ETF starts from collecting a set of
students’ programming code, along with a class label for each
piece of code, generated from instructor gradings (i.e.,
positive or negative), and is specifically designed to conduct
automated code classification on programs that have the
following properties:
1. Dynamic user interaction. Programs respond to
user interactions (e.g., mouse, keyboard). For
example, in games, users use a mouse or keyboard to control
actor movements; in an app, users need to navigate to
different pages / options using mouse, or keyboard
input.
2. Object-specific program states. Program states
can be represented as properties of objects (e.g., sprites1)
such as positions and rotations, which correspond to
visual output on the screen.
3. Properties that can change over time. Program
behaviours can be a function of time (e.g., movement
is described by the actor position that changes over
time); in addition, a behaviour can also change over
time (e.g., move and then stop [
        <xref ref-type="bibr" rid="ref34">34</xref>
        ].)
1The word “sprite” is used in block-based programming
environments, such as Snap! and Scratch, to represent an
object that has its own code (called scripts) and costumes.
For example, a sprite can be a game actor or an app widget.
These properties are shared by many different types of
visual, interactive program projects, such as games,
simulations and apps, and can be easily created in many novice
programming environments, such as Scratch [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ], Snap!
[
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], and Greenfoot [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], as well as programming
environments for creative practitioners, such as Processing [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ].
ETF conducts feature engineering on these types of visual,
interactive programs in four steps, the first three
corresponding to the three features above: 1) generating execution
traces that provide the inputs for dynamic user
interaction (Section 3.1); 2) summarizing traces to include program
state-based properties (Section 3.2); 3) extracting features
that describe relevant properties that change over time
(Section 3.3). The last step 4) is to filter features to generate a
x vector for each student’s code snapshot (Section 3.4).
An Example Assignment. As an example, consider the
Pong assignment, which we will use later in our experiments.
Pong consists of a paddle sprite and a ball sprite. The ball
moves around the stage2, and a player can use the keyboard
to control the up and down movement of the paddle to catch
the running ball. If the paddle catches the ball, the player
score increases; but if the paddle misses the ball and the ball
hits the back wall, the game ends. The Pong assignment is
commonly used in a variety of introductory programming
courses [
        <xref ref-type="bibr" rid="ref47">47</xref>
        ] and camps [
        <xref ref-type="bibr" rid="ref17 ref31">17, 31</xref>
        ], using various code editors,
such as Snap! [
        <xref ref-type="bibr" rid="ref47">47</xref>
        ], NetsBlox [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], and App Inventor [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ],
and is therefore representative of many learning contexts and
environments. This example assignment includes the three
properties of visual, interactive programs that we designed
ETF to analyze. We describe the ETF approach below.
      </p>
    </sec>
    <sec id="sec-4">
      <title>3.1 Step 1: Generating Execution Traces</title>
      <p>Visual, interactive programs include program states that can
be represented as properties that change over time. For
example, in Snap!, these properties can include: 1) time:
how much milliseconds has passed from the start of
program execution; 2) inputs: including KeysDown (which key
is pressing); MouseDown (if mouse pressing); MouseX and
MouseY (x, y positions of mouse); 3) global variables: the
names (Var.Name and values Var.Value) of global variables;
4) sprite-specific properties: properties that are related to
2In Snap! and Scratch, a stage is a screen on which the
program shows its sprite actions.
specific sprites, such as (x, y) (x, y coordinates); dir
(directions); TouchSprite (which sprites the current sprite is
touching); TouchEdge (which stage edge the sprite is
touching); size (sprite size); OffStage (whether the sprite is
moved out of the stage); the names (Var.Name) and values
Var.Value local variables. The dumped execution trace
tables use sprite names to label sprite-specific properties (e.g.,
to distinguish ball.x from paddle.x3).</p>
      <p>
        Systems such as Snap! and Scratch make use of step
functions to update the above properties based on the
current properties and the current user inputs [
        <xref ref-type="bibr" rid="ref35 ref41">35, 41</xref>
        ] in the
intervals of milliseconds. We instrumented the step
function in Snap! with a trace logging tool, so that with each
step, it adds a row in an execution trace table with the
properties listed above, and dumps the trace table at the
end of the execution. Figure 2 gives an example of a part of
the execution trace table, in which one row logs one discrete
Step created by the step function, with each entry maps to
a property (i.e., a concrete program state).
      </p>
    </sec>
    <sec id="sec-5">
      <title>3.2 Step 2: Summarizing Traces</title>
      <p>ETF algorithm scans through the execution trace table in
a sliding window of multiple steps (default as 2), apply a
Trace Abstraction Function (TAF) that takes in a
sliding window as input, and map this input to a summarized
property set, which is next logged to the summary trace,
described below.</p>
      <p>The TAF Function. How does TAF map a trace sliding
window to a set of properties? The TAF looks for properties
based on candidate properties, and only returns
properties that were found in the sliding window as a summarized
property set. A candidate property is can be an abstract
property, describing the changes between steps in the
execution trace, such as movement and variable change;
candidate property can also be an original trace property which
were already recorded in the execution trace. In each sliding
window, the TAF function returns a summarized property
3ETF uses these properties to summarize trace and
generate features (Section 3.3). To allow comparison across
students, sprites need to have consistent labels across student
programs.
set that includes all found properties, for example, in the
step window 120-121 of Figure 3, all candidate properties
were found because there is a change in position (Move), a
change in direction (Turn), and a non-empty TouchSprite
column in Step 121. This creates a summarized property set
{Move, Turn, TouchSprite}, shown in Row 2 of the summary
trace (Figure 3). In addition, TAF’s candidate properties
also include possible types of parameters, which describe
detailed information of the property.</p>
      <p>For Pong, ETF used 9 types of candidate properties.
Except 2 program state properties: (KeysDown and ChangeVar),
the rest 7 are sprite-specific properties and are labeled with
the sprite names (e.g., Paddle.Move). Among the 9
candidate properties, 4 were original trace properties, directly
returned when the corresponding property in the last step of
the sliding window is non-empty: KeysDown, TouchSprite,
TouchEdge, and OffStage, using the same parameters with
the corresponding execution trace entry at the last step of
the sliding window, explained in Section 3.1. Others are 5
abstract properties, that only checks if a property changes
between the first and last step of the sliding window.
• Move〈←, →, ↑, ↓〉. The Move property is returned when
a sprite position changed between first and last steps
of the sliding window, it uses parameters to describe
the direction toward which it is moving.
• Turn. The Turn property is returned when a sprite
changes direction in the sliding window.
• ChangeSize〈+, -〉. The ChangeSize property is returned
when the Sprite changes its size in the sliding window,
it uses parameters to describe whether it changes to
bigger (+) or smaller (-).
• ChangeVar〈variable names〈+, -〉〉. The ChangeVar
property is returned when one or more global variable’s
value has been changed between the first and last Step
of the sliding window. Its parameters are the actual
variables that have changed value. To enable
comparison across student programs, the variable names are
standardized: the first changed variable in a student’s
execution trace is named as “var 1”, and the next is
named as “var 2”. Each changed variable also takes in
the attribute “+” or“-”, to indicate whether the
variable is increased or decreased.
• ChangeLocalVar〈variable names 〈+, -〉〉. The
ChangeLocalVar property is logged using the same format as
the ChangeVar property, but only on the sprite-specific
variables.</p>
    </sec>
    <sec id="sec-6">
      <title>3.3 Step 3: Generating n-Gram-based Features</title>
      <p>ETF next transforms summary trace created by Step 2 into
a set of features using n-Gram-based approach, where an
nGram takes a contiguous sequence of n items in data
(Figure 3). ETF extracts features of 4 types: 1) 1 -Grams,
extracting simultaneous behaviors, taken from each row
of the summary trace. 2) 2 -Grams, connecting adjacent 1
Grams sequentially; 3) Power Sets. We extract n-Grams
of not only the full property set in each row of the summary
trace, but also of subsets of the property set, such as the
2-set of just Move and Turn from t 1 -Gram {Move, Turn}.
When constructing power sets for 2 -Grams, we apply the
power set on the types of properties that are possible in this
2 -Gram. For example, the 2 -Gram generated by rows 2-3 in
the property sequence [{Move}, {Move, Turn, TouchSprite}]
may be divided into 6 subsets as its power sets: [{Move},
{Move}], [{}, {Turn}],[{}, {TouchSprite}],[{Move}, {Move,
Turn}], [{}, {Turn, TouchSprite}], [{}, {Move, TouchSprite}],
and the 2 -Gram itself. 4) For all the n-Grams extracted
above, we keep both non-parameterized n-Grams, where
we do not record the parameters, as well as parameterized
n-Grams, where each property would include its
parameters when they were logged in the summary trace. Next,
ETF collects distinct features from all students’ feature sets
as the full feature set, which consists of distinct features
from all students.</p>
    </sec>
    <sec id="sec-7">
      <title>3.4 Step 4: Filtering Features</title>
      <p>Merging duplicate features and removing rare
features. Based on the full feature set generated from Step
3, if features have the exact same distribution among
programs, the ETF algorithm then merges these features as one
feature; and it calculates the support of each feature based
on the proportion of student programs that include this
feature, and remove features that have support lower than a
certain threshold, determined by a hyperparameter tuning
process, described in Section 4.2.</p>
      <p>Generating x vectors. After generating, merging
duplicates, and removing rare features, we use the resulting
feature set as the independent variables, and for each student
program, we use 1 as representing the presence of a feature
in the student program (i.e. the n-Gram appeared at least
once in their abstracted execution trace), 0 as the absence
of the feature, and generate 0-1 digitized x vector for each
student’s code snapshot, which is used as vector input for a
classification model.</p>
    </sec>
    <sec id="sec-8">
      <title>4. EVALUATION</title>
      <p>We investigate our research question: How accurately
does ETF perform rubric-based code classification of
students in-progress and submitted code, and how
does this compare to syntax-based approaches?. We
first a) compare performance of ETF features and
syntaxbased features across models; and next b) compare ETF
features and syntax-based features across rubrics on a
fixed model. Our analysis of a) and b) follows the same
procedure, where we started by generating ETF and
syntaxbased features separately ( Section 4.1). We next performed
the same feature filtering, training and evaluation procedure
on the features we created (Section 4.2).</p>
      <p>Dataset. We evaluated ETF on 42 students’ 162 code
snapshots for a Pong game assignment, sampling student
code snapshots at 10 minutes (42), 20 minutes (40) and
30 minutes (38) of work, as well as their final submissions
(42). This creates a representative sample of when students
might ask for help—both during programming, and before
submitting their code. To create rubric-based labels on all
in-progress and submitted code snapshots, one researcher
manually graded all 162 programs based on the 10
rubricbased assignment requirements specified by the course
instructor: 1) &amp; 2) key up / down: Paddle moves up / down
with the up / down arrow key. 3) &amp; 4) upper / lower bound :
When touching the upper / lower bound, the paddle does
not move upwards / downwards even when the up / down
key is pressed. 5) space start: The ball starts movement
when the space key is pressed. 6) edge bounce: The ball
bounces when touching the stage edge, unless touching the
wall. 7) paddle bounce: The ball bounces when touching
the paddle. 8) paddle score: If the ball touches the paddle,
points increase by 1. 9) reset score: If the ball touches the
wall behind the paddle, the points are reset to 0. 10)
reset ball : If the ball touches the wall behind the paddle, the
ball is reset.</p>
      <p>
        We selected this dataset for three reasons: 1) Our prior work
conducted formative analysis on the 42 submitted snapshots
[
        <xref ref-type="bibr" rid="ref41">41</xref>
        ], and found it to represent the typical properties that are
shared by many visual, interactive programs: dynamic user
interaction; object-specific program states; and properties
that change over time. 2) It is a widely-used
introductory programming assignment [
        <xref ref-type="bibr" rid="ref17 ref31 ref47">47, 17, 31</xref>
        ], suitable for many
types of programming environments, and is therefore
representative of many learning contexts and environments.
      </p>
    </sec>
    <sec id="sec-9">
      <title>4.1 Generating Features</title>
      <p>Generating ETF features. We used the procedure
described in the Step 1 – 3 (Section 3.1–3.3) of the ETF
approach to generate ETF features. First, to automatically
execute student programs, we started by defining 5 input
generation rules (explained in Section 3.1),
corresponding to the requirements of rubric items: 1) space key once:
when game starts, press space key once; corresponding to
the space start rubric item; 2) &amp; 3) intermittent up / down
key: press up / down arrow key for 2 steps in every 100
milliseconds, for a total of 15 seconds; corresponding to key up
and key down rubric items; 4) &amp; 5) follow / evade ball :
when ball.y &gt; paddle.y, press up key (to follow) / down
key (to evade); when ball.y &lt; paddle.y, press down key
(to follow) / up key (to evade); follow ball were defined to
ensure the paddle catches the ball, for the paddle bounce,
paddle score rubric items; and evade ball were defined for
the ball to hit back wall, for the reset score, reset ball rubric
items. For each program snapshot, we re-executed it 5 times,
each time performing the following sequence of inputs: 1,2
(meaning space key once followed with intermittent up key);
1,3; 1,4; 1,4,5 and 1,4,5. Each run of student programs
generated one execution table. Overall, this resulted in 5 × 162
execution trace tables, each with an average of 1182 rows.
After generating execution traces, we applied Steps 2 and 3
of ETF Algorithm (Section 3.2 and 3.3) to summarize each
execution trace based on 2-step-based sliding windows,
creating a summary trace with an average of 1181 rows per
summary trace. Next, we created 1 -Gram and 2
-Grambased full feature sets for each program. This Step collected
from each student an average of 518 distinct features, and
created a total of 11148 distinct features in the full feature
set.</p>
      <p>
        Generating AST n-Gram and 1 -Gram Features. To
examine how well ETF performs, we first compared it with
a representative, syntax-based feature extraction approach
that has performed well in prior evaluations by using the
AST n-Gram feature extraction approach described by Akram
et al. in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Similar to Akram et al.’s work, we extracted
all n-Grams from all ASTs, using n = 1 to 5 for vertical
n-Grams, and n = 1 to 4 for horizontal n-Grams (explained
in Section 2). Similar to many AST feature extraction
approaches [
        <xref ref-type="bibr" rid="ref27 ref32 ref48">27, 32, 48</xref>
        ], we used a single label for all literals
(literal). This Step collected from each student an average
of 153 distinct features, and created a total of 1145 distinct
features as the full feature set. In addition to the structured
n-Gram based approach, we also included a naive baseline,
where we only generate the full feature set by extracting 1
Grams from all students’ ASTs (n-Grams with n = 1). This
is essentially a 1-hot encoding of the AST nodes, where each
node is either present (1) or absent (0). Each student’s
program had an average of 20 distinct 1 -Grams, creating a full
feature set with 57 distinct 1 -Grams.
      </p>
    </sec>
    <sec id="sec-10">
      <title>4.2 Feature Filtering &amp; Evaluation</title>
      <p>We applied the same feature filtering and evaluation to the
ETF, AST n-Gram, and AST 1 -Gram features:
Feature Filtering. For fairness of comparison, after
collecting features, we used the Step 4 from the ETF
algorithm to filter features for all ETF, AST n-Gram, and AST
1 -Gram features. For each type of the three features, we
started by using ETF to automatically merge duplicate
features (Step 4.a), and remove features that have support
smaller than a certain threshold in the training set (Step
4.b). The threshold is set as a hyperparameter (tuned as
described below).</p>
      <p>
        Classification Models. To ensure that our comparison
was not model-specific, we used 6 different models on the
feature set: Logistic Regression, AdaBoost, Random Forest,
Multi-layer perceptron (MLP), Gaussian Process, and SVM.
Among them, the Gaussian Process model with an RBF
kernel was also employed by Akram et al., and has shown to be
the best performing model in the rubric-based performance
inference task that they have applied [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>
        Training &amp; Evaluation. We employed 10-fold cross-validation
to evaluate how accurately these different features predict
the rubric-based performance. Within each round of
crossvalidation, we used another 2-fold cross-validation to tune
the hyperparameters (i.e. nested cross-validation [
        <xref ref-type="bibr" rid="ref36">36</xref>
        ]). For
all models, we included a minimum feature support
threshold hyperparameter, T , below which we exclude the feature
(e.g. ETF feature or AST n-Gram feature) from the final
feature set, with the minimum support threshold as a
hyperparameter, tuned based on 5 values: {0, 5%, 10%, 15%, 20%}.
Additionally, since different feature extraction approaches
may perform best with different values of model-specific
hyperparameters, we also tuned hyperparameters for each
classification models, based on the following values:
Logistic regression: with penalty in {L1, L2}; Random
Forest: with n estimaters (i.e., number of trees in the forest)
in {100, 200, 300, 400, 500}; AdaBoost: with learning rate in
{0.01, 0.1, 1}; MLP : with learning rate in {0.001, 0.01, 0.1};
SVM : We used a linear kernel, with the regularization
parameter (C) in {0.01, 0.1, 1, 10, 100}; Gaussian Process
models optimize kernel hyperparameters during model fitting,
we therefore did not tune hyperparameters for the
Gaussian Process classifier. The values of the minimum feature
support threshold and the model-specific hyperparameters
were determined by their F1 scores in the nested 2-fold
crossvalidation, based on a grid search on 5*#(model-specific
hyperparameter values) possible types of hyperparameter
combinations, during each round of the 10-fold cross-validation.
Since many of our target labels are imbalanced, the
accuracy score offers less information on how well our model
performs in predicting target labels. We therefore use F1
scores to tune hyperparameters. To ensure that data from a
given student was not contained in both training and testing
sets, all cross-validation splits were done on the 42 students
(instead of on the 162 snapshots).
4.2.1 Results
Comparison Across Models. For each of the 6
models described earlier, we used the model to predict students’
rubric-based performance, and calculated its F1 score among
the 162 students’ data using 10-fold cross validation,
creating one F1 score for each rubric. We next averaged F1 scores
for each classifier across all rubrics. Table 2 reports the
average F1 of each classifier in its prediction across all rubric
items. First, an overall 0.73+ F1 score of the AST 1 -Gram
features shows that each node in students’ code AST offered
relatively useful information to indicate whether the student
have successfully completed a certain rubric. Second, we saw
that the AST n-Gram approach performed relatively higher
than the 1 -Gram approach (4 in 6 cases), but only by 0.005–
0.015. In addition, we also saw that ETF features generated
F1 scores that were consistently 0.13 to 0.2 higher than the
AST n-Gram features, showing that all classifiers benefited
from the execution-trace-based information extracted by the
ETF features, with overall F1 scores between 0.9 and 0.93.
This result shows potential for us to make use of ETF
features to correctly analyze students’ current progress, which
should enable automated, formative feedback in future work,
to help a student who is stuck in the middle of programming.
Performance Across Rubrics. We next investigate the
performance of the three feature extraction approaches across
rubrics. Since all model show similar trends, we select
      </p>
      <p>SVM and present performance on all rubrics in Figure 4.
We found 1) The naive AST 1 -Gram features had relatively
lower F1 scores on rubrics that had less prevalence in data
(e.g., reset score, reset ball ); 2) Comparing to AST 1 -Gram,
the AST n-Gram features produced higher F1 scores for
paddle score, reset score, reset ball, showing that AST
nGram extracted more useful feature for these three rubric
items. However, the ETF features performed relatively well
across all rubrics, with its F1 scores ranging from 0.87 to
0.99, showing that ETF features have strong potential to
enable formative feedback on a variety of fine-grained,
specific rubrics.</p>
    </sec>
    <sec id="sec-11">
      <title>5. DISCUSSION &amp; LIMITATIONS</title>
      <p>
        We found that ETF creates features that lead to highly
accurate rubric-based classification of students’ in-progress and
submitted code (average F1 = 0.93), and it only requires
relatively little labeled data to achieve high performance on
most rubrics. Therefore, this work shows potential to use
the ETF approach to generate formative feedback to
students, indicating their progress on each rubric item as they
work. This would only require an instructor to manually
grade a small amount of students’ in-progress and
submitted code to create the model. We envision that the ETF
approach can be used to build a tool where, whenever a
student runs their code, it logs an execution trace, extracts a
set of meaningful features from that execution trace, and use
the presence and absence of features to accurately predict
students’ rubric-based performance. This could be used to
offer encouraging feedback as students progress that can
improve performance and affective outcomes (e.g. [
        <xref ref-type="bibr" rid="ref20 ref8">8, 20</xref>
        ]). It
could also monitor students’ progress over time, and prompt
them to seek help when they have not progressed for a while
(e.g. [
        <xref ref-type="bibr" rid="ref19 ref30">19, 30</xref>
        ]), or to inform a teacher dashboard summarizing
students’ progress (e.g. [
        <xref ref-type="bibr" rid="ref44">44</xref>
        ]). While our model is not
perfect, its accuracy is high enough to ensure the overall quality
of this feedback, and comparable with expert-authored
formative assessment models, used in existing systems [
        <xref ref-type="bibr" rid="ref20 ref42">20, 42</xref>
        ],
which are also fallible. However, despite the strong
potential of applying execution trace-based feature engineering to
visual, interactive programs, our work does include several
limitations, discussed below:
Limitation: ETF features are sensitive to inputs. All
trace-based program analysis takes in inputs to execute the
programs. However, defining inputs for visual, interactive
programs is particularly difficult. We have shown that
defining one set of input generation rules may not always produce
high-coverage executions for all programs. This caused ETF
to fail to generate features that are indicative of a certain
behavior. Most of the erroneous predictions produced by the
ETF features were caused by insufficient input sequences,
showing that the input sequence had a strong influence on
the classification results. In addition, if a student started the
project with mouse click button instead of pressing space or
green flag, the used input sequence would be insufficient to
start students’ program, and therefore unable to detect
subsequent program behaviors.
      </p>
      <p>
        This difficulty about producing high-coverage input sequences
is shared by all program analysis tools for visual, interactive
programs [
        <xref ref-type="bibr" rid="ref34 ref35 ref37 ref41">35, 34, 41, 37</xref>
        ], and requires future work such as
fully automated input generation to handle this problem.
However, we also imagine that the real-world scenario that
we envision ETF to work best in does not always require
writing input generation rules for automated input
generation. We may simply log execution traces when a student
or instructor manually executes a program (e.g., to test or
grade it), and use these execution traces to train the model
(from instructor-generated traces) and to offer feedback (for
student-generated traces). These execution traces would
almost certainly include meaningful inputs that students /
instructors use to test and grade programs, which may be
even more effective than our input generation rules.
Limitation: Selection of candidate properties require
human expertise. For the Pong assignment, we designed
ETF to include 9 candidate properties, such as detecting
movement and variable changes in the execution trace. While
we expect the candidate properties we included to be
generalizable, as they are found in many other novice
programming tasks, we did not evaluate their generalizability here.
In addition, there could potentially be other properties that
are important for different assignments (e.g., sound effects,
mouse movement, etc), which would require adding new
candidate properties. We make no claim that the 9 properties
we designed for Pong are an exhaustive list of useful
properties, but suggest them as a core set that should be generally
useful. In future work, we will explore expanding this set of
candidate properties to cover additional assignments and to
explore the generalizability of the ETF approach.
      </p>
    </sec>
    <sec id="sec-12">
      <title>6. CONCLUSION</title>
      <p>In this work, we explore feature engineering for
classifying visual, interactive programs. We present a novel,
effective approach that extracted useful features from execution
traces (ETF), leading to high predictive accuracy. Our
results show strong potential for using ETF to monitor student
progress and offer automated, formative feedback.</p>
    </sec>
    <sec id="sec-13">
      <title>7. ACKNOWLEDGEMENTS</title>
      <p>This material is based upon work supported by the National
Science Foundation under Grant No. 1917885.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>B.</given-names>
            <surname>Akram</surname>
          </string-name>
          et al.
          <article-title>Assessment of students' computer science focal knowledge, skills, and abilities in game-based learning environments</article-title>
          .
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>B.</given-names>
            <surname>Akram</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Min</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Wiebe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Navied</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Mott</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. E.</given-names>
            <surname>Boyer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Lester</surname>
          </string-name>
          , et al.
          <article-title>Automated assessment of computer science competencies from student programs with gaussian process regression</article-title>
          .
          <source>In Proceedings of the 2020 Educational Data Mining Conference</source>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Allamanis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. T.</given-names>
            <surname>Barr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Devanbu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Sutton</surname>
          </string-name>
          .
          <article-title>A survey of machine learning for big code and naturalness</article-title>
          .
          <source>ACM Computing Surveys (CSUR)</source>
          ,
          <volume>51</volume>
          (
          <issue>4</issue>
          ):
          <fpage>1</fpage>
          -
          <lpage>37</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>U.</given-names>
            <surname>Alon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Zilberstein</surname>
          </string-name>
          ,
          <string-name>
            <surname>O. Levy</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E.</given-names>
            <surname>Yahav</surname>
          </string-name>
          .
          <article-title>A general path-based representation for predicting program properties</article-title>
          .
          <source>PLDI'18</source>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>U.</given-names>
            <surname>Alon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Zilberstein</surname>
          </string-name>
          ,
          <string-name>
            <surname>O. Levy</surname>
          </string-name>
          , and
          <string-name>
            <surname>E. Yahav.</surname>
          </string-name>
          <article-title>code2vec: Learning distributed representations of code</article-title>
          .
          <source>POPL'19</source>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>C. R.</given-names>
            <surname>Association</surname>
          </string-name>
          et al.
          <article-title>Generation cs: Computer science undergraduate enrollments surge since 2006</article-title>
          .
          <source>Retrieved March</source>
          ,
          <volume>20</volume>
          :
          <year>2017</year>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Azcona</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Arora</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.-H.</given-names>
            <surname>Hsiao</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Smeaton</surname>
          </string-name>
          . user2code2vec:
          <article-title>Embeddings for profiling students based on distributional representations of source code</article-title>
          .
          <source>In LAK'19</source>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A. T.</given-names>
            <surname>Corbett</surname>
          </string-name>
          and
          <string-name>
            <given-names>J. R.</given-names>
            <surname>Anderson</surname>
          </string-name>
          .
          <article-title>Locus of feedback control in computer-based tutoring: Impact on learning rate, achievement and attitudes</article-title>
          .
          <source>In Proceedings of the SIGCHI conference on Human factors in computing systems</source>
          , pages
          <fpage>245</fpage>
          -
          <lpage>252</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>N.</given-names>
            <surname>Diana</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Eagle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Stamper</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Grover</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Bienkowski</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Basu</surname>
          </string-name>
          .
          <article-title>Data-driven generation of rubric criteria from an educational programming environment</article-title>
          .
          <source>In Proceedings of the 8th International Conference on Learning Analytics and Knowledge</source>
          , pages
          <fpage>16</fpage>
          -
          <lpage>20</lpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S. H.</given-names>
            <surname>Edwards</surname>
          </string-name>
          and
          <string-name>
            <given-names>K. P.</given-names>
            <surname>Murali</surname>
          </string-name>
          .
          <article-title>Codeworkout: short programming exercises with built-in data collection</article-title>
          .
          <source>In Proceedings of the 2017 ACM Conference on Innovation and Technology in Computer Science Education</source>
          , pages
          <fpage>188</fpage>
          -
          <lpage>193</lpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>S.</given-names>
            <surname>Grover</surname>
          </string-name>
          .
          <article-title>Toward a framework for formative assessment of conceptual learning in k-12 computer science classrooms</article-title>
          .
          <source>In Proceedings of the 52nd ACM Technical Symposium on Computer Science Education</source>
          , pages
          <fpage>31</fpage>
          -
          <lpage>37</lpage>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>D.</given-names>
            <surname>Hovemeyer</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Spacco</surname>
          </string-name>
          .
          <article-title>Cloudcoder: a web-based programming exercise system</article-title>
          .
          <source>Journal of Computing Sciences in Colleges</source>
          ,
          <volume>28</volume>
          (
          <issue>3</issue>
          ):
          <fpage>30</fpage>
          -
          <lpage>30</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>S.</given-names>
            <surname>Iyer</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Konstas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Cheung</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L.</given-names>
            <surname>Zettlemoyer</surname>
          </string-name>
          .
          <article-title>Summarizing source code using a neural attention model</article-title>
          .
          <source>In Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)</source>
          , pages
          <fpage>2073</fpage>
          -
          <lpage>2083</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Ko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. A.</given-names>
            <surname>Myers</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H. H.</given-names>
            <surname>Aung</surname>
          </string-name>
          .
          <article-title>Six learning barriers in end-user programming systems</article-title>
          .
          <source>In 2004 IEEE Symposium on Visual Languages-Human Centric Computing</source>
          , pages
          <fpage>199</fpage>
          -
          <lpage>206</lpage>
          . IEEE,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M.</given-names>
            <surname>Ko</surname>
          </string-name>
          <article-title>¨lling. The greenfoot programming environment</article-title>
          .
          <source>ACM Transactions on Computing Education (TOCE)</source>
          ,
          <volume>10</volume>
          (
          <issue>4</issue>
          ):
          <fpage>1</fpage>
          -
          <lpage>21</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A. N.</given-names>
            <surname>Kumar</surname>
          </string-name>
          .
          <article-title>Explanation of step-by-step execution as feedback for problems on program analysis, and its generation in model-based problem-solving tutors</article-title>
          .
          <source>Technology, Instruction, Cognition and Learning (TICL) Journal</source>
          ,
          <volume>4</volume>
          (
          <issue>1</issue>
          ),
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>N.</given-names>
            <surname>Lytle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Milliken</surname>
          </string-name>
          , V. Catet´e, and
          <string-name>
            <given-names>T.</given-names>
            <surname>Barnes</surname>
          </string-name>
          .
          <article-title>Investigating different assignment designs to promote collaboration in block-based environments</article-title>
          .
          <source>In Proceedings of the 51st ACM Technical Symposium on Computer Science Education, SIGCSE '20, page 832ˆaA˘ S¸838</source>
          , New York, NY, USA,
          <year>2020</year>
          .
          <article-title>Association for Computing Machinery</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Mao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Zhi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Khoshnevisan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. W.</given-names>
            <surname>Price</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Barnes</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Chi</surname>
          </string-name>
          .
          <article-title>One minute is enough: Early prediction of student success and event-level difficulty during a novice programming task</article-title>
          .
          <source>International Educational Data Mining Society</source>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>S.</given-names>
            <surname>Marwan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Dombe</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T. W.</given-names>
            <surname>Price</surname>
          </string-name>
          .
          <article-title>Unproductive help-seeking in programming: What it is and how to address it</article-title>
          .
          <source>In Proceedings of the 2020 ACM Conference on Innovation and Technology in Computer Science Education</source>
          , pages
          <fpage>54</fpage>
          -
          <lpage>60</lpage>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>S.</given-names>
            <surname>Marwan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Gao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Fisk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. W.</given-names>
            <surname>Price</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Barnes</surname>
          </string-name>
          .
          <article-title>Adaptive immediate feedback can improve novice programming engagement and intention to persist in computer science</article-title>
          .
          <source>In Proceedings of the 2020 ACM Conference on International Computing Education Research</source>
          , pages
          <fpage>194</fpage>
          -
          <lpage>203</lpage>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>J.</given-names>
            <surname>Moenig</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Harvey</surname>
          </string-name>
          .
          <article-title>Byob build your own blocks (a/k/a snap!)</article-title>
          . URL: http://byob. berkeley. edu/, accessed Aug,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>L.</given-names>
            <surname>Mou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Wang</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Z.</given-names>
            <surname>Jin</surname>
          </string-name>
          .
          <article-title>Convolutional neural networks over tree structures for programming language processing</article-title>
          .
          <source>In Thirtieth AAAI Conference on Artificial Intelligence</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>B.</given-names>
            <surname>Paaßen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Jensen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Hammer</surname>
          </string-name>
          .
          <article-title>Execution traces as a powerful data representation for intelligent tutoring systems for programming</article-title>
          .
          <source>International Educational Data Mining Society</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>A.</given-names>
            <surname>Patil</surname>
          </string-name>
          .
          <article-title>Automatic grading of programming assignments</article-title>
          .
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>C.</given-names>
            <surname>Piech</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Huang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Nguyen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Phulsuksombati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Sahami</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L.</given-names>
            <surname>Guibas</surname>
          </string-name>
          .
          <article-title>Learning program embeddings to propagate feedback on student code</article-title>
          .
          <source>In International Conference on Machine Learning</source>
          , pages
          <fpage>1093</fpage>
          -
          <lpage>1102</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>T.</given-names>
            <surname>Price</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Zhi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Barnes</surname>
          </string-name>
          .
          <article-title>Evaluation of a datadriven feedback algorithm for open-ended programming</article-title>
          .
          <source>International Educational Data Mining Society</source>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>T. W.</given-names>
            <surname>Price</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Dong</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Barnes</surname>
          </string-name>
          .
          <article-title>Generating data-driven hints for open-ended programming</article-title>
          .
          <source>International Educational Data Mining Society</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>C.</given-names>
            <surname>Reas</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Fry</surname>
          </string-name>
          .
          <article-title>Processing: programming for the media arts</article-title>
          .
          <source>AI &amp; SOCIETY</source>
          ,
          <volume>20</volume>
          (
          <issue>4</issue>
          ):
          <fpage>526</fpage>
          -
          <lpage>538</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>M.</given-names>
            <surname>Resnick</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Maloney</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <article-title>Monroy-Hern´andez</article-title>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Rusk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Eastmond</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Brennan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Millner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Rosenbaum</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Silver</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Silverman</surname>
          </string-name>
          , et al.
          <article-title>Scratch: programming for all</article-title>
          .
          <source>Communications of the ACM</source>
          ,
          <volume>52</volume>
          (
          <issue>11</issue>
          ):
          <fpage>60</fpage>
          -
          <lpage>67</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>I.</given-names>
            <surname>Roll</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Aleven</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. M.</given-names>
            <surname>McLaren</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Ryu</surname>
          </string-name>
          , R. S. d
          <string-name>
            <surname>Baker</surname>
            , and
            <given-names>K. R.</given-names>
          </string-name>
          <string-name>
            <surname>Koedinger</surname>
          </string-name>
          .
          <article-title>The help tutor: does metacognitive feedback improve studentsˆaA˘ Z´ helpseeking actions, skills and learning?</article-title>
          <source>In International Conference on Intelligent Tutoring Systems</source>
          , pages
          <fpage>360</fpage>
          -
          <lpage>369</lpage>
          . Springer,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>K.</given-names>
            <surname>Roy</surname>
          </string-name>
          .
          <article-title>App inventor for android: Report from a summer camp</article-title>
          .
          <source>In Proceedings of the 43rd ACM Technical Symposium on Computer Science Education, SIGCSE '12</source>
          , pages
          <fpage>283</fpage>
          -
          <lpage>288</lpage>
          , New York, NY, USA,
          <year>2012</year>
          .
          <article-title>Association for Computing Machinery</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Shi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Shah</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Marwan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Penmetsa</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Price</surname>
          </string-name>
          .
          <article-title>Toward semi-automatic misconception discovery using code embeddings</article-title>
          .
          <source>In The 11th International Conference on Learning Analytics and Knowledge (LAK 21)</source>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>V. J.</given-names>
            <surname>Shute</surname>
          </string-name>
          .
          <source>Focus on Formative Feedback. Review of Educational Research</source>
          ,
          <volume>78</volume>
          (
          <issue>1</issue>
          ):
          <fpage>153</fpage>
          -
          <lpage>189</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <given-names>A.</given-names>
            <surname>Stahlbauer</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          <article-title>Fra¨drich, and</article-title>
          <string-name>
            <given-names>G.</given-names>
            <surname>Fraser</surname>
          </string-name>
          .
          <article-title>Verified from scratch: Program analysis for learners' programs</article-title>
          .
          <source>In 35th IEEE/ACM International Conference on Automated Software Engineering, ASE</source>
          <year>2020</year>
          , Melbourne, Australia,
          <source>September 21-25</source>
          ,
          <year>2020</year>
          , pages
          <fpage>150</fpage>
          -
          <lpage>162</lpage>
          . IEEE,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>A.</given-names>
            <surname>Stahlbauer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kreis</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Fraser</surname>
          </string-name>
          .
          <article-title>Testing scratch programs automatically</article-title>
          .
          <source>In Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering</source>
          , pages
          <fpage>165</fpage>
          -
          <lpage>175</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [36]
          <string-name>
            <given-names>M.</given-names>
            <surname>Stone</surname>
          </string-name>
          .
          <article-title>Cross-validatory choice and assessment of statistical predictions</article-title>
          .
          <source>Journal of the Royal Statistical Society: Series B (Methodological)</source>
          ,
          <volume>36</volume>
          (
          <issue>2</issue>
          ):
          <fpage>111</fpage>
          -
          <lpage>133</lpage>
          ,
          <year>1974</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [37]
          <string-name>
            <given-names>W.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Fraser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Barnes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Martens</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Price</surname>
          </string-name>
          .
          <article-title>Automated classification of visual, interactive programs using execution traces</article-title>
          .
          <source>In Proceedings of the 14th International Conference on Educational Data Mining (EDM</source>
          <year>2021</year>
          ),
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [38]
          <string-name>
            <given-names>W.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kwatra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Skripchuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Gomes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Milliken</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Martens</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Barnes</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Price</surname>
          </string-name>
          .
          <article-title>Novices' learning barriers when using code examples in openended programming</article-title>
          .
          <source>In Proceedings of the 26th ACM Conference on Innovation and Technology in Computer Science Education V. 1</source>
          ,
          <issue>ITiCSE</issue>
          '
          <volume>21</volume>
          , pages
          <fpage>394</fpage>
          -
          <lpage>400</lpage>
          , New York, NY, USA,
          <year>2021</year>
          .
          <article-title>Association for Computing Machinery</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [39]
          <string-name>
            <given-names>W.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Rao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Shi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Milliken</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Martens</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Barnes</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T. W.</given-names>
            <surname>Price</surname>
          </string-name>
          .
          <article-title>Comparing feature engineering approaches to predict complex programming behaviors</article-title>
          .
          <source>Educational Data Mining in Computer Science Education (CSEDM) Workshop @ EDM'20</source>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [40]
          <string-name>
            <given-names>W.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Rao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Zhi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Marwan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Gao</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T. W.</given-names>
            <surname>Price</surname>
          </string-name>
          .
          <article-title>Step tutor: Supporting students through step-by-step example-based feedback</article-title>
          .
          <source>In Proceedings of the 2020 ACM Conference on Innovation and Technology in Computer Science Education</source>
          , pages
          <fpage>391</fpage>
          -
          <lpage>397</lpage>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          [41]
          <string-name>
            <given-names>W.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Stahlbauer</surname>
          </string-name>
          , G. Fraser, and
          <string-name>
            <given-names>T.</given-names>
            <surname>Price</surname>
          </string-name>
          . Snapcheck:
          <article-title>Automated testing for snap programs</article-title>
          .
          <source>In Proceedings of the 26th ACM Conference on Innovation and Technology in Computer Science Education V. 1</source>
          ,
          <issue>ITiCSE</issue>
          '
          <volume>21</volume>
          , pages
          <fpage>227</fpage>
          -
          <lpage>233</lpage>
          , New York, NY, USA,
          <year>2021</year>
          .
          <article-title>Association for Computing Machinery</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          [42]
          <string-name>
            <given-names>W.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Zhi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Milliken</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Lytle</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T. W.</given-names>
            <surname>Price</surname>
          </string-name>
          . Crescendo :
          <article-title>Engaging Students to Self-Paced Programming Practices</article-title>
          .
          <source>In Proceedings of the ACM Technical Symposium on Computer Science Education</source>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          [43]
          <string-name>
            <surname>M. Wu</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Mosse</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Goodman</surname>
            , and
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Piech</surname>
          </string-name>
          .
          <article-title>Zero shot learning for code education: Rubric sampling with deep learning inference</article-title>
          .
          <source>In Proceedings of the AAAI Conference on Artificial Intelligence</source>
          , volume
          <volume>33</volume>
          , pages
          <fpage>782</fpage>
          -
          <lpage>790</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref44">
        <mixed-citation>
          [44]
          <string-name>
            <given-names>F.</given-names>
            <surname>Xhakaj</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Aleven</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B. M.</given-names>
            <surname>McLaren</surname>
          </string-name>
          .
          <article-title>Effects of a teacher dashboard for an intelligent tutoring system on teacher knowledge, lesson planning, lessons and student learning</article-title>
          .
          <source>In European conference on technology enhanced learning</source>
          , pages
          <fpage>315</fpage>
          -
          <lpage>329</lpage>
          . Springer,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref45">
        <mixed-citation>
          [45]
          <string-name>
            <given-names>L.</given-names>
            <surname>Yan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>McKeown</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Piech</surname>
          </string-name>
          .
          <article-title>The pyramidsnapshot challenge: Understanding student process from visual output of programs</article-title>
          .
          <source>In Proceedings of the 50th ACM Technical Symposium on Computer Science Education</source>
          , pages
          <fpage>119</fpage>
          -
          <lpage>125</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref46">
        <mixed-citation>
          [46]
          <string-name>
            <surname>T. P. T. B. Ye Mao</surname>
            ,
            <given-names>Samiha</given-names>
          </string-name>
          <string-name>
            <surname>Marwan</surname>
            and
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Chi</surname>
          </string-name>
          .
          <article-title>What time is it? student modeling needs to know</article-title>
          . pages
          <fpage>171</fpage>
          -
          <lpage>182</lpage>
          .
          <source>Proceedings of The 13th International Conference on Educational Data Mining (EDM</source>
          <year>2020</year>
          ),
          <year>07 2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref47">
        <mixed-citation>
          [47]
          <string-name>
            <given-names>R.</given-names>
            <surname>Zhi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Chi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Barnes</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T. W.</given-names>
            <surname>Price</surname>
          </string-name>
          .
          <article-title>Evaluating the effectiveness of parsons problems for block-based programming</article-title>
          .
          <source>In Proceedings of the 2019 ACM Conference on International Computing Education Research</source>
          , pages
          <fpage>51</fpage>
          -
          <lpage>59</lpage>
          . ACM,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref48">
        <mixed-citation>
          [48]
          <string-name>
            <given-names>R.</given-names>
            <surname>Zhi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Marwan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Dong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Lytle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. W.</given-names>
            <surname>Price</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Barnes</surname>
          </string-name>
          .
          <article-title>Toward Data-Driven Example Feedback for Novice Programming</article-title>
          .
          <source>Proceedings of the International Conference on Educational Data Mining</source>
          , pages
          <fpage>218</fpage>
          -
          <lpage>227</lpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref49">
        <mixed-citation>
          [49]
          <string-name>
            <given-names>R.</given-names>
            <surname>Zhi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. W.</given-names>
            <surname>Price</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Lytle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Dong</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Barnes</surname>
          </string-name>
          .
          <article-title>Reducing the state space of programming problems through data-driven feature detection</article-title>
          .
          <source>In Educational Data Mining in Computer Science Education (CSEDM) Workshop@ EDM</source>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref50">
        <mixed-citation>
          [50]
          <string-name>
            <given-names>K.</given-names>
            <surname>Zimmerman</surname>
          </string-name>
          and
          <string-name>
            <given-names>C. R.</given-names>
            <surname>Rupakheti</surname>
          </string-name>
          .
          <article-title>An automated framework for recommending program elements to novices (n)</article-title>
          .
          <source>In 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE)</source>
          , pages
          <fpage>283</fpage>
          -
          <lpage>288</lpage>
          . IEEE,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>