diff options
author | Timotej Lazar <timotej.lazar@fri.uni-lj.si> | 2017-04-17 16:32:08 +0200 |
---|---|---|
committer | Timotej Lazar <timotej.lazar@fri.uni-lj.si> | 2017-04-17 16:32:36 +0200 |
commit | fa38d4ca99f863573b8900ef78d5191b8f2db561 (patch) | |
tree | 2102c9f88b1c52e1fce2b2b62b3b7138de9dd195 | |
parent | c3615b45b84e81e421763d76d01fa363dd79f985 (diff) |
Fit the twelve (publisher remix)
Because the message should fit the medium.
-rw-r--r-- | paper/aied2017.tex | 8 | ||||
-rw-r--r-- | paper/introduction.tex | 2 | ||||
-rw-r--r-- | paper/method.tex | 2 |
3 files changed, 6 insertions, 6 deletions
diff --git a/paper/aied2017.tex b/paper/aied2017.tex index 3faaaf8..3acc90e 100644 --- a/paper/aied2017.tex +++ b/paper/aied2017.tex @@ -39,13 +39,13 @@ \begin{abstract} % motivation -When implementing a programming tutor, it is often difficult to manually consider all possible errors encountered by students. An alternative is to automatically learn a bug library of erroneous patterns from students’ programs. +When implementing a programming tutor it is often difficult to manually consider all possible errors encountered by students. An alternative is to automatically learn a bug library of erroneous patterns from students’ programs. % learning -We propose using abstract-syntax-tree (AST) patterns as features for learning rules to distinguish between correct and incorrect programs. These rules can be used for debugging student programs: rules for incorrect programs (buggy rules) contain patterns indicating mistakes, whereas rules for correct programs cover subsets of submissions sharing the same solution strategy. +We propose abstract-syntax-tree (AST) patterns as features for learning rules to distinguish between correct and incorrect programs. We use these rules to debug student programs: rules for incorrect programs (buggy rules) indicate mistakes, whereas rules for correct programs group programs with the same solution strategy. % generating hints -To generate hints, we first check all buggy rules and point out incorrect patterns. If no buggy rule matches, rules for correct programs are used to recognize the student’s intent and suggest patterns that still need to be implemented. +To generate hints, we first check buggy rules and point out incorrect patterns. If no buggy rule matches, we use rules for correct programs to recognize the student’s intent and suggest missing patterns. % evaluation -We evaluated our approach on past student programming data for a number of Prolog problems. For 31 out of 44 problems, the induced rules correctly classified over 85\% of programs based only on their structural features. For approximately 73\% of incorrect submissions, we were able to generate hints that were implemented by the student in some subsequent submission. +We evaluate our approach on past student programming data for a number of Prolog problems. For 31 out of 44 problems, the induced rules correctly classify over 85\% of programs based only on their structural features. For approximately 73\% of incorrect submissions, we are able to generate hints that were implemented by the student in some subsequent submission. \\\\ \textbf{Keywords:} Programming tutors · Error diagnosis · Hint generation · Abstract syntax tree · Syntactic features \end{abstract} diff --git a/paper/introduction.tex b/paper/introduction.tex index baf8ba0..f683fd0 100644 --- a/paper/introduction.tex +++ b/paper/introduction.tex @@ -7,7 +7,7 @@ Programming education is becoming increasingly accessible with massive online co Traditional programming tutors use manually constructed domain models to generate feedback. Model-tracing tutors simulate the problem-solving \emph{process}: how students program. This is challenging because there are no well-defined steps when writing a program. Many tutors instead only analyze individual programs submitted by students, and disregard how a program evolved. They often use models coded in terms of constraints or bug libraries~\cite{keuning2016towards}. % data-driven domain modeling -Developing a domain model requires significant knowledge-engineering effort~\cite{folsom-kovarik2010plan}. This is particularly true for programming tutors, where most problems have several alternative solutions with many possible implementations~\cite{le2013operationalizing}. Data-driven tutors reduce the necessary effort by mining educational data -- often from online courses -- to learn common errors and generate feedback~\cite{rivers2015data-driven,nguyen2014codewebs,jin2012program}. +Developing a domain model typically requires significant knowledge-engineer\-ing effort~\cite{folsom-kovarik2010plan}. This is particularly true for programming tutors, where most problems have several alternative solutions with many possible implementations~\cite{le2013operationalizing}. Data-driven tutors reduce the necessary authoring effort by mining educational data -- often from online courses -- to learn common errors and generate feedback~\cite{rivers2015data-driven,nguyen2014codewebs,jin2012program}. % problem statement In this paper we address the problem of finding useful features to support data mining in programming tutors. To support hint generation, these features must be robust against irrelevant code variations (such as renaming a variable) and relatable to knowledge components of the target skill (programming). diff --git a/paper/method.tex b/paper/method.tex index 0c3fdff..c2c828f 100644 --- a/paper/method.tex +++ b/paper/method.tex @@ -36,7 +36,7 @@ To discover buggy patterns, the algorithm first learns \emph{negative rules} tha \begin{itemize} \item classification accuracy of each learned rule must exceed a threshold (we selected 90\%, as 10\% error seems acceptable for our application); - \item each conjunct in a condition must be significant with respect to the likelihood-ratio test (in our experiments we set significance threshold to $p=0.05$); + \item each conjunct in a condition must be significant according to the likelihood-ratio test (in our experiments we set significance threshold to $p=0.05$); \item a conjunct can only specify the presence of a pattern (in other words, we only allow feature-value pairs with the value \textsf{true}). \end{itemize} |