ABSTRACT
For the past five years, the University of Oklahoma has used the ACL2 theorem prover for a year-long sequence on software engineering. The goal of the course is to introduce students to functional programming with "Applicative Common Lisp" (ACL) and to expose them to defect recognition at all levels, including unit testing, randomized testing of conjectures, and formal theorem proving in "a Computational Logic" (ACL2).
Following Page's example, Northeastern University has experimented with the introduction of ACL2 into the freshman curriculum for the past two years. Northeastern's goal is to supplement an introductory course on functional program design with a course on logic and theorem proving that integrates the topic with programming projects.
This paper reports on our joint project's progress. On the technical side, the paper presents the Scheme-based integrated development environment, its run-time environment for functional GUI programming, and its support for different forms of testing. On the experience side, the paper summarizes the introduction of these tools into the courses, the reaction of industrial observers of Oklahoma's software engineering course, and the feedback from a first outreach workshop.
- Achten, P. and M. J. Plasmeijer. The ins and outs of Clean i/o. Journal of Functional Programming, 5(1):81--110, 1995.Google ScholarCross Ref
- Arts, T. and J. Hughes. Erlang/QuickCheck. In Ninth International Erlang/OTP User Conference, November 2003.Google Scholar
- Beck, K. and E. Gamma. Test infected: Programmers love writing tests. In Java Report, volume 3, pages 37--50, 1998.Google Scholar
- Boyer, R. S. and J. S. Moore. Mechanized reasoning about programs and computing machines. In Veroff, R., editor, Automated Reasoning and Its Applications: Essays in Honor of Larry Wos, pages 146--176. The MIT Press, Cambridge, Massachusetts, 1996. Google ScholarDigital Library
- Claessen, K. and J. Hughes. QuickCheck: a lightweight tool for random testing of Haskell programs. In ACM SIGPLAN International Conference on Functional Programming, pages 268--279, 2000. Google ScholarDigital Library
- Cooper, G. H. and S. Krishnamurthi. Embedding dynamic dataflow in a call-by-value language. In Sestoft, P., editor, 15th European Symposium on Programming, ESOP 2006, volume 3924 of Lecture Notes in Computer Science, pages 294--308. Springer, 2006. Google ScholarDigital Library
- Dillinger, P. C., P. Manolios, J. S. Moore and D. Vroon. ACL2s: The ACL2 Sedan. In Proceedings of the 7th Workshop on User Interfaces for Theorem Proving, volume 174(2) of Electronic Notes in Theoretical Computer Science, pages 3--18. Elsevier, 2006. Google ScholarDigital Library
- Eastlund, C., D. Vaillancourt and M. Felleisen. ACL2 for freshmen: First experiences. In ACL2 '07: Proceedings of the Sixth International Workshop on the ACL2 Theorem Prover and its Applications, pages 200--211, New York, NY, USA, 2007. ACM Press.Google Scholar
- Elliot, C. and P. Hudak. Functional reactive animation. In ACM SIGPLAN International Conference on Functional Programming, pages 196--203, 1997. Google ScholarDigital Library
- Felleisen, M., R. B. Findler, M. Flatt and S. Krishnamurthi. How to Design Programs. MIT Press, 2001.Google Scholar
- Findler, R. B., J. Clements, C. Flanagan, M. Flatt, S. Krishnamurthi, P. Steckler and M. Felleisen. DrScheme: A programming environment for Scheme. Journal of Functional Programming, 12(2):159--182, March 2002. Google ScholarDigital Library
- Findler, R. B., C. Flanagan, M. Flatt, S. Krishnamurthi and M. Felleisen. DrScheme: A pedagogic programming environment for Scheme. In Glaser, H., P. Hartel and H. Kuchen, editors, Programming Languages: Implementations, Logics, and Programs, volume 1292 of LNCS, pages 369--388, Southampton, UK, September 1997. Springer. Google ScholarDigital Library
- Ignatoff, D., G. H. Cooper and S. Krishnamurthi. Crossing state lines: Adapting object-oriented frameworks to functional reactive languages. In Hagiya, M. and P. Wadler, editors, Functional and Logic Programming, 8th International Symposium, FLOPS 2006, volume 3945 of Lecture Notes in Computer Science, pages 259--276. Springer, 2006. Google Scholar
- Kaufmann, M., P. Manolios and J. S. Moore. Computer-Aided Reasoning: ACL2 Case Studies. Kluwer Academic Publishers, 2000. Google ScholarDigital Library
- Kaufmann, M., P. Manolios and J. S. Moore. Computer-Aided Reasoning: An Approach. Kluwer Academic Publishers, 2000. Google ScholarDigital Library
- Page, R. Software is discrete mathematics. In Runciman, C. and O. Shivers, editors, Proceedings of the Eighth ACM SIGPLAN International Conference on Functional Programming, ICFP 2003, pages 79--86. ACM, August 2003. Google ScholarDigital Library
- Page, R. Engineering software correctness. In Proc. 2005 Workshop on Functional and Declarative Programming in Education, pages 39--46, New York, NY, USA, 2005. ACM. Google ScholarDigital Library
- Page, R. Engineering software correctness. Journal of Functional Programming, 17(6):675--686, April 2007. Preliminary presentation at FDPE '05. Google ScholarDigital Library
- Vaillancourt, D., R. Page and M. Felleisen. ACL2 in DrScheme. In ACL2 '06: Proceedings of the Sixth International Workshop on the ACL2 Theorem Prover and its Applications, pages 107--116, New York, NY, USA, 2006. ACM Press. Google ScholarDigital Library
Index Terms
- Functional programming and theorem proving for undergraduates: a progress report
Recommendations
Theorem Proving Modulo
AbstractDeduction modulo is a way to remove computational arguments from proofs by reasoning modulo a congruence on propositions. Such a technique, issued from automated theorem proving, is of general interest because it permits one to separate ...
Comments