Conceptual Mutation Testing for Student Programming Misconceptions

Siddhartha Prasad,Ben Greenman,Tim Nelson,Shriram Krishnamurthi
DOI: https://doi.org/10.22152/programming-journal.org/2024/8/7
2023-12-28
Abstract:Context: Students often misunderstand programming problem descriptions. This can lead them to solve the wrong problem, which creates frustration, obstructs learning, and imperils grades. Researchers have found that students can be made to better understand the problem by writing examples before they start programming. These examples are checked against correct and wrong implementations -- analogous to mutation testing -- provided by course staff. Doing so results in better student understanding of the problem as well as better test suites to accompany the program, both of which are desirable educational outcomes.
Software Engineering,Programming Languages
What problem does this paper attempt to address?
The paper primarily focuses on the challenges students face in understanding problem descriptions in programming education and proposes a workflow to generate conceptual mutation testing to help students better comprehend programming tasks. Specifically, the paper attempts to address the following key issues: 1. **Students' Misunderstanding of Programming Problem Descriptions**: Research has found that students often misunderstand the requirements of programming problems, leading them to solve the wrong problems, which results in frustration, hinders the learning process, and affects their grades. 2. **Improving Understanding Through Writing Examples**: Previous studies have shown that having students write examples (rather than test cases) before starting to code can help them better understand the problem. These examples can be compared with both correct and incorrect implementations—similar to mutation testing—to improve students' understanding and the quality of the test suites they write. 3. **How to Effectively Generate Conceptual Mutations**: To help students identify and correct misunderstandings of the problem, a set of mutant implementations needs to be designed. These mutants should correspond to common student misunderstandings rather than random errors. However, traditional mutation testing techniques are not suitable for this purpose because they may generate a large number of mutants, many of which are too obscure or irrelevant, which can distract students. To address the above issues, the paper proposes a semi-automated workflow to extract common misunderstandings from students' failing examples and transform these misunderstandings into conceptual mutant implementations. This workflow includes the following steps: - Collecting examples submitted by students that fail to pass the correct implementation (referred to as wheat). - Performing semantic clustering on these examples to identify common misunderstanding patterns. - Selecting a small but effective set of mutant implementations (referred to as chaff) based on the clustering results to provide feedback to students. This workflow aims to reduce the cost of generating conceptually interesting and effective mutant implementations while improving their effectiveness. This mutation testing method can not only improve learning outcomes but also reduce students' frustration, ultimately promoting better educational results. Additionally, the paper discusses how to automate parts of this process and points out directions for further research.