And a very good point about the hacker/elite snobs pissing on other classmates + gender imbalance and lousy social environment, it's not just limited to CS undergrads but is widespread in Ph. D programs as well, you'd expect that these Head Nerd types would have gotten with the program of life by then.
Combine the shitty social elements with a shitty ROI plus an increased awareness of other kinds of worth than being a coding rockstar, and you've got a bunch of disillusioned, not-very-young people who feel they have been deceived into making their life choices.
The last point is also what's making me reconsider being involved in computer science. It seems like even research universities are increasingly doing work that are more low-quality first-startup style grabs at attention, using machine learning (itself a balkanized field devoid of theory) as a semantic stopsign-marker of objective quality, and less of "classical" computer science results that were very mathematically informed.
I disagree with this. Much of the product of computer science departments these days is mathematical gibberish. Pages of proofs written by extremely poor writers with nary a point in sight.
The heyday of computer science, in contrast, involved academics working on interesting problems and publishing readable work that was accessible to practitioners. For example, the papers that came out Rice's Scaler Compiler Group in the early 1990s are a model of clarity and good taste in academic writing.
This is also great: http://hall.org.ua/halls/wizzard/pdf/Vaughan.Pratt.TDOP.pdf
I think that CS, CPE and EE are different than the rest of STEM that students get to start playing in their discipline much, much earlier. I know from experience that CS majors are writing code their first semester. Continually creating new things in your discipline sets up a feedback-loop that keeps you interested. I don't think this was true for engineering programs like civil, mechanical or aerospace.
For science, the payoff is much more abstract, since you don't actually do science as a science undergrad. You learn about science.
There are, of course, undergrads who get involved in research projects or extra-curricular activities centered around their major that allow them to actually play around in their discipline early on. But I think those are edge cases.
The chemistry student I know has been involved in her university's chemistry research labs since freshman year. Mechanical engineer students here frequently do projects, there is a ME lab for them to mess around with. Biology students have some opportunity (unsure how much) to participate in the university's activities.
But, maybe this University is more hands-on than other places.
There was still about a 50%washout rate.
For the record, my CS undergrad had similar attrition, but it was during the dot-com boom. I was a freshmen in '99 and there were 500 other CS freshmen. The typical number of students at a given level is, I think, roughly 1/5 of that now.
Recent CS grad (May of this year actually)
Its more than people being lazy. Though of course there is some of that but you hit the major and more important points.
I wish the whole of academia were as enlightened as you are
Well, some people are lazy. There's no getting around that. Some people would rather take bong hits or play video games than turn in homework. I don't understand those people. Especially when (as some people have told me) they've done the homework.
I think usually in 'lazy' cases the laziness is because they don't care about the bad grade or the lack of learning. The canonical stereotype is the frat boy with his parents paying his way. Stereotype's priorities are not aligned with seeking a degree. They are aligned with parties or making sure parents are happy. So they have no 'skin in the game', and they are not 'in it to win it'.
I didn't run into very many really and truly lazy people. Most people who didn't turn stuff in (that I talked to - please note the qualifier) simply didn't have priorities aligned with getting the degree with decent grades. Priorities in these cases might be "getting drunk", "arguing with girlfriend", "got sick", "other class had test".
My personal opinion is that Universities in the US are both training and education. We set our sights on education - we the academy - but our clients are often asking for training. I heard a slew of griping by the engineers (EE, ME) in a more theory-based linear algebra course. "Give me numbers so I can stick them in my calculator and crunch them" was the usual desire. When people's priorities are not aligned with learning what you are teaching, you get some poor behavior. My priority was "take hard classes, learn what they teach, suck up the weaker grade". So I sucked it up. I also have a bent for wanting to understand principles, which fits in well in academia.
I think the academy needs to contemplate the idea of "white collar training" and take that as potentially realistic option. Something like a three-year bachelor's degree. I am not sure. I think some CS students could use another year past the four just for code-mashing.
One college I heard about has two options for incoming students. Four year BSCS, or five year MSCS. The extra year adds theory.
Also even the programs considered good, generally AP or IB, are chock full of bad incentives. Most rankings are based upon pass rates, making the dominant strategy teaching students to perform well on the test by analyzing problem frequencies and released grading guides. This ends up being teaching an algorithm rather than reasoning skills.
A lot of times stories like this are received derisively, and it's like some sort of mark of eternal shame to admit that, yes, the gender balance and social scene in my field is important to me.
Sometimes I feel like hackers (and traditional engineers like EE and MEs) aspire to some kind of neo-valhalla. Instead of eternal fighting and mead-drinking it's coding and soda-drinking. This leads to a field that's incredibly flat and simplistic - aka boring.
I have coded since my early teens, so a lot of the code-adoration has faded through the simple wear of time. And, like people seem to as they look towards the end of their twenties, I've made a few mistakes and had a few growing up experiences and those have really broadened my mind about career and goals.
The cyber-valhalla is fun and after a while - for most - the fun palls and you stumble out of the soda hall one day and realize that there's a whole world with unexpected complexity and richness that you've neglected in your pursuit of the code. There's a whole book - Microserfs - about that experience. It's worth reading.
If you're into politics, I don't think there's much stopping you from climbing the ranks of a corporate giant, MBA or not?
So (thought experiment, not backed with anecdote or data) if I can get a (say), History degree and a MBA and have a similar track as a CS degree and a MBA... I know which one provides a better ROI in terms of time invested.
That's doing it wrong. I agree with you that math education is probably broken. I imagine that math is very boring if memorizing equations is what you are doing.
It turns out you can write tests to check for memorizing tricks though. Given a certain mathematical pattern, a certain trick solves it. That is how I remember the GRE as being. I found it a truly atrocious metric.
I have TA'd students and have long had an abiding interest in educational curricula, stemming from my experienced being homeschooled, where as I grew older, I was able to select elective materials to study in cooperation with my parents.
There are a few highlighter reasons I believe STEM education has issues, and please remember that these are interlinked, and other issues are present, which also interlink into these issues. I've picked these because I think they are standout.
* ROI on engineering vs. ROI on the MBA course. Non-founder engineers cap their salary potential in their career, in general, and spend gruelling hours in classes. MBA's salary cap is higher to non-existent, and can apparently skiv off pretty easy in undergraduate years.
* Math education is generally broken in the US. That means that students are not ready for the rigourous thinking and numeracy demanded in STEM. They struggle understanding the basics of mathematics and computational thinking because they never have had it before, so the 'elite' students who do know what they are doing stand out.
* Hacker/elite snobs pissing on other classmates. This has happened to a few friends of mine, but not really to me. Some of the freshmen/sophomores really brag on their ability (i.e., they were coder geeks in high school) and this discourages other people. It's toxic.
* Gender imbalance and lousy social environment. A bunch of stinky guys geeking out over computers and video games which are outdated in a few years is not... primo.
* Young software engineers are expected to spend nearly every waking minute coding, just to have a chance to get a job. They need to get internships, contribute to open source, maybe build a mobile app, etc... and do well in class. This, as near as I can tell, is very rare. Only perhaps musicians have similar expectations. Spending this much time on your field is corrosive to your character and personality (see above two points).
* Culture heroes are entertainers and sports stars. Not makers of useful things.
* Focus on application instead of theory. Everyone wants to do something real cool right now, preferably yesterday, without any training. This is not realistic when laying the foundations for a solid career. Short-term thinking says, "pleasure now, pay later", which does not work well in STEM.