Autograding has been widely used in programming courses for decades. It reduces the marking load on teaching staff, providing them with more time to give higher quality feedback. There is relatively little work, however, on autograding in formal methods courses where the emphasis is not on programming, but on writing proofs and specifications. This paper describes a tool which employs the proof capabilities of Dafny to automatically grade students’ weakest precondition proofs and Dafny method specifications. The tool has been designed to (i) be reusable for new versions of assignments, with minimal input from teaching staff, (ii) allow fine-grained marking, in order to give students part marks for partially correct solutions, and (iii) not artificially constrain students’ use of programming techniques where they need to provide code as well as specifications, allowing them to apply best programming practices. The paper evaluates the use of the tool over two assignments of a course with 217 undergraduate and Masters students and highlights lessons learnt.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Autograding Weakest Precondition Proofs and Dafny Specifications

  • Graeme Smith,
  • Hunter Whitlock

摘要

Autograding has been widely used in programming courses for decades. It reduces the marking load on teaching staff, providing them with more time to give higher quality feedback. There is relatively little work, however, on autograding in formal methods courses where the emphasis is not on programming, but on writing proofs and specifications. This paper describes a tool which employs the proof capabilities of Dafny to automatically grade students’ weakest precondition proofs and Dafny method specifications. The tool has been designed to (i) be reusable for new versions of assignments, with minimal input from teaching staff, (ii) allow fine-grained marking, in order to give students part marks for partially correct solutions, and (iii) not artificially constrain students’ use of programming techniques where they need to provide code as well as specifications, allowing them to apply best programming practices. The paper evaluates the use of the tool over two assignments of a course with 217 undergraduate and Masters students and highlights lessons learnt.