summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Možina <martin.mozina@fri.uni-lj.si>2018-06-17 18:35:01 +0200
committerMartin Možina <martin.mozina@fri.uni-lj.si>2018-06-17 18:35:01 +0200
commit9f338acfed58e97db36750e49ffbdadba25bd006 (patch)
treea12d604a3aa7559ea35a08fd369d03109f61538f
parent2678fc027f891ffafb31e5fd411342034c7362e5 (diff)
Added first version of presentation.
-rw-r--r--aied2018/presentation/aied_poster.tex144
-rw-r--r--aied2018/presentation/beamerposter.sty301
-rw-r--r--aied2018/presentation/beamerthemeAILAB.sty140
-rw-r--r--aied2018/presentation/beamerthemeI6pd2.sty146
-rw-r--r--aied2018/presentation/constructing.tex1
-rw-r--r--aied2018/presentation/img/FRI_logo_eng_zaNogo.pngbin0 -> 11232 bytes
-rw-r--r--aied2018/presentation/motivation.tex26
-rw-r--r--aied2018/presentation/patterns.tex90
-rw-r--r--aied2018/presentation/rules.tex34
-rw-r--r--aied2018/presentation/tangocolors.sty51
10 files changed, 933 insertions, 0 deletions
diff --git a/aied2018/presentation/aied_poster.tex b/aied2018/presentation/aied_poster.tex
new file mode 100644
index 0000000..359dcb2
--- /dev/null
+++ b/aied2018/presentation/aied_poster.tex
@@ -0,0 +1,144 @@
+\documentclass[final, professionalfont]{beamer}
+\usepackage[orientation=portrait, size=a0, scale=1.4]{beamerposter}
+\mode<presentation>{\usetheme{AILAB}}
+
+\usepackage[utf8]{inputenc}
+\usepackage{newunicodechar}
+\newunicodechar{∧}{\ensuremath{\land}}
+\newunicodechar{¬}{\ensuremath{\lnot}}
+\newunicodechar{⇒}{\ensuremath{\Rightarrow}}
+\newunicodechar{→}{\ensuremath{\rightarrow}}
+\newunicodechar{⋯}{\ensuremath{\cdots}}
+
+\usepackage{bold-extra}
+\usepackage{bm}
+\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}}
+\newcommand\green[1]{{\begingroup\color[rgb]{0.15,0.8,0.15}#1\endgroup}}
+
+\usepackage{fancyvrb}
+\fvset{commandchars=\\\{\},baselinestretch=0.98,samepage=true,xleftmargin=2.5mm}
+
+\usepackage{tikz}
+\usepackage{forest}
+\usetikzlibrary{arrows.meta,calc}
+
+\newcommand\code[1]{\texttt{#1}}
+\newcommand\pattern[1]{\textsf{#1}}
+
+\newlength{\columnheight}
+\setlength{\columnheight}{104cm}
+
+\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}
+\def\myemail{martin.mozina@fri.uni-lj.si}
+\def\mywebpage{http://www.ailab.si/aied2018}
+\titlegraphic{img/FRI_logo_eng_zaNogo.png}
+
+\begin{document}
+
+%\begin{myverbbox}{\VerbFahren}
+%F = float(input("Fahrenheit: "))
+%C = 5 / 9 * (F - 32)
+%print("Celsius: ", C)
+%\end{myverbbox}
+
+%\begin{myverbbox}{\VerbR1}
+%P20 ⇒ incorrect [208, 1]
+%\end{myverbbox}
+
+%\begin{myverbbox}{\VerbP20}
+% (Module (body (Assign (value (Call (func (Name (id int) (ctx Load))))))))
+%\end{myverbbox}
+
+%\begin{myverbbox}{\VerbR2}
+% P5 ∧ P35 ⇒ incorrect [72, 0]
+%\end{myverbbox}
+
+%\begin{myverbbox}{\VerbProgram}
+%g2 = input()
+%g1 = \blue{\underline{int}}(g2)
+%print(((g1-32)*(5/9)))
+%\end{myverbbox}
+
+
+\begin{frame}[fragile]
+
+\begin{columns}
+ \begin{column}{0.50\textwidth}
+
+ \begin{beamercolorbox}[center]{postercolumn}
+ \begin{minipage}[t][\columnheight]{.90\textwidth} % tweaks the width, makes a new \textwidth
+ %\parbox[t][\columnheight]{\textwidth}{ % must be some better way to set the the height, width and textwidth simultaneously
+
+ \setbeamercolor*{block title}{fg=white,bg=FRIRed}
+ \setbeamercolor*{block body}{fg=black, bg=white}
+ \begin{myblock}{Motivation and Research Questions}
+ \input{motivation.tex}
+ \end{myblock}
+ \setbeamercolor*{block title}{fg=white,bg=TitleBG}
+ \begin{myblock}{AST Patterns}
+ \input{patterns.tex}
+ \end{myblock}
+ %}
+ \setbeamercolor*{block title}{fg=white,bg=TitleBG}
+ \begin{myblock}{Constructing patterns}
+ \input{constructing.tex}
+ \end{myblock}
+
+ \end{minipage}
+ \end{beamercolorbox}
+
+ \end{column}
+
+ \begin{column}{0.50\textwidth}
+ \begin{beamercolorbox}[center]{postercolumn}
+ \begin{minipage}{.90\textwidth} % tweaks the width, makes a new \textwidth
+ \parbox[t][\columnheight]{\textwidth}{ % must be some better way to set the the height, width and textwidth simultaneously
+\setbeamercolor*{block title}{fg=white,bg=abstract}
+\setbeamercolor*{block body}{fg=black, bg=tlg}
+\begin{abstractblock}
+
+ \textbf{Abstract}
+
+ Writing programs is essential to learning programming. Most programming courses encourage students to practice with lab and homework assignments. By analyzing solutions to these exercises teachers can discover mistakes and concepts students are struggling with, and use that knowledge to improve the course. Students however tend to submit many different programs even for simple exercises, making such analysis difficult.
+ 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 present a case study of rule-based analysis for an introductory Python exercise. We show that our rules are easy to interpret, and can be learned from a relatively small set of programs.
+\end{abstractblock}\vfill
+ \setbeamercolor*{block title}{fg=white,bg=TitleBG}
+ \setbeamercolor*{block body}{fg=black, bg=white}
+ \begin{myblock}{Learning rules and results}
+ \input{rules.tex}
+ \end{myblock}\vfill
+ \setbeamercolor*{block title}{fg=white,bg=FRIRed}
+ \begin{myblock}{Conclusions}
+ \begin{itemize}
+ \item Abstract-syntax-tree (AST) patterns for representing program patterns.
+ \item Patterns are extracted automatically and combined into n-rules(errors) and p-rules (approaches) with machine learning.
+ \item Patterns are useful, because ...
+ \begin{itemize}
+ \item They increase accuracy by 17\% overall.
+ \item n-rules explain over 70\% of incorrect submissions.
+ \item p-rules explain 62\% of correct programs.
+ \end{itemize}
+ \item However ...
+ \begin{itemize}
+ \item In some domains, patterns are not informative (\textsf{ballistics} and \textsf{minimax}).
+ \item To construct new patterns, a tool for vizualization of patterns is needed.
+ \end{itemize}
+ \end{itemize}
+ \end{myblock}\vfill
+ }
+
+ \end{minipage}
+ \end{beamercolorbox}
+ \end{column}
+\end{columns}
+
+\end{frame}
+
+\end{document}
diff --git a/aied2018/presentation/beamerposter.sty b/aied2018/presentation/beamerposter.sty
new file mode 100644
index 0000000..7957e75
--- /dev/null
+++ b/aied2018/presentation/beamerposter.sty
@@ -0,0 +1,301 @@
+% Copyright 2007 by
+% Philippe Dreuw <dreuw@cs.rwth-aachen.de> and
+% Thomas Deselaers <deselaers@cs.rwth-aachen.de>
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+%
+% ChangeLog:
+%
+% 1.10 - imrpoved PackageWarning and PackageInfo outputs
+% 1.09 - bugfixed the list indention problem, can be overwritten by user with the \setdefaultleftmargin command.
+% - added 'printer' option for external printer definition files
+% 1.08 - supports external printer definition files
+% - added grid mode option
+% - renamed beamer specific variables
+% - added font size normalization, so that scale=1.0 is the default font size for all DIN-A(n) sizes
+% 1.07 - bugfixed custom size handling, portrait or landscape settings are ignored now
+% 1.06 - added the type1cm package for scalable math fonts
+% 1.05 - added version check for xkeyval package
+% 1.04 - added custom size handling
+% 1.03 - improved predefined size handling
+% 1.02 - minor bugfixes
+% 1.01 - bugfixed size handling
+% 1.00 - first beamerposter release
+%
+\def\beamerposter@name{beamerposter}
+\def\beamerposter@version{1.10}
+\def\beamerposter@date{2009/09/02}
+\def\beamerposter@msg{latex-beamer poster extension}
+\def\beamerposter@releaseinfo{\beamerposter@date \space v.\beamerposter@version \space \beamerposter@msg}
+\def\beamerposter@Error#1#2{\PackageError{\beamerposter@name}{#1}{#2}}
+\def\beamerposter@Warning#1{\PackageWarning{\beamerposter@name}{#1}}
+\def\beamerposter@Info#1{\PackageInfo{\beamerposter@name}{#1}}
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{\beamerposter@name}[\beamerposter@releaseinfo]
+\RequirePackage{xkeyval}[2006/11/18]
+\RequirePackage{type1cm} %% get it from ftp://cam.ctan.org/tex-archive/macros/latex/contrib/type1cm.zip
+\RequirePackage{fp}
+%\RequirePackage{paralist}
+
+\newif\if@beamerposter@portrait
+\newif\if@beamerposter@customsize
+\newif\if@beamerposter@extern
+\newif\if@beamerposter@debug
+
+
+\DeclareOptionX{size}[a0]{
+ \beamerposter@Info{checking size input, please wait.}
+ \XKV@cc*+[\val\nr]{#1}{a0b,a0,a1,a2,a3,a4,custom}{%
+ \beamerposter@Info{the input \val\ \nr\ was correct, we proceed.}
+ \ifcase\nr\relax
+ %a0b
+ \edef\paperwidthValue{119}
+ \edef\paperheightValue{88}
+ \edef\textwidthValue{116}
+ \edef\textheightValue{88}
+ \edef\fontscale{1.0}
+ \or
+ %a0
+ \edef\paperwidthValue{118.82}
+ \edef\paperheightValue{83.96}
+ \edef\textwidthValue{117.82}
+ \edef\textheightValue{82.96}
+ \edef\fontscale{1.0}
+ \or
+ %a1
+ \edef\paperwidthValue{83.96}
+ \edef\paperheightValue{59.4}
+ \edef\textwidthValue{82.96}
+ \edef\textheightValue{58.4}
+ \edef\fontscale{0.70710678} % fontscale=(1/sqrt(2))^1
+ \or
+ %a2
+ \edef\paperwidthValue{59.4}
+ \edef\paperheightValue{41.98}
+ \edef\textwidthValue{58.4}
+ \edef\textheightValue{40.98}
+ \edef\fontscale{0.5} % fontscale=(1/sqrt(2))^2
+ \or
+ %a3
+ \edef\paperwidthValue{41.98}
+ \edef\paperheightValue{29.7}
+ \edef\textwidthValue{40.98}
+ \edef\textheightValue{28.7}
+ \edef\fontscale{0.35355339} % fontscale=(1/sqrt(2))^3
+ \or
+ %a4
+ \edef\paperwidthValue{29.7}
+ \edef\paperheightValue{21.0}
+ \edef\textwidthValue{28.7}
+ \edef\textheightValue{20.0}
+ \edef\fontscale{0.25} % fontscale=(1/sqrt(2))^4
+ \or
+ \@beamerposter@customsizetrue
+ \fi
+ }{%
+ \beamerposter@Warning{the input \val\ was incorrect and was ignored.}
+ }%
+ \beamerposter@Info{finished size input check.}
+}
+\DeclareOptionX{orientation}[portrait]{
+ \beamerposter@Info{checking orientation input, please wait.}
+ \XKV@cc*+[\val\nr]{#1}{portrait,landscape}{%
+ \beamerposter@Info{the input \val\ \nr\ was correct, we proceed.}
+ \ifcase\nr\relax
+ \@beamerposter@portraittrue
+ \or
+ \@beamerposter@portraitfalse
+ \fi
+ }{%
+ \beamerposter@Warning{the input \val\ was incorrect and was ignored.}
+ }%
+ \beamerposter@Info{finished orientation check.}
+}
+\DeclareOptionX{scale}[1.0]{\edef\myfontscale{#1}\beamerposter@Info{myfontscale=\myfontscale}}
+\DeclareOptionX{width}{\edef\customwidth{#1}\beamerposter@Info{custom poster width=\customwidth}}
+\DeclareOptionX{height}{\edef\customheight{#1}\beamerposter@Info{custom poster height=\customheight}}
+\DeclareOptionX{debug}{\beamerposter@Info{enabled debug mode}\@beamerposter@debugtrue}
+\DeclareOptionX{grid}{\beamerposter@Info{enabling grid}\beamertemplategridbackground[1cm]}% Display a grid to help align images
+\DeclareOptionX{printer}{\edef\printerToUse{#1}\@beamerposter@externtrue}
+\DeclareOptionX*{\beamerposter@Warning{Unknown option ignored: \CurrentOption}}
+%\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{beamer}}
+\ExecuteOptionsX{size=a0,scale=1.0}
+\ProcessOptionsX\relax
+
+%% enable debug mode for fp package (mainly for upn functions)
+\if@beamerposter@debug
+ \FPdebugtrue
+\fi
+
+%% normalize scale depending on poster size
+\FPupn{\myfontscale}{myfontscale fontscale * 2 round}
+
+%% swap sizes for portrait orientation
+\if@beamerposter@portrait
+ \newdimen\tmp
+ \setlength{\tmp}{\paperwidthValue cm}
+ \setlength{\paperwidth}{\paperheightValue cm}
+ \setlength{\paperheight}{\tmp}
+ \setlength{\tmp}{\textwidthValue cm}
+ \setlength{\textwidth}{\textheightValue cm}
+ \setlength{\textheight}{\tmp}
+\else
+ \setlength{\paperwidth}{\paperwidthValue cm}
+ \setlength{\paperheight}{\paperheightValue cm}
+ \setlength{\textwidth}{\textwidthValue cm}
+ \setlength{\textheight}{\textheightValue cm}
+\fi
+
+%% overwrite dimensions if custom size
+\if@beamerposter@customsize
+ \setlength{\paperwidth}{\customwidth cm}
+ \setlength{\paperheight}{\customheight cm}
+ \FPupn{\resulttextwidth}{1 customwidth -}
+ \FPupn{\resulttextheight}{1 customheight -}
+ \setlength{\textwidth}{\resulttextwidth cm}
+ \setlength{\textheight}{\resulttextheight cm}
+\fi
+
+%% Setting proper dimensions for a DIN A0 printer
+\setlength{\headheight}{0 cm}
+\setlength{\headsep}{0 cm}
+\setlength{\topmargin}{-12.7 mm} % -1in +1.47cm
+\setlength{\oddsidemargin}{-25.4 mm} % -1in +0.4cm
+
+%% For the page layout
+\beamerposter@Info{paperwidth=\the\paperwidth, paperheight=\the\paperheight}
+\beamerposter@Info{textwidth=\the\textwidth, textwidth=\the\textheight}
+\beamerposter@Info{fontscale=\fontscale, myfontscale=\myfontscale}
+\geometry{
+ paperwidth=\the\paperwidth,
+ paperheight=\the\paperheight,
+ hmargin=1cm,%
+ vmargin=0cm,%
+ head=0.5cm, %
+ headsep=0pt,%
+ foot=0.5cm %
+}
+
+%%
+%% printer definition file example 'rwth-glossy-uv.df':
+%% ----
+%% \typeout{beamerposter: RWTH RZ printer, glossy paper, UV resistant, maximum settings}
+%% \edef\printermaxwidthValue{108} %unit should be cm
+%% \newlength{\printermaxwidth}
+%% \setlength{\printermaxwidth}{\printermaxwidthValue cm}
+%% ----
+%%
+%% now load printer definitions from file (e.g. \usepackage[printer=rwth-glossy-uv.df]{beamerposter}")
+\if@beamerposter@extern
+ \InputIfFileExists{\printerToUse}{\typeout{load \printerToUse}}{\beamerposter@Error{\printerToUse\space not found!}{Please use another printer definition file}}
+ \ifx\printermaxwidthValue\@empty%
+ \relax%
+ \else%
+ %% @todo: calc poster ratios, scale to maximum printer size, and check if they still fit
+ %% this here is still very basic ...
+ \FPsub{\resultmaxwidth}{\printermaxwidthValue}{\paperwidthValue}
+ \FPifneg{\resultmaxwidth}
+ \beamerposter@Error{%
+ resultmaxwidth=\resultmaxwidth \MessageBreak
+ printermaxwidthValue=\printermaxwidthValue \MessageBreak
+ paperwidthValue=\paperwidthValue \MessageBreak
+ The specified poster dimensions might not be printable using
+ '\printerToUse'.
+ }{%
+ Try to reduce your poster dimension and have a look at the aspect ratio.
+ }
+ \else
+ \relax
+ \fi
+ \fi
+%\fi
+
+%% scalable vector fonts
+\edef\fontSizeX{12}\edef\fontSizeY{14}
+\FPupn{\resulttinyX}{myfontscale fontSizeX * 2 round}
+\FPupn{\resulttinyY}{myfontscale fontSizeY * 2 round}
+\renewcommand*{\tiny}{\fontsize{\resulttinyX}{\resulttinyY}\selectfont}
+
+\edef\fontSizeX{14.4}\edef\fontSizeY{18}
+\FPupn{\resultscriptsizeX}{myfontscale fontSizeX * 2 round}
+\FPupn{\resultscriptsizeY}{myfontscale fontSizeY * 2 round}
+\renewcommand*{\scriptsize}{\fontsize{\resultscriptsizeX}{\resultscriptsizeY}\selectfont}
+
+\edef\fontSizeX{17.28}\edef\fontSizeY{22}
+\FPupn{\resultfootnotesizeX}{myfontscale fontSizeX * 2 round}
+\FPupn{\resultfootnotesizeY}{myfontscale fontSizeY * 2 round}
+\renewcommand*{\footnotesize}{\fontsize{\resultfootnotesizeX}{\resultfootnotesizeY}\selectfont}
+
+\edef\fontSizeX{20.74}\edef\fontSizeY{25}
+\FPupn{\resultsmallX}{myfontscale fontSizeX * 2 round}
+\FPupn{\resultsmallY}{myfontscale fontSizeY * 2 round}
+\renewcommand*{\small}{\fontsize{\resultsmallX}{\resultsmallY}\selectfont}
+
+\edef\fontSizeX{24.88}\edef\fontSizeY{30}
+\FPupn{\resultnormalsizeX}{myfontscale fontSizeX * 2 round}
+\FPupn{\resultnormalsizeY}{myfontscale fontSizeY * 2 round}
+\renewcommand*{\normalsize}{\fontsize{\resultnormalsizeX}{\resultnormalsizeY}\selectfont}
+
+\edef\fontSizeX{29.86}\edef\fontSizeY{37}
+\FPupn{\resultlargeX}{myfontscale fontSizeX * 2 round}
+\FPupn{\resultlargeY}{myfontscale fontSizeY * 2 round}
+\renewcommand*{\large}{\fontsize{\resultlargeX}{\resultlargeY}\selectfont}
+
+\edef\fontSizeX{35.83}\edef\fontSizeY{45}
+\FPupn{\resultLargeX}{myfontscale fontSizeX * 2 round}
+\FPupn{\resultLargeY}{myfontscale fontSizeY * 2 round}
+\renewcommand*{\Large}{\fontsize{\resultLargeX}{\resultLargeY}\selectfont}
+
+\edef\fontSizeX{43}\edef\fontSizeY{54}
+\FPupn{\resultLARGEX}{myfontscale fontSizeX * 2 round}
+\FPupn{\resultLARGEY}{myfontscale fontSizeY * 2 round}
+\renewcommand*{\LARGE}{\fontsize{\resultLARGEX}{\resultLARGEY}\selectfont}
+
+\edef\fontSizeX{51.6}\edef\fontSizeY{64}
+\FPupn{\resulthugeX}{myfontscale fontSizeX * 2 round}
+\FPupn{\resulthugeY}{myfontscale fontSizeY * 2 round}
+\renewcommand*{\huge}{\fontsize{\resulthugeX}{\resulthugeY}\selectfont}
+
+\edef\fontSizeX{61.92}\edef\fontSizeY{77}
+\FPupn{\resultHugeX}{myfontscale fontSizeX * 2 round}
+\FPupn{\resultHugeY}{myfontscale fontSizeY * 2 round}
+\renewcommand*{\Huge}{\fontsize{\resultHugeX}{\resultHugeY}\selectfont}
+
+\edef\fontSizeX{74.3}\edef\fontSizeY{93}
+\FPupn{\resultveryHugeX}{myfontscale fontSizeX * 2 round}
+\FPupn{\resultveryHugeY}{myfontscale fontSizeY * 2 round}
+\newcommand*{\veryHuge}{\fontsize{\resultveryHugeX}{\resultveryHugeY}\selectfont}
+
+\edef\fontSizeX{89.16}\edef\fontSizeY{112}
+\FPupn{\resultVeryHugeX}{myfontscale fontSizeX * 2 round}
+\FPupn{\resultVeryHugeY}{myfontscale fontSizeY * 2 round}
+\newcommand*{\VeryHuge}{\fontsize{\resultVeryHugeX}{\resultVeryHugeY}\selectfont}
+
+\edef\fontSizeX{107}\edef\fontSizeY{134}
+\FPupn{\resultVERYHugeX}{myfontscale fontSizeX * 2 round}
+\FPupn{\resultVERYHugeY}{myfontscale fontSizeY * 2 round}
+\newcommand*{\VERYHuge}{\fontsize{\resultVERYHugeX}{\resultVERYHugeY}\selectfont}
+
+% set the normalfont (default)
+\renewcommand*{\normalfont}{\normalsize}
+
+% adapt list indention (e.g. itemize/enumeration/... see paralist docu)
+\edef\indentionLevelValuei{4} % 4em indention for first level for an A0 poster
+\edef\indentionLevelValueii{2.2} % etc. ...
+\edef\indentionLevelValueiii{1.87}
+\edef\indentionLevelValueiiii{1.7}
+\edef\indentionLevelValueiiiii{1}
+\edef\indentionLevelValueiiiiii{1}
+\FPupn{\indentionLevelValuei}{indentionLevelValuei fontscale * 2 round}
+\FPupn{\indentionLevelValueii}{indentionLevelValueii fontscale * 2 round}
+\FPupn{\indentionLevelValueiii}{indentionLevelValueiii fontscale * 2 round}
+\FPupn{\indentionLevelValueiiii}{indentionLevelValueiiii fontscale * 2 round}
+\FPupn{\indentionLevelValueiiiii}{indentionLevelValueiiiii fontscale * 2 round}
+\FPupn{\indentionLevelValueiiiiii}{indentionLevelValueiiiiii fontscale * 2 round}
+%\setdefaultleftmargin{\indentionLevelValuei em}{\indentionLevelValueii em}{\indentionLevelValueiii em}{\indentionLevelValueiiii em}{\indentionLevelValueiiiii em}{\indentionLevelValueiiiiii em}
+\setbeamersize{description width=\indentionLevelValuei em} % the description environment needs special treatment
diff --git a/aied2018/presentation/beamerthemeAILAB.sty b/aied2018/presentation/beamerthemeAILAB.sty
new file mode 100644
index 0000000..64c8726
--- /dev/null
+++ b/aied2018/presentation/beamerthemeAILAB.sty
@@ -0,0 +1,140 @@
+\ProvidesPackage{beamerthemeAILAB}
+
+\mode<all>
+
+\definecolor{TitleBG}{RGB}{64,64,64}
+\definecolor{FRIRed}{RGB}{192,65,49}
+\definecolor{tlg}{RGB}{230,230,230}
+\definecolor{navyblue}{RGB}{0,0,128}
+\definecolor{textcolor}{RGB}{85,85,85}
+\definecolor{abstract}{RGB}{66,116,165}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%It seems many of the following entries do not control any visible Behaviour. All such entries are
+%set to red, so that they are easy to spot if they ever become visible
+
+\setbeamercolor{headline}{fg=red,bg=TitleBG}
+\setbeamercolor{footline}{fg=red, bg=red}
+\setbeamerfont{footline}{size=\large,series=\bf}
+\setbeamercolor{separation line}{bg=TitleBG}
+\setbeamercolor{title in headline}{fg=white}
+\setbeamercolor{author in headline}{fg=white}
+\setbeamercolor{institute in headline}{fg=white}
+
+\setbeamercolor{framesubtitle}{fg=red, bg=red}
+\setbeamercolor{author in head/foot}{fg=white, bg=TitleBG}
+\setbeamercolor{title in head/foot}{fg=red, bg=red}
+
+\setbeamercolor*{normal text}{fg=textcolor, bg=tlg}
+\setbeamercolor*{block body}{fg=black, bg=white}
+\setbeamercolor*{block title}{fg=black,bg=tlg}
+\setbeamerfont{block title}{size=\large,series=\bf}
+\setbeamercolor{upper separation line head}{fg=red}
+
+\setbeamercolor*{example body}{fg=red,bg=red}
+\setbeamercolor*{example text}{fg=red,bg=red}
+\setbeamercolor*{example title}{bg=red,fg=red}
+
+\setbeamercolor{alerted text}{fg=red}
+\setbeamercolor{structure}{fg=tlg}
+
+\setbeamertemplate{itemize items}{\color{textcolor}$\blacktriangleright$}
+
+\newenvironment<>{myblock}[1]{%
+ \begin{actionenv}#2%
+ \def\insertblocktitle{\centering#1}%
+ \par%
+ \usebeamertemplate{block begin}\leftskip=14pt\rightskip=14pt\vspace{10pt}}
+ {\par\vspace{1em}\usebeamertemplate{block end}
+\end{actionenv}}
+
+\newenvironment<>{abstractblock}[1]{%
+ \begin{actionenv}#2%
+ \usebeamertemplate{abstract}\leftskip=14pt\rightskip=14pt\vspace{10pt}}
+ {\par\vspace{1em}\usebeamertemplate{block end}
+\end{actionenv}}
+
+\setbeamertemplate{abstract}
+{
+ \vskip.75ex
+ {\ifbeamercolorempty[bg]{block body}{}{\nointerlineskip\vskip-0.5pt}}%
+ \usebeamerfont{block body}%
+ \begin{beamercolorbox}[leftskip=1em,colsep*=.75ex,sep=0.5ex,vmode]{block body}%
+ \ifbeamercolorempty[bg]{block body}{\vskip-.25ex}{\vskip-.75ex}\vbox{}%
+}
+
+\setbeamertemplate{block begin}
+{
+ \vskip.75ex
+ \begin{beamercolorbox}[ht=5ex,dp=0.5ex,center,leftskip=-1em,colsep*=.75ex]{block title}%
+ \usebeamerfont*{block title}\centering\large%
+ {\phantom{Gg}\insertblocktitle}% phantom because of baseline problem
+ \end{beamercolorbox}%
+
+ {\ifbeamercolorempty[bg]{block body}{}{\nointerlineskip\vskip-0.5pt}}%
+
+ \usebeamerfont{block body}%
+ \begin{beamercolorbox}[leftskip=1em,colsep*=.75ex,sep=0.5ex,vmode]{block body}%
+ \ifbeamercolorempty[bg]{block body}{\vskip-.25ex}{\vskip-.75ex}\vbox{}%
+}
+
+\setbeamertemplate{block end}{
+ \end{beamercolorbox}
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbeamertemplate{headline}{
+ \leavevmode
+ \begin{beamercolorbox}[wd=\paperwidth]{headline}
+ \vspace{2ex}\\
+ \begin{columns}[c]
+ \begin{column}{.07\paperwidth}
+ \end{column}
+ \begin{column}{.695\paperwidth}
+ \usebeamercolor{title in headline}{\color{fg}\textbf{\LARGE{\inserttitle}}\\[1ex]}
+ \usebeamercolor{author in headline}{\color{fg}\large{\insertauthor}\\[1ex]}
+ \usebeamercolor{institute in headline}{\color{fg}\small{\insertinstitute}\\[1ex]}
+ \end{column}
+ \begin{column}{.25\paperwidth}
+ \begin{center}
+ \includegraphics[width=.8\textwidth, height=.39\textwidth, keepaspectratio]{\inserttitlegraphic}
+ \end{center}
+ \end{column}
+ \begin{column}{.03\paperwidth}
+ \end{column}
+ \end{columns}
+ \vspace{2ex}\\
+ \end{beamercolorbox}
+
+ \begin{beamercolorbox}[wd=\paperwidth]{lower separation line head}
+ \rule{0pt}{2pt}
+ \end{beamercolorbox}
+ \vskip-2cm
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbeamertemplate{footline}{
+ \begin{beamercolorbox}[wd=\paperwidth]{upper separation line foot}
+ \rule{0pt}{2pt}
+ \end{beamercolorbox}
+ \leavevmode%
+ \begin{beamercolorbox}[ht=4ex,leftskip=1cm,rightskip=1cm]{author in head/foot}%
+ \href{\mywebpage}{\mywebpage}
+ \hfill
+ % \today
+ % \hfill
+ \href{mailto:\myemail}{\myemail}
+ \vskip1ex
+ \end{beamercolorbox}
+ \vskip0pt%
+ \begin{beamercolorbox}[wd=\paperwidth]{lower separation line foot}
+ \rule{0pt}{2pt}
+ \end{beamercolorbox}
+}
+
+
+
+
+
diff --git a/aied2018/presentation/beamerthemeI6pd2.sty b/aied2018/presentation/beamerthemeI6pd2.sty
new file mode 100644
index 0000000..a6eb057
--- /dev/null
+++ b/aied2018/presentation/beamerthemeI6pd2.sty
@@ -0,0 +1,146 @@
+\ProvidesPackage{beamerthemeI6pd2} % this style was created by Thomas Deselaers an Philippe Dreuw
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\RequirePackage{tangocolors}
+\selectcolormodel{cmyk}
+\mode<presentation>
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\setbeamercolor{headline}{fg=tabutter,bg=black}
+\setbeamercolor{footline}{fg=tabutter, bg=ta3gray}
+\setbeamerfont{footline}{size=\large,series=\tt}
+\setbeamercolor{separation line}{bg=ta2orange}
+\setbeamercolor{title in headline}{fg=tabutter}
+\setbeamercolor{author in headline}{fg=ta2orange}
+\setbeamercolor{institute in headline}{fg=ta3orange}
+
+\setbeamercolor{framesubtitle}{fg=ta3orange, bg=ta2gray}
+\setbeamercolor{author in head/foot}{fg=ta2orange, bg=black}
+\setbeamercolor{title in head/foot}{fg=ta2orange, bg=black}
+
+\setbeamercolor*{normal text}{fg=tachameleon, bg=ta3gray}
+\setbeamercolor*{block body}{bg=ta3aluminium,fg=black}
+\setbeamercolor*{block title}{fg=taorange,bg=ta2gray}
+\setbeamerfont{block title}{size=\large,series=\bf}
+\setbeamercolor{upper separation line head}{fg=ta2orange}
+
+\setbeamercolor*{example body}{fg=ta3aluminium,bg=black}
+\setbeamercolor*{example text}{fg=ta3aluminium,bg=black}
+\setbeamercolor*{example title}{bg=taorange,fg=ta2gray}
+
+%\setbeamercolor{alerted text}{fg=ta3gray}
+
+%\setbeamercolor{example text}{fg=taorange}
+\setbeamercolor{structure}{fg=ta3skyblue}
+
+\setbeamertemplate{itemize items}[triangle]
+\setbeamertemplate{navigation symbols}{} % no navigation on a poster
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbeamertemplate{block begin}{
+ \vskip.75ex
+ \begin{beamercolorbox}[ht=3.5ex,dp=0.5ex,center,leftskip=-1em,colsep*=.75ex]{block title}%
+ \usebeamerfont*{block title}%
+ {\phantom{Gg}\insertblocktitle}% phantom because of baseline problem
+ \end{beamercolorbox}%
+ {\ifbeamercolorempty[bg]{block body}{}{\nointerlineskip\vskip-0.5pt}}%
+ \usebeamerfont{block body}%
+ \begin{beamercolorbox}[leftskip=1em,colsep*=.75ex,sep=0.5ex,vmode]{block body}%
+ \ifbeamercolorempty[bg]{block body}{\vskip-.25ex}{\vskip-.75ex}\vbox{}%
+ }
+ \setbeamertemplate{block end}{
+ \end{beamercolorbox}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbeamertemplate{headline}{
+ \leavevmode
+
+ \begin{beamercolorbox}[wd=\paperwidth]{headline}
+ \begin{columns}[T]
+ \begin{column}{.02\paperwidth}
+ \end{column}
+ \begin{column}{.7\paperwidth}
+ \vskip4ex
+ \raggedleft
+ \usebeamercolor{title in headline}{\color{fg}\textbf{\LARGE{\inserttitle}}\\[1ex]}
+ \usebeamercolor{author in headline}{\color{fg}\large{\insertauthor}\\[1ex]}
+ \usebeamercolor{institute in headline}{\color{fg}\large{\insertinstitute}\\[1ex]}
+ \end{column}
+ \begin{column}{.25\paperwidth}
+ \vskip8ex
+ \begin{center}
+ \includegraphics[width=.95\linewidth]{figures/deselaers/logos/rwthaachenuniversity-yelloworange}
+ \end{center}
+ \vskip2ex
+ \end{column}
+ \begin{column}{.02\paperwidth}
+ \end{column}
+ \end{columns}
+ \vskip2ex
+ \end{beamercolorbox}
+
+ \begin{beamercolorbox}[wd=\paperwidth]{lower separation line head}
+ \rule{0pt}{3pt}
+ \end{beamercolorbox}
+}
+
+% \setbeamertemplate{headline}{
+% \leavevmode
+% \begin{beamercolorbox}[sep=0.5cm,wd=.8\paperwidth]{headline}
+% \usebeamercolor{title in headline}{\raggedleft\color{fg}\textbf{\LARGE{\inserttitle}}\\[1ex]}
+% \usebeamercolor{author in headline}{\raggedleft\color{fg}\large{\insertauthor}\\[1ex]}
+% \usebeamercolor{institute in headline}{\raggedleft\color{fg}\large{\insertinstitute}\\[1ex]}
+% \end{beamercolorbox}%
+% \begin{beamercolorbox}[wd=.2\paperwidth]{logo in headline}
+% \centering
+% \LARGE{LOGO}
+% \end{beamercolorbox}
+
+
+%}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbeamertemplate{footline}{
+ \begin{beamercolorbox}[wd=\paperwidth]{upper separation line foot}
+ \rule{0pt}{3pt}
+ \end{beamercolorbox}
+
+ \leavevmode%
+ \begin{beamercolorbox}[ht=4ex,leftskip=1em,rightskip=1em]{author in head/foot}%
+ \texttt{http://www-i6.informatik.rwth-aachen.de}
+ \hfill
+ \texttt{<surname>@cs.rwth-aachen.de}
+ \vskip1ex
+ \end{beamercolorbox}
+ \vskip0pt%
+ \begin{beamercolorbox}[wd=\paperwidth]{lower separation line foot}
+ \rule{0pt}{3pt}
+ \end{beamercolorbox}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Display a grid to help align images ... and it looks nice with this color scheme
+%\beamertemplategridbackground[1cm]
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<all>
+
+% adapt height of imtemize rectangles
+\setbeamertemplate{itemize items}[triangle]
+\setbeamertemplate{itemize item}{\raisebox{0.12ex}{$\blacktriangleright$}\hskip0.1em}
+\setbeamertemplate{itemize subitem}{\raisebox{0.12ex}{$\triangleright$}\hskip0.1em}
+% or define your own template using \defbeamertemplate{itemize item}, see beameruserguide.pdf
+
+% equal font sizes for all levels
+\setbeamerfont{itemize/enumerate body}{size=\normalsize}
+\setbeamerfont{itemize/enumerate subbody}{size=\normalsize}
+\setbeamerfont{itemize/enumerate subsubbody}{size=\normalsize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-PDF-mode: t
+%%% TeX-master: "poster-surf"
+%%% End:
diff --git a/aied2018/presentation/constructing.tex b/aied2018/presentation/constructing.tex
new file mode 100644
index 0000000..33a2742
--- /dev/null
+++ b/aied2018/presentation/constructing.tex
@@ -0,0 +1 @@
+ Constructing patternsConstructing patternsConstructing patternsConstructing patternsConstructing patternsConstructing patternsConstructing patternsConstructing patterns
diff --git a/aied2018/presentation/img/FRI_logo_eng_zaNogo.png b/aied2018/presentation/img/FRI_logo_eng_zaNogo.png
new file mode 100644
index 0000000..42851d3
--- /dev/null
+++ b/aied2018/presentation/img/FRI_logo_eng_zaNogo.png
Binary files differ
diff --git a/aied2018/presentation/motivation.tex b/aied2018/presentation/motivation.tex
new file mode 100644
index 0000000..785bd6e
--- /dev/null
+++ b/aied2018/presentation/motivation.tex
@@ -0,0 +1,26 @@
+ What is wrong with the following program that prints all divisors?
+ \begin{columns}
+ \begin{column}{0.50\textwidth}
+\begin{Verbatim}
+ \textbf{def} divisors(n):
+ \textbf{for} d \textbf{in} range(1, \red{n}):
+ \textbf{if} n % d == 0:
+ \textbf{print}(d)
+\end{Verbatim}
+ \end{column}
+ \begin{column} {0.50\textwidth}
+ Answer: \texttt{range(1,n)} generates values up to \texttt{n-1}, so \texttt{n} is not printed. Instead, \texttt{range(1,n+1)} is better.
+ \end{column}
+ \end{columns}
+
+ \vspace{2cm}
+ Teachers can often spot such erroneous patterns without test cases. Can we represent their knowledge and use it to:
+ \begin{itemize}
+ \item generate automatic feedback in tutoring systems or
+ \item find programs with similar approach / error?
+ \end{itemize}
+ Two research questions arise:
+ \begin{itemize}
+ \item RQ1: How can we encode patterns in programs?
+ \item RQ2: How can we automatically extract relevant patterns from student solutions?
+ \end{itemize} \ No newline at end of file
diff --git a/aied2018/presentation/patterns.tex b/aied2018/presentation/patterns.tex
new file mode 100644
index 0000000..b966eba
--- /dev/null
+++ b/aied2018/presentation/patterns.tex
@@ -0,0 +1,90 @@
+ \begin{figure}[tbp]
+ \centering
+ \begin{forest}
+ for tree={
+ font=\sf,
+ edge=darkgray,
+ l sep=0,
+ l=0.9cm,
+ }
+ [a,name=a
+ [f]
+ [b,name=b
+ [d,name=d] [g,name=g] [e,name=e]]
+ [c,name=c [j] [k]]
+ [h]
+ ]
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (a) edge[transform canvas={xshift=0.8mm,yshift=-0.2mm}] (b);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (a) edge[transform canvas={xshift=-0.9mm,yshift=-0.3mm}] (c);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (b) edge[transform canvas={xshift=-1.1mm,yshift=0.2mm}] (d);
+ \draw[opacity=0] (b) -- node[anchor=east,thick,blue,opacity=1,font=\large] {\texttt{\textasciicircum}} (d);
+ \path[draw,thick,relative,blue,transform canvas={xshift=-0.7mm}] (b) -- ($ (b)!0.6!(g) $);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (b) edge[transform canvas={xshift=1.1mm,yshift=0.2mm}] (e);
+ \draw[opacity=0] (b) -- node[anchor=west,thick,blue,opacity=1,font=\scriptsize,transform canvas={xshift=0mm,yshift=1mm}] {\texttt{\$}} (e);
+ \end{forest}
+ \caption{A tree matching a pattern (blue arrows besides the edges). In the pattern, each arrow $x→y$ means that node $x$ has a child $y$. A shorter line without an arrowhead (e.g. \pattern{b}$\boldsymbol{-}$ \pattern{g}) indicates a wildcard, where the child can be any node. Anchors \texttt{\textbf{\textasciicircum}} and \texttt{\$} mean that the pattern will match only the first or last child.}
+ \label{fig:tre-example}
+\end{figure}
+With TREs we encode interesting patterns in a program while disregarding irrelevant parts. Take for example the following, nearly correct Python function that prints the divisors of its argument $n$:
+
+\begin{figure}[htb]
+ \centering
+ \begin{forest}
+ for tree={
+ font=\sf,
+ edge=darkgray,
+ l sep=0,
+ l=0.9cm,
+ }
+ [Function, name=def, draw,rectangle,red,dashed
+ [name, name=name1 [divisors, name=divisors, font=\bfseries\sffamily]]
+ [args, name=args1
+ [Var, name=args1-1, draw,rectangle,blue [n, font=\bfseries\sffamily, l=0.7cm]]]
+ [body, name=body1, before computing xy={s=2cm}
+ [For, name=for, l=1.2cm, draw,rectangle,red,dashed
+ [target
+ [Var, l=0.9cm [d, font=\bfseries\sffamily, l=0.7cm]]]
+ [iter, name=iter
+ [Call, name=call, l=0.9cm
+ [func, name=func, l=0.8cm [range, name=range, font=\bfseries\sffamily, l=0.7cm]]
+ [args, name=args2, l=0.8cm
+ [Num, name=args2-1, l=1cm [1, font=\bfseries\sffamily, l=0.7cm]]
+ [Var, name=args2-2, l=1cm,draw,rectangle,blue [n, font=\bfseries\sffamily, l=0.7cm]]]]]
+ [body, name=body2
+ [If, name=if, draw,rectangle,red,dashed
+ [test, l=0.7cm [Compare, l=0.8cm
+ [BinOp
+ [Var [n, font=\bfseries\sffamily, l=0.6cm]]
+ [\%, font=\bfseries\sffamily]
+ [Var [d, font=\bfseries\sffamily, l=0.6cm]]]
+ [{==}, font=\bfseries\sffamily, l=0.7cm]
+ [Num [0, font=\bfseries\sffamily, l=0.7cm]]]]
+ [body, l=0.7cm [Call, l=0.8cm
+ [func [print, font=\bfseries\sffamily, l=0.7cm]]
+ [args [Var, l=0.7cm [d, font=\bfseries\sffamily, l=0.6cm]]]]]]]]]]
+ % first pattern
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,red,dashed] (def) edge[transform canvas={xshift=1.1mm,yshift=0.2mm}] (body1);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,red,dashed] (body1) edge[transform canvas={xshift=0.8mm}] (for);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,red,dashed] (for) edge[transform canvas={xshift=1.1mm,yshift=0.5mm}] (body2);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,red,dashed] (body2) edge[transform canvas={xshift=0.8mm}] (if);
+ % second pattern
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (def) edge[transform canvas={xshift=-1.1mm,yshift=0.2mm}] (name1);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (def) edge[transform canvas={xshift=-0.8mm}] (args1);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (args1) edge[transform canvas={xshift=-0.8mm}] (args1-1);
+ \draw[opacity=0] (args1) -- node[anchor=east,thick,blue,opacity=1,font=\large] {\texttt{\textasciicircum}} (args1-1);
+ \draw[opacity=0] (args1) -- node[anchor=west,thick,blue,opacity=1,font=\scriptsize,transform canvas={xshift=-0.5mm,yshift=0.6mm}] {\texttt{\$}} (args1-1);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (def) edge[transform canvas={xshift=-1mm,yshift=-0.3mm}] (body1);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (body1) edge[transform canvas={xshift=-0.8mm}] (for);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (for) edge[transform canvas={xshift=1mm,yshift=-0.5mm}] (iter);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (iter) edge[transform canvas={xshift=0.8mm}] (call);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (call) edge[transform canvas={xshift=-1.2mm}] (func);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (call) edge[transform canvas={xshift=1.2mm}] (args2);
+ \path[draw,thick,relative,blue,transform canvas={xshift=-0.7mm}] (args2) -- ($ (args2)!0.55!(args2-1) $);
+ \draw[opacity=0] (args2) -- node[anchor=east,thick,blue,opacity=1,font=\large,transform canvas={xshift=0.6mm,yshift=0.4mm}] {\texttt{\textasciicircum}} (args2-1);
+ \path[-{Latex[length=1.5mm,width=1mm]},thick,relative,blue] (args2) edge[transform canvas={xshift=1mm}] (args2-2);
+ \draw[opacity=0] (args2) -- node[anchor=west,thick,blue,opacity=1,font=\scriptsize,transform canvas={xshift=0mm,yshift=1mm}] {\texttt{\$}} (args2-2);
+ \end{forest}
+ \caption{The AST for the \code{divisors} program with two patterns. Leaf nodes (in bold) correspond to terminals in the program, i.e. names and values. Dashed red arrows represent the pattern describing the control structure of the program. Solid blue arrows encode the incorrect second argument to the \code{range} function.}
+ \label{fig:patterns-example}
+\end{figure}
+
diff --git a/aied2018/presentation/rules.tex b/aied2018/presentation/rules.tex
new file mode 100644
index 0000000..fd53f9b
--- /dev/null
+++ b/aied2018/presentation/rules.tex
@@ -0,0 +1,34 @@
+ \begin{itemize}
+ \item classification accuracy of each rule must exceed 90\%, because we deem a 10\% false-positive error as acceptable;
+ \item each term in the condition of a rule must be significant according to the likelihood test, meaning that each pattern in the condition part is indeed relevant (we set the significance threshold to p=0.05);
+ \item a condition can have at most 3 patterns; and
+ \item each rule must cover at least 5 distinct programs -- to avoid learning redundant rules representing the same error.
+ \end{itemize}
+
+\begin{table}[t]
+ \caption{Solving statistics, classification accuracy, and coverage of rules for several introductory Python problems. The second column shows the number of users attempting the problem. Columns 3 and 4 show the number of all / correct submissions. The next two columns show the classification accuracy for the majority and random-forest classifiers. The last three columns show percentages of covered examples: columns $n_p$ and $n$ give covered incorrect programs (n-rules with presence of patterns and all n-rules), and column $p$ gives the percentage of correct programs covered by p-rules.}
+ \centering
+ \begin{tabular}{l|c|cc|cc|ccc}
+ & & \multicolumn{2}{c|}{\textbf{Submissions}} & \multicolumn{2}{c|}{\textbf{CA}} & \multicolumn{3}{c}{\textbf{Coverage}} \\
+ \textbf{Problem} & \textbf{Users} & Total & Correct & Maj & RF & $n_p$ & $n$ & $p$ \\
+ \hline
+ \textsf{fahrenheit\_to\_celsius}& 521 & 1177 & 495 & 0.579 & 0.933 & 0.708 & 0.935 & 0.867 \\
+ %\textsf{pythagorean\_theorem}& 349 & 669 & 317 & 0.499 & 0.809 \\
+ \textsf{ballistics}& 248 & 873 & 209 & 0.761 & 0.802 & 0.551 & 0.666 & 0.478 \\
+ \textsf{average}& 209 & 482 & 186 & 0.614 & 0.830 & 0.230 & 0.338 & 0.618 \\
+ \hline
+ \textsf{buy\_five}& 294 & 476 & 292 & 0.613 & 0.828 & 0.234 & 0.489 & 0.719 \\
+ \textsf{competition}& 227 & 327 & 230 & 0.703 & 0.847 & 0.361 & 0.515 & 0.896 \\
+ \textsf{top\_shop}& 142 & 476 & 133 & 0.721 & 0.758 & 0.399 & 0.802 & 0.444 \\
+ \textsf{minimax}& 74 & 163 & 57 & 0.650 & 0.644 & 0.462 & 0.745 & 0.298 \\
+ \textsf{checking\_account}& 132 & 234 & 112 & 0.521 & 0.744 & 0.143 & 0.491 & 0.115\\
+ \textsf{consumers\_anon}& 65 & 170 & 53 & 0.688 & 0.800 & 0.376 & 0.880 & 0.623 \\
+ \hline
+ \textsf{greatest}& 70 & 142 & 83 & 0.585 & 0.859 & 0.492 & 0.746 & 0.880\\
+ \textsf{greatest\_abs}& 58 & 155 & 57 & 0.632 & 0.845 & 0.612 & 0.878 & 0.789 \\
+ \textsf{greatest\_neg}& 62 & 195 & 71 & 0.636 & 0.815 & 0.621 & 0.960 & 0.718 \\
+ \hline
+ Total / average & 2102 & 4811 & 1978 & 0.642 & 0.809 & 0.432 & 0.704 & 0.620 \\
+ \end{tabular}
+ \label{tab:stats}
+\end{table} \ No newline at end of file
diff --git a/aied2018/presentation/tangocolors.sty b/aied2018/presentation/tangocolors.sty
new file mode 100644
index 0000000..935d28d
--- /dev/null
+++ b/aied2018/presentation/tangocolors.sty
@@ -0,0 +1,51 @@
+% Defines the tango palette for use with LaTeX.
+%
+% Copyright 2006 by Patrick Pletscher <pat _at_ pletscher.org>
+%
+% This program can be redistributed and/or modified under the terms
+% of the GNU Public License, version 2.
+
+% butter (yellowish)
+\definecolor{tabutter}{rgb}{0.98824, 0.91373, 0.30980} % #fce94f
+\definecolor{ta2butter}{rgb}{0.92941, 0.83137, 0} % #edd400
+\definecolor{ta3butter}{rgb}{0.76863, 0.62745, 0} % #c4a000
+
+% orange
+\definecolor{taorange}{rgb}{0.98824, 0.68627, 0.24314} % #fcaf3e
+\definecolor{ta2orange}{rgb}{0.96078, 0.47451, 0} % #f57900
+\definecolor{ta3orange}{rgb}{0.80784, 0.36078, 0} % #ce5c00
+
+% chocolate (brownish)
+\definecolor{tachocolate}{rgb}{0.91373, 0.72549, 0.43137} % #e9b96e
+\definecolor{ta2chocolate}{rgb}{0.75686, 0.49020, 0.066667} % #c17d11
+\definecolor{ta3chocolate}{rgb}{0.56078, 0.34902, 0.0078431} % #8f5902
+
+% chameleon (greenish)
+\definecolor{tachameleon}{rgb}{0.54118, 0.88627, 0.20392} % #8ae234
+\definecolor{ta2chameleon}{rgb}{0.45098, 0.82353, 0.086275} % #73d216
+\definecolor{ta3chameleon}{rgb}{0.30588, 0.60392, 0.023529} % #4e9a06
+
+% sky blue
+\definecolor{taskyblue}{rgb}{0.44706, 0.56078, 0.81176} % #728fcf
+\definecolor{ta2skyblue}{rgb}{0.20392, 0.39608, 0.64314} % #3465a4
+\definecolor{ta3skyblue}{rgb}{0.12549, 0.29020, 0.52941} % #204a87
+
+% plum (violettish)
+\definecolor{taplum}{rgb}{0.67843, 0.49804, 0.65882} % #ad7fa8
+\definecolor{ta2plum}{rgb}{0.45882, 0.31373, 0.48235} % #75507b
+\definecolor{ta3plum}{rgb}{0.36078, 0.20784, 0.4} % #5c3566
+
+% scarlet red
+\definecolor{tascarletred}{rgb}{0.93725, 0.16078, 0.16078} % #ef2929
+\definecolor{ta2scarletred}{rgb}{0.8, 0, 0} % #cc0000
+\definecolor{ta3scarletred}{rgb}{0.64314, 0, 0} % #a40000
+
+% aluminium
+\definecolor{taaluminium}{rgb}{0.93333, 0.93333, 0.92549} % #eeeeec
+\definecolor{ta2aluminium}{rgb}{0.82745, 0.84314, 0.81176} % #d3d7cf
+\definecolor{ta3aluminium}{rgb}{0.72941, 0.74118, 0.71373} % #babdb6
+
+% gray
+\definecolor{tagray}{rgb}{0.53333, 0.54118, 0.52157} % #888a85
+\definecolor{ta2gray}{rgb}{0.33333, 0.34118, 0.32549} % #555753
+\definecolor{ta3gray}{rgb}{0.18039, 0.20392, 0.21176} % #2e3436