학술논문

Tool-Aided Loop Invariant Development: Insights into Student Conceptions and Difficulties
Document Type
Conference
Source
Proceedings of the 26th ACM Conference on Innovation and Technology in Computer Science Education V. 1. :387-393
Subject
contracts
correctness
loop invariants
objects
online tool
reasoning
software engineering
specification
tracing
verification
Language
English
Abstract
To develop code that meets its specification and is verifiably correct, such as in a software engineering course, students must be able to understand formal contracts and annotate their code with assertions such as loop invariants. To assist in developing suitable instructor and automated tool interventions, this research aims to go beyond simple pre- and post-conditions and gain insight into student learning of loop invariants involving objects. As students develop suitable loop invariants for given code with the aid of an online system backed by a verification engine, each student attempt, either correct or incorrect, was collected and analyzed automatically, and catalogued using an iterative process to capture common difficulties. Students were also asked to explain their thought process in arriving at their answer for each submission. The collected explanations were analyzed manually and found to be useful to assess their level of understanding as well as to extract actionable information for instructors and automated tutoring systems. Qualitative conclusions include the impact of the medium.

Online Access