We report on our experience using ACL2 in the classroom to teach students about software testing. The course COSC2300 at the University of Wyoming is a mostly traditional Discrete Mathematics course, but with a clear focus on computer science applications. For instance, the section on logic and proofs is motivated by the desire to write proofs about computer software. We emphasize that the importance of software correctness falls along a spectrum with casual programs on one end and mission-critical ones on the other. Corresponding to this spectrum is a variety of tools, ranging from unit tests, randomized testing of properties, and even formal proofs. In this paper, we describe one of the major activities, in which students use the ACL2 Sedan's counter-example generation facility to investigate properties of various existing checksum algorithms used in error detection. Students are challenged to state the relevant properties correctly, so that the counter-example generation tool is used effectively in all cases, and ACL2 can find formal proofs automatically in some of those.
翻译:我们报告在课堂上使用ACL2来教育学生进行软件测试的经验。怀俄明大学的COSC2300课程基本上是传统的分辨数学课程,但明确侧重于计算机科学应用。例如,逻辑和证据一节的动机是希望写计算机软件的证明。我们强调软件正确性的重要性与一端的零星和另一端的任务关键程序之间的零星相伴。与这一频谱对应的是多种工具,包括单位测试、随机性能测试,甚至正式证明。我们在本文中描述了其中一项主要活动,即学生使用ACL2 Sedan的反示例生成设施来调查在发现错误时使用的各种现有校验算算法的特性。学生们要正确地说明相关属性,以便反例生成工具在所有情况下都得到有效的使用,而ACL2可以在其中一些活动中自动找到正式证据。