This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
ast-patterns:start [2018/06/18 20:01] timotej |
ast-patterns:start [2018/07/04 18:31] timotej |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== AST patterns ====== | ====== AST patterns ====== | ||
- | |||
- | We propose using abstract-syntax-tree (AST) patterns as features for learning rules to distinguish between correct and incorrect programs. These rules can be used for debugging student programs: rules for incorrect programs contain patterns indicating mistakes, whereas rules for correct programs cover subsets of submissions sharing the same solution strategy. | ||
- | |||
- | ===== Papers ===== | ||
- | |||
- | ==== Syntax-based analysis of programming concepts in Python (2018) ==== | ||
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. | 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 | + | We propose using abstract-syntax-tree (AST) patterns |
- | * {{: | + | ===== Code ===== |
- | ==== Identifying typical approaches and errors in Prolog programming | + | Check out the source code with '' |
- | In programming courses with high student-teacher ratios, it is nearly | + | ===== Papers ===== |
- | impossible to provide feedback to all homeworks submitted by students. | + | |
- | The alternative would be to generate automatic feedback, however | + | |
- | this would require teachers to specify all possible errors made by students. | + | |
- | Instead we propose a data-driven algorithm for identification | + | {{: |
- | + | ||
- | As the space of patterns is immense and we wish to use only meaningful patterns, we used the argument-based | + | |
+ | {{: | ||
* {{: | * {{: | ||
- | * [[https:// | + | * [[https:// |
- | + | ||
- | + | ||
- | ==== Automatic extraction of AST patterns for debugging student programs (2017) ==== | + | |
- | + | ||
- | When implementing a programming tutor, it is often difficult to manually consider all possible errors encountered by students. An alternative is to automatically learn a bug library of erroneous patterns from students’ programs. | + | |
- | + | ||
- | We propose using abstract-syntax-tree (AST) patterns as features for learning rules to distinguish between correct and incorrect programs. These rules can be used for debugging student programs: rules for incorrect programs (buggy rules) contain patterns indicating mistakes, whereas rules for correct programs cover subsets of submissions sharing the same solution strategy. | + | |
- | + | ||
- | To generate hints, we first check all buggy rules and point out incorrect patterns. If no buggy rule matches, rules for correct programs are used to recognize the student’s intent and suggest patterns that still need to be implemented. | + | |
- | + | ||
- | We evaluated our approach on past student programming data for a number of Prolog problems. For 31 out of 44 problems, the induced rules correctly classified over 85% of programs based only on their structural features. For approximately 73% of incorrect submissions, | + | |
- | + | ||
- | Paper presented at the [[http:// | + | |
- | + | ||
- | * {{: | + | |
- | * [[https:// | + | |
- | * Results ({{: | + | |
+ | {{: | ||
+ | * Results ({{: | ||