As a simple counter-point, my experience is nearly the exact opposite of yours. I felt that I got a lot out of my CS classes. Not every CS class, mind you, but enough that myself without a CS degree and myself with a CS degree would barely be comparable.
An exercise: Ask three randomly chosen CS majors what object-orientation is and why it's so great, and compare their answers.
While we are not strictly random, I can give 1 of 3:
Object-orientated programming is the concept of designing code around simple, efficient, and reusable objects that can work together to accomplish a larger goal. Compare this against sequential programming, which is essentially a long list of code that is only useful for one specific task.
Object-orientated programming is the concept of designing code around simple, efficient, and reusable objects that can work together to accomplish a larger goal. Compare this against sequential programming, which is essentially a long list of code that is only useful for one specific task.
I think a more accurate instrumental description of OOP is that it's code that invokes operations in terms of abstract data types, while having code organization based on concrete data types.
This definition spans everything from prototype-based OO to inheritance to int...
I talk to many ABDs in math, physics, engineering, economics, and various other technical fields.
I work with exceptional people from all those backgrounds.
I would like to unreservedly say to any collegians out there, whether choosing an undergrad major or considering fields of study for grad school: if you know you want a technical major but you're not sure which, choose Computer Science.
Unless you're extremely talented and motivated, relative to your extremely talented and motivated peers, you probably aren't going to make a career in academia even if you want to. And if you want a technical major but you're not sure which, you shouldn't want to! Academia is a huge drag in many ways. When a math ABD starts telling me about how she really likes her work but is sick of the slow pace and the fact that only six people in the world understand her work, I get to take a nice minute alone with my thoughts: I've heard it over and over again, in the same words and the same weary, beaten-down tone. You shouldn't be considering a career in academia unless you're passionately in love with your field, unless you think about it in the shower and over lunch and as you drift off to sleep, unless the problem sets are a weekly joy. A lesser love will abandon you and leave you stranded and heartbroken, four years into grad school.
What's so great about CS, then? Isn't it just a bunch of glorified not-real-math and hundreds of hours of grimy debugging?
Let's start with several significant, but peripheral, reasons:
None of that gets to my real point, which is the modes of thought that CS majors build. Working with intransigent computer code for years upon years, the smart ones learn a deeply careful, modular, and reductionist mindset that transfers shockingly well to all kinds of systems-oriented thinking--
And most significantly to building and understanding human systems. The questions they learn to ask about a codebase--"What invariants must this process satisfy? What's the cleanest way to organize this structure? How should these subsystems work together?"--are incredibly powerful when applied to a complex human process. If I needed a CEO for my enterprise, not just my software company but my airline, my automaker, my restaurant chain, I would start by looking for candidates with a CS background.
You can see some of this relevance in the multitude of analogies CS people are able to apply to non-CS areas. When's the last time you heard a math person refer to some real-world situation as "a real elliptic curve"? The CS people I know have a rich vocabulary of cached concepts that address real-world situations: race conditions, interrupts, stacks, queues, bandwidth, latency, and many more that go over my head, because...
I didn't major in CS. I saw it as too "applied," and went for more "elevated" areas. I grew intellectually through that study, but I've upped my practical effectiveness enormously in the last few years by working with great CS people and absorbing all I can of their mindset.