You could teach people all they need to know about big O and common algorithms in an afternoon
I would agree with that specifically on the "all they need to know" part.
I got my BSCS, and I can say that having a little knowledge about how the big O or big theta stuff works can help you understand what makes a chunk of code more or less efficient, but learning how to exactly properly calculate things like that aren't really necessary for 90% of the programming jobs out there.
Maybe if you're writing hardware level programs or something and efficiency is a big deal.
Lots of the CS degree is more focused on the science of computing, than on how to be a good programmer.
I've been a full time programmer for over a decade now, and I've never had to determine if any of my algorithms were turing compliant, or use BCNF for database design.
That doesn't mean there isn't a use for that knowledge, just that for the masses it will not make you a better or worse programmer.
Here are the things from my CS degree experiences that I would say have actually useful been useful to me in the business world:
- Programming Languages: we reviewed different types, from functional languages to OO, etc and what makes a language
- Networking: Learned a lot about the topic, and even wrote some TCP/IP programs
- Operating systems: Learn how different operating systems work and what's under the hood a little. Not super helpful as it was more theoretical than practical, but still interesting
- Non-CS classes: Honestly the BS classes that people complain about, like social studies and arts focused classes did a world of good for me. Improved my writing and presentation skills, and gave me a much broader view of the world than I would have had if I never left the podunk town I grew up in.