Dijkstra’s A Discipline of Programming and its spiritual successor that he did with Scholten Predicate Calculus and Program Semantics. They changed how I think about programming.
You must surely then get his (with Feijen) book A Method of Programming. It is designed for classroom use targeted at a "introductory programming curriculum".