I dropped out of college in the early 90s when many of the CS programs were teaching dated material. It was the best decision of my life, no way I'd be where I am if I had waited to graduate before getting started into a career.
IMO, college is one of many possible options to success. They all have trade offs, and there is no universal answer that fits all of the addressable market.
If you do not go to college, you have some benefits (no cost/debt, earlier involvement in an industry), but also some drawbacks (less of a social network, less insight into how some mechanisms of business and career work, etc.).
Alas, the modern CS curriculum is still pretty dated. It's not that the courses are bad, they're just not that helpful. For instance, I like understanding how compilers work, but I'm never going to be on a compiler-building team. Nor will many of us because everyone just uses LLVM. But it's a big part of the curriculum. And the theory stuff is intriguing, but the modern machine doesn't behave like a Turing Machine and so the lessons are limited.
At my local top-50 CS school, the one useful course on things like React, Angular and Vue, was pretty much cancelled because the Chairman apparently didn't want to "turn the place into a trade school." They refused to even give the adjunct an office.
You seem to be complaining that your CS program is outdated because it teaches CS instead of Software Engineering or the programming trade.
Kind of like complaining that a Material Science curriculum is dated because it teaches Material Science instead of Civil Engineering or the construction trade.
Your point seems kind of circular. CS can't be dated because you have a list of what is considered CS and your list is a single source of truth.
But I wasn't arguing about terminology. I was just pointing out that many of the big, required courses in CS aren't that useful. Or maybe not as useful as the professors might imagine them to be.
So call it whatever you like. I'm just agreeing that the curriculum is dated.
> CS can't be dated because you have a list of what is considered CS and your list is a single source of truth.
CS curriculum can be dated, if it doesn't keep up with progress in the domain. It doesn't become dated just because you want to do something other than CS.
(It may be the case that the percentage of working programmers in jobs where a CS degree is a particularly relevant on-ramp has declined; that's certainly true for both EE and Mathematics, but those degrees aren't outdated, either.)
> I was just pointing out that many of the big, required courses in CS aren't that useful. Or maybe not as useful as the professors might imagine them to be.
They are useful, they just aren't useful for the task you want to do, which isn't computer science, or something which requires particular depth in computer science.
Compilers remain useful, as does the skill to construct them, even if it's not the job you expect to be competing for. More broadly, theory is useful, it's just you don't expect to be seeking jobs that are either doing research moving the field forward or building systems that require more than rudimentary theory.
“Not what I want” isn't the same thing as “outdated”.
You're missing my point. I wasn't saying compilers aren't what I want. Indeed, I said I liked learning about them. I said that very few people build compilers any more, a big change from the 1970s when they found their place in the curriculum. No one parses anything anymore. The data formats like JSON were designed to piggyback on the built-in parsers.
The same goes for theory. It's fun to learn but the reality is that none of the machines have infinite tape and the interesting Turing machine diagonalization proofs pretty much depend upon this feature. Many of the hierarchies collapse without assuming infinite RAM.
Again, you're waving your hands and saying they're useful. Maybe you can find the use for them. Good for you. But I don't see it that often. When I learned that Apple, one of the richest companies in the world, didn't create their own compiler for Swift, I knew that studying compilers was like studying buggy whips. There are a few folks at Colonial Williamsburg that want to understand buggy whip science. They can say with a straight face that it's useful. But it's not for 99% of the CS graduates.
How do you know when learning a piece of theoretical knowledge was useful or not in your day-to-day life?
For me, it's all connected in a big web, and it's very difficult to find a piece of knowledge that wasn't applicable at some point. I feel like I'd be lying if I said my career were not helped by taking compiler theory, even though I never was hired to write a compiler. It's all part of my knowledge base that I bring to bear to solve any problem.
Oh the old halting problem recast to defend yourself. The problem is that it can be used to justify any course. How do you know that buggy whip science isn't going to be useful? Why some EMP may trash the CPUs in cars and then buggy whip science learners will be in big demand.
For those of us without infinite tape/time to simulate our undergraduate years, we have to make tough calls. You can call it a trade to try to elevate the science. You can imagine hypothetical futures when something become useful. You can suggest that it informs some other decision. Those are all fair rhetorical positions. I'm just saying that there's plenty of information in the modern curriculum that's just not useful to most people pursuing most careers.
I'm going to have to agree with the parent commenter. It sounds like you went to a research university, which focuses heavily on theory, and were expecting a trade school.
The value of compilers/OS classes to a generic software developer isn't because you're going to spend a lot of time writing compilers or operating systems, it's because they help you understand what actually happens when your program executes.
IMO, college is one of many possible options to success. They all have trade offs, and there is no universal answer that fits all of the addressable market.
If you do not go to college, you have some benefits (no cost/debt, earlier involvement in an industry), but also some drawbacks (less of a social network, less insight into how some mechanisms of business and career work, etc.).