summaryrefslogtreecommitdiff
path: root/aied2018/aied2018.tex
blob: a028852bb105a213624dfa171e2e47a058b08682 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
\documentclass{llncs}

\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}
\newunicodechar{∧}{\ensuremath{\land}}
\newunicodechar{⇒}{\ensuremath{\Rightarrow}}
\newunicodechar{→}{\ensuremath{\rightarrow}}
\newunicodechar{⋯}{\ensuremath{\cdots}}

\usepackage{bold-extra}
\usepackage{hyperref}
\usepackage[normalem]{ulem}

\usepackage{color}
\newcommand\red[1]{{\begingroup\color[rgb]{0.8,0.15,0.15}#1\endgroup}}
\newcommand\blue[1]{{\begingroup\color[rgb]{0.15,0.15,0.8}#1\endgroup}}

\usepackage{fancyvrb}
\fvset{commandchars=\\\{\},baselinestretch=0.98,samepage=true,xleftmargin=2.5mm}
% WAT — I don’t even…
\makeatletter
\begingroup
\catcode`\`=\active
\gdef\FV@fontfamily@sf{%
  \def\FV@FontScanPrep{\FV@MakeActive\`}%
  \def\FV@FontFamily{\sffamily\edef`{{\string`}}}}
\endgroup
\makeatother

\usepackage{tikz}
\usepackage{forest}
\usetikzlibrary{arrows.meta,calc}

\newcommand\code[1]{\texttt{#1}}
\newcommand\pattern[1]{\textsf{#1}}

\begin{document}
\title{Syntax-based analysis of programming concepts in Python}
\author{Martin Možina, Timotej Lazar}
\institute{University of Ljubljana, Faculty of Computer and Information Science, Slovenia}
\maketitle

\begin{abstract}
% background / problem
Writing programs is essential to learning programming. Most programming courses use lab and homework assignments to encourage students to practice. By analyzing solutions to these exercises teachers can discover mistakes and concepts students are struggling with, in order to improve the content and presentation of the course. Students however tend to submit many different programs even for simple exercises, making such analysis difficult.
% solution
We propose using tree regular expressions to encode common patterns in programs. Based on these patterns we induce rules describing common approaches and mistakes for a given assignment. In this paper we describe the rule-learning algorithm and present case studies of rule-based analysis for several introductory Python problems. We show that our rules are easy to interpret, and can be learned from a relatively small set of programs.
\\\\
\textbf{Keywords:} Learning programming · Educational data analysis · Error diagnosis · Abstract syntax tree · Tree regular expressions
\end{abstract}

\input{introduction}
%\input{background}
\input{patterns}
\input{rules}
%\input{evaluation}
%\input{conclusion}

\bibliographystyle{splncs}
\bibliography{aied2018}
\end{document}