Yes, I share your concern: how to program well -though a teachable topic- is hardly taught. The situation is similar to that in mathematics, where the explicit curriculum is confined to mathematical results; how to do mathematics is something the student must absorb by osmosis, so to speak. One reason for preferring symbol-manipulating, calculating arguments is that their design is much better teachable than the design of verbal/pictorial arguments. Large-scale introduction of courses on such calculational methodology, however, would encounter unsurmoutable political problems.
Edsger DijkstraThe purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.
Edsger DijkstraMuch of the excitement we get out of our work is that we don't really know what we are doing.
Edsger DijkstraBeware of "the real world". A speaker's apeal to it is always an invitation not to challenge his tacit assumptions.
Edsger DijkstraSimplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.
Edsger Dijkstra