Functional programming and theorem proving for undergraduates: a progress report
Proceedings of the 2008 international workshop on Functional and declarative programming in education
Toward a Practical Module System for ACL2
PADL '09 Proceedings of the 11th International Symposium on Practical Aspects of Declarative Languages
Making induction manifest in modular ACL2
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
Computational logic in the undergraduate curriculum
Proceedings of the Eighth International Workshop on the ACL2 Theorem Prover and its Applications
Teaching semantics with a proof assistant: no more LSD trip proofs
VMCAI'12 Proceedings of the 13th international conference on Verification, Model Checking, and Abstract Interpretation
Hi-index | 0.00 |
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.