It doesn't help that there is this confusion that if you want to get a job as a programmer, you need to study CS, even though CS is not necessarily the best path to doing web development or writing iOS apps! This explains some of the frustration many students suffer, which makes them claim CS is detached from the real needs of programmers. This also explains articles like "the perils of Java schools" -- a "Java school" is by definition NOT teaching CS! CS is a theoretical field which has applications for the software industry (otherwise it wouldn't be very interesting), but it is "researchy" and theoretical
first. It is the foundation of computing, kind of like applied maths, and not supposed to be training for your next job. Unless, of course, your next job actually requires a scientist or someone with a good understanding of the theory.
This unfortunate conflation of "CS" and "programming" is so common it's starting to become the mainstream definition of CS, much to my annoyance, and soon it will no longer make sense to push back against it :(