What is wrong with the following Python 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}