@Daniel Duffy:
One can see that Bjarne has put a lot of thought and effort into making this introduction work well for those completely new to programming -- his thinking is outlined in "Programming in an undergraduate CS curriculum", which I think is worth a read, too:
http://www.stroustrup.com/software.pdf
my 2 cents
In general, I agree with the drift of this note. I don't know the CS education in the USA. In EU however, university CS education -
grosso modo- tends to be very theoretical and lacking in real-life relevance. Most developers in the Netherlands are graduates of what could be called polytechnic colleges (HTS/HBO) and tend to very practical and are able to hit the ground running. Quite a few employers prefer the latter for this very reason. My own company Datasim employed (only) HBO graduates.
Very few (if any) universities here do
C++, preferring Java since it is considered to be <QUOTE> 'pure object-oriented' <UNQUOTE>
Speaking as a dinosaur/engineer of the Fortran 66 era I see CS as a branch of engineering. Domain knowledge is the foundation/glue upon which to develop your software skills. We had to understand the 'voice of the customer'.
Most graduates are not CS, thus what do we do with them?
"can architect software" is infeasible for recent graduates. It takes years of experience in one or more domains.
And I suppose it is fair to say that much more
software maintenance is being done in industry than
greenfield projects. Do any CS education address this issue?