"Computers are ubiquitous in modern life. They offer us portals to information and entertainment, and they handle the complex tasks needed to keep many facets of modern society running smoothly. Chances are, there is not a single person in Ars' readership whose day-to-day existence doesn't rely on computers in one manner or another. Despite this, very few people know how computers actually do the things that they do. How does one go from what is really nothing more than a collection - a very large collection, mind you - of switches to the things we see powering the modern world?"

This seems naive. The average person is far less intelligent than most intellectuals actually realise.

It is not purely due to poor teaching that first year university programming courses have immense failure rates.
It does seem to be beyond most people.

Thereby completely missing the point of my comment.

Thinking algorithmically and structurally should come before learning programming languages. A lot of first year courses assume people already know how to think properly and that programming is a matter of writing code.

What I suggest is that it shouldn't be taught at university first but in high schools and possibly earlier.

Using university failure rates as proof is lazy, and is probably indicative of a mind not suited for good programming either. Programming requires foresight, hindsight and lateral thinking.