summaryrefslogtreecommitdiff
path: root/aied2018/presentation/aied_poster.tex
blob: 359dcb217dec03619168e683ce9e58054df48e99 (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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
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}