  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.
