"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.
Manber's "Algorithms--a creative approach" is better than Cormen, which I agree is better than Knuth. It's also better than Aho's book on algorithms as well. It's better in that you can study it by yourself with more profit. On the other hand, Cormen's co-author has a series of video lectures at MIT's OCW site that you can follow along with.
For an AI text, I think any (text)book on a subject of your interest by Judea Pearl would fit the bill.
"Symbolic Logic and Mechanical Theorem Proving" by Chang and Lee is still an exceptionally lucid introduction to non-probabilistic AI.