“On the cruelty of really teaching computing science”, E. W. Dijkstra, 1988
“…all by itself, a program is no more than half a conjecture. The other half of the conjecture is the functional specification the program is supposed to satisfy. The programmer’s task is to present such complete conjectures as proven theorems.”
http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1036.html