Department of
Computer Science

CS 350 Algorithms & Complexity

 

CS350 Home Page

 

Other Readings

This page provides details about additional readings beyond the required textbook.

Proving Programs Correct

The first reading is the paper "An Axiomatic Basis for Computer Programming" by Tony Hoare. With this paper Hoare essentially founded the field of program verification, that is, of proving that programs satisfy a formal specification. Essentially the same techniques are still used today, although they have been refined. The notation that Hoare introduces here

predicate1 {program statement} predicate2

has generally been superseded by the notation

{predicate1} program statement {predicate2}

which has the very practical advantage that the { and } can be treated as a kind of special comment or annotation bracket, and the proof (in the braces) can then be interpolated throughout the program.

This retrospective is also worthwhile reading, but not required. 

Direct Link: http://dl.acm.org/citation.cfm?id=363259

The second reading is the paper "Proof of a Program: FIND", also by Hoare. The FIND program is very similar to the partition phase of quicksort, and indeed not long afterwards, Foley & Hoare published a proof of Quicksort that used this proof. Still, for the purposes of an example, FIND is simpler.

Direct Link: http://dl.acm.org/citation.cfm?id=362489

Note: to download these articles for free, you may need to be on campus, or connected to campus using the VPN, or to get them from the library website using your PSU ID. You can also use your ACM membership to get access. (If you are not a student member of the ACM, consider joining: it’s a bargain!)


Most recently modified on Friday 6 March 2015 at 00:40


Andrew P. Black