Engineering Software Correctness

  • Authors:
  • Rex Page

  • Affiliations:
  • School of Computer Science, University of Oklahoma, Norman, OK 73019, USA email: page@ou.edu

  • Venue:
  • Journal of Functional Programming
  • Year:
  • 2007

Quantified Score

Hi-index 0.00

Visualization

Abstract

Design and quality are fundamental themes in engineering education. Functional programming builds software from small components, a central element of good design, and facilitates reasoning about correctness, an important aspect of quality. Software engineering courses that employ functional programming provide a platform for educating students in the design of quality software. This pearl describes experiments in the use of ACL2, a purely functional subset of Common Lisp with an embedded mechanical logic, to focus on design and correctness in software engineering courses. Students find the courses challenging and interesting. A few acquire enough skill to use an automated theorem prover on the job without additional training. Many students, but not quite a majority, find enough success to suggest that additional experience would make them effective users of mechanized logic in commercial software development. Nearly all gain a new perspective on what it means for software to be correct and acquire a good understanding of functional programming.