28 points by luu 8 months ago
While interesting, I think an equally relevant question is retention rates.
When I was taking my BS the freshman class was packed. While the failure rate was probably on par with this report, many more of the students dropped CS not because of grades and I never saw them again.
Whether it was out of lack of interest or because it wasn't what they through it was (all I wanted to do was build a cooler Halo game) would have been interesting to know.
The effect was even more pronounced after Sophomore year.
I suspect Data Structures and Algorithms, which I loved, but could be difficult to digest and may have disillusioned people with that CS or SE actually was.
Similar thing to me.
I think a lot of people did not really know what they were signing up for - I dont have any data or evidence but from half-remembered chats and gossiping I think a lot of those that simply disappeared/switched courses/dropped-out did not really understand what they were getting in to and thought that computer science was more about using computers rather than proper computer science. Like how to write wicked-complex spreadsheets or something, or make a webpage maybe (it was the early-mid 2000s afterall).
Even a year or two in I remember some people complaining bitterly about having to learn databases/normalisation and SQL "When are we ever going to use this? Why are we wasting our time learning all this SQL nonsense?!"
...but then these were the exact same people who blamed the teaching when they dont get good grades in the exams. YMMV.
I was one of the people who didn't want to learn SQL/database stuff. What do you know, after a few years in the industry my interests lay heavily in serverside. I'd kick the old me if I could.
Might as well kick the old you, it's just as likely to have an affect as kicking that young kid next to you, 'cuz she ain't gonna listen, either.
I don't know, that attitude always struck me as an equivalent to a mechanic that refuses to learn how an internal combustion engine works. Yeah, sure, you could probably get away with being an suspension/alignment specialist. But everything you work on has one of those engine thingies, why not expand those horizons and learn how they work? Know a little C, know how to create a SELECT beyond "* FROM myTable", know the basics of getting a web server up, running and serving simple pages; we need a programmer's equivalent to Heinlein's list of things every man should know.
There was a notorious course in my graduate program on Image Synthesis taught by seasoned professionals who really knew what they were talking about. And from the outside, it had really high pass rates, too.
Student interest was high, so when I enrolled in the course, we were around 25 students. By the mid-term it became obvious that most of us were interested, but couldn't put in the required 200% effort (compared to the credits we would receive).
Many (including me) dropped the course, and in the end, I think around 10 people sat the final - who did of course pass, since they were selected that way throughout the year.
In a similar way many opt-in courses were difficult but almost everyone passed. That's because only interested and motivated students took them. For example Graph Theory, Advanced Linear Algebra and a course in advanced algorithmic problem solving (basically competitive programming competitions).
from the outside, it had really high pass rates, too.
[...] Many (including me) dropped the course,
Which is also why I'm not sure that picking CS1 was a good choice for study.
Surely failing CS1 is highly correlated with dropping out of a CS degree completely - or rather, it would be interesting to see if indeed failing CS1 was anticorrelated with failing other first-year CS courses.
I don't know how many students of my semester dropped out.
One professor said they had a drop-out rate of 40%, most of them in the first two semesters and that's not counting the people who just changed their major.
I studied "computer science and media," and many students had the impression it should be some mix of graphic design and a bit programming, but in the end, it was basic computer science with most of the examples from "media" (computer graphic, web development, printing, etc.)
When I was at the end of my degree, they also created a new degree called "mobile media," which was like "computer science and media," but with iOS and Android examples.
Since the name was so catchy, "mobile media" was filled with people who never in their right mind would have studied CS, only a hand full of them survived the first semester.
This sounds like a huge failure of marketing if people have not got a good idea of the course content and objectives before taking it.
It's especially bad if people are convinced to get into nondischargeable debt for products they don't understand!
Having had a... scenic, shall we say, academic tenure, I can say that programming is not really that hard compared to some other topics. Second year biochem tends to kill chemists. My inability to grasp differential equations in my mechanics class (physics) pissed me off so much that I accidentally got a math degree instead of a CS degree (had to go back for a year to convert it). I could go on, but in reality there are far harder courses than anything I took in CS. I don't think anything has change so much even though a considerable amount of time has passed.
As more evidence, look at the huge number of people with degrees in unmarketable skills doing boot camps and actually becoming productive professional programmers. It's not that hard -- maybe a bit harder than learning a human language (but not nearly so time consuming).
But I will say that in my time the biggest destroyer of talented people in CS: Empire. I had to forbid myself from playing that damn thing. Ruin your life, it would! I wonder if there is any kind of similar geeky crack these days... (though I think that even today if undergrads got their hands on Empire they would be doomed...)
I agree. Programming wasn't hard, especially if you had prior experience. Even a little bit would help.
On the other hand it also means that you aren't quite the perfect programmer after finishing the course.
Due to the immediate possibility for practical application, it was a lot easier than other more abstract topics.
Nevertheless it drove quite some people away from CS. Though not nearly as many as Algebra.
I helped out a little with this sort of thing when I was at university and tutoring intro programming papers. From memory, the one thing that is fairly unique to programming courses is that they tend to have a more-than-normal bimodal distribution of results (at least, based on my university.) There was only one other course that showed a similar pattern, and it was one that taught computing for biology or something.
The two modes tended to come from two groups of people: those who missed classes and failed to catch up, and those who either didn't miss classes, or managed to catch up what they'd missed.
It was suggested from this that programming is pretty unique in that the whole course builds on everything that has come before. If you miss a bit in maths, then you might lose a few points on that aspect, but when they move to a different topic, it generally won't depend on what you missed.* However, in a programming course, if you miss constructors, or arrays, or something then you're kinda screwed for the rest of the course if you can't figure it out.
We helped deal with this by having specific remedial tutorials where people could come and get help with anything they missed, or were stuck on, etc. IIRC (it was a while ago) this helped pass rates quite well.
* there are definitely exceptions, I'm speaking in generalities.
> programming courses is that they tend to have a more-than-normal bimodal distribution of results
There is argument that is not true . However, I agree with your next statement that this isn't so much a 'lack of geek gene', but a lack of catching up. In , even something as simple as assignment operations were able to predict success in a CS course.
I'm currently developing my own 'remedial tutorials' and researching the proper order of exercises to give a low-performing student. Similar to your experience, these help those low-performers catch up.
This is a rather dated paper, here is a 2014 meta-analysis with a better N.
I dropped out of CS about 15 years ago because the way it was taught bored me to tears. No I don’t want to build another bank account manager just to learn data structures or databases or whatever. Went and got a degree in history, ended up using the few things I picked up when I studied CS to fall into a business intelligence job.
And now I’m kinda looking into programming again and many books I examined still go with “let’s build a bank account manager” as an example project. Such a shame, programming offers endless possibilities and the first encounter is the worst kind of business app.
>Went and got a degree in history, ended up using the few things I picked up when I studied CS to fall into a business intelligence job.
Could you elaborate on this? I hold an associate's that I want to upgrade to a full Bachelor's in CS; I'm looking at my options for a minor and History is one.
While i love history, my advice for a humanities minor would always be philosophy, unless you have a really specific reason to want to go for history. But in terms of developing critical thinking skills there is no substitute for philosophy.
There are a few "substitutes"... Or rather strong derivatives devised from hundreds of years of philosophy.
1) Advanced mathematical logic.
2) Advanced statistics.
3) Advanced control theory or systems.
4) Experiment design.
All of these usually post-graduate and they feed one into another... You need pretty strong algebra and mathematic proof reading skills too.
Most people I knew who left CS, did so either during the first intermediate programming course (where C/C++ pointers were introduced), while the second set of defections were during the Computer Organization/Assembly Language course.
Apropos of just chucking in another data point, of my Masters in Maths course, something under 20% of those who started came out the other end with a Masters in Maths. Those exams were brutal.