books listed at: https://en.wikipedia.org/wiki/Edsger_W._Dijkstra#Selected_pu...
1) A Method of Programming.
2) A Discipline of Programming.
Browse the EWDs and read those whose titles interest you. My favourites are those dealing with Program Correctness and Languages.
Note that understanding Dijkstra can be hard; so don't be discouraged if you don't "get" something at the first read.
On the cruelty of really teaching computer science: https://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF
How do we tell truths that might hurt?: https://www.cs.virginia.edu/~evans/cs655/readings/ewd498.htm...
The humble programmer: https://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340...
The notational conventions I adopted and why: https://www.cs.utexas.edu/users/EWD/ewd13xx/EWD1300.PDF
The Mathematical Divide: https://www.cs.utexas.edu/users/EWD/ewd12xx/EWD1268.PDF
Why American Computing Science seems incurable: https://www.cs.utexas.edu/users/EWD/ewd12xx/EWD1209.PDF
It's the kind of criticism that leaves room for genuine acceptance of the technical excellence and usefulness of those tools, while not buying the hype in the slightest.
EWDs are a gold mine. He's an exceptional thinker and his prose is beautiful.