I agree. Though there are those magical universities out there (and who knows, maybe there are magical bootcamps too) that teach abstract thinking. My university unfortunately does not belong to them. In terms of programming, it's all rote-learning of the basics for the exams and shit ton of exercises supporting that rote learning.
I can pin-point some places where I did learn various aspects of abstract thinking. I learned it by reading. Books like "Gödel, Escher, Bach", books like "Structure and Interpretation of Computer Programs", or the Sequences by HN's 'Eliezer. I learned it by thinking about what I read, and also by starting hobby projects and thinking hard when doing them.
The universities, and maybe even bootcamps, may help a bit - but there's no learning of abstract thinking unless you yourself care.
+ 1 for GEB. I read that freshman year (now a junior).
As an example of its utility, I really like its description of formal systems which are a somewhat simplified version of context free grammars. There are many other concepts described in that book that give similar but more intuitive explanations of CS concepts that helped me understand them as part of "the bigger picture."
CODE: The Hidden Language of Computer Hardware and Software, which is mentioned on here a lot, was helpful for similar reasons.
It's not a winner take all game. Of course you can develop skills both ways. One way places an emphasis on it. Think of a good CS degree as an interface for abstract thinking.
nothing to do with winner takes all. CS degree does not guarantee you to be able to do abstract thinking. Thats the point. It's a skill you develop way before you even go take a CS degree.
I can pin-point some places where I did learn various aspects of abstract thinking. I learned it by reading. Books like "Gödel, Escher, Bach", books like "Structure and Interpretation of Computer Programs", or the Sequences by HN's 'Eliezer. I learned it by thinking about what I read, and also by starting hobby projects and thinking hard when doing them.
The universities, and maybe even bootcamps, may help a bit - but there's no learning of abstract thinking unless you yourself care.