blob: 69db43508b78c39ddecb888d47aed165a793fe74 (
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
|
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}
|