“A Discipline of Programming” is rather hard to follow. Dromey gives an introductory treatment that’s a bit too introductory, “Progamming Pearls” by Bently includes another even more informal treatment, and Gries’s “Science of Programming” would be the textbook version that I might recommend covering this material. All three are somewhat dated. More modern treatment would be either Apt’s “Verification of Sequential and Concurrent Programs” or Manna’s “The Calculus of Computation.” and depending on your focus one would be better than the other. However, the ultimate book I would recommend in this field is “Interactive Theorem Proving and Program development” by Yves Bertot. It doesn’t teach Hoare’s invariant method like the other books, but uses a more powerful technique in functional programming for creating provably correct software.
“A Discipline of Programming” is rather hard to follow. Dromey gives an introductory treatment that’s a bit too introductory, “Progamming Pearls” by Bently includes another even more informal treatment, and Gries’s “Science of Programming” would be the textbook version that I might recommend covering this material. All three are somewhat dated. More modern treatment would be either Apt’s “Verification of Sequential and Concurrent Programs” or Manna’s “The Calculus of Computation.” and depending on your focus one would be better than the other. However, the ultimate book I would recommend in this field is “Interactive Theorem Proving and Program development” by Yves Bertot. It doesn’t teach Hoare’s invariant method like the other books, but uses a more powerful technique in functional programming for creating provably correct software.
I’ll look for Bertot’s book. I agree that “A Discipline” is not a pleasant read (though I found it rewarding).