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.
I also prefer Hopcroft+Ullman (original edition) to later alternatives like their own later edition, Papadimitriou, and even Sipser who is widely regarded as having written the definitive intro text.
"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.
Disagree with "C++ the programming language" as a C++ textbook. Anything by Lippman, Koenig or Moo would be better.
+1 for ML (and purely functional languages) used for implementing compilers.
Tannenbaum wrote some Operating System books (including one on networking). He's not so much concerned with software engineering.
"The (New) Turing Omnibus" is better for this purpose.
Why don't you like Cohen-Tannoudji?
Re: how to design experiments:
Look into statistics. Most experiments have a statistical or hidden statistical basis.
See my suggestions above for calculus.