
Why is the dropout rate so high for Computer Science? - laurentdc
https://old.reddit.com/r/cscareerquestions/comments/g7ul54/why_is_the_dropout_rate_so_high_for_computer/
======
lykr0n
Because actual Computer Science is not writing a VBA script, or putting
together your own PC. There is some common misconception that Computer Science
= Being good with computers.

At RIT, the Introduction to CS cources (CSCI 140 & 141) were designed to be
hard to get people who assumed CS was "computers" to switch to SWE, GameDev,
IT, Security, EE, or Systems. The courses weeded people out who thought CS was
just programming, because the upper level courses get heavy into math,
science, and theory.

There is no easy way for people to figure out if they are just interested in
computers (IT), like to write software (SWE), like to make games (GameDev), or
are actually into the lower level concepts such as memory management (and
others). You need weed out courses to get people to think about what they
actually want to do.

~~~
Spartan-S63
In that case, I admire (from the outside looking in) RIT's program because my
own college conflated CS and SWE together. We did get into theory, but it was
largely rooted in writing code and SWE.

~~~
norswap
Is it really admirable though? If you remove the tether of software
engineering, then CS is just math.

I think what I like most in CS is when theory comes in support of SWE. Having
something that is elegant and practically useful.

(And I don't know about RIT, but overwhelming, schools don't teach pure CS
theory, but rather CS/SWE.)

~~~
lykr0n
At RIT, this statement holds true: "You don't learn how to write software in
CS, you just learn it by proxy." The CS course is focused on concepts,
involving writing assembly programs to understand how stuff works. And yeah,
it turns into heavy mathematics towards the end, which is why I gave it up
after the first year. It turned into applied theory. If the course was in
Networking (for example), you would spend your time learning the theory behind
it while implementing something to apply the theory. My friend did a whole
bunch of this stuff in C++/Java. He never learned how to write practical
software, just enough to complete the assignments.

Most people move to Software Engineering- the first two years of the CS/SWE
program are virtually the same. You fairly quickly figure out which side of
the fall you want to fall onto.

------
6gvONxR4sf7o
A paper linked in the comments there suggests that dropout rates aren't
relatively super high for STEM [0]

>Attrition rates in non-STEM fields were as high as or higher than those in
STEM fields. At the bachelor’s degree level, students in humanities,
education, and health sciences had higher attrition rates (56−62 percent) than
did those in STEM fields (48 percent), and students in business and
social/behavioral sciences had comparable attrition rates (50 and 45 percent,
respectively) as did students in STEM fields. A closer look at how students
left their fields reveals that proportionally more students in education (42
percent) and health sciences (35 percent) switched majors than did students in
STEM fields (28 percent).

It goes against the trope of "STEM is just super hard and I'm smart because I
made it through."

[0]
[https://nces.ed.gov/pubs2014/2014001rev.pdf](https://nces.ed.gov/pubs2014/2014001rev.pdf)

~~~
jatone
or STEM has a selection bias that pre filters those who would drop out.

------
ng12
I'm not sure if I buy the interest bit. It's common knowledge that CS is
lucrative and lot of students will grind through programs they don't enjoy for
the paycheck at the end.

My experience was that some people are cut out to be programmers and some
people are not. I wish I had a more comfortable explanation but I really
don't. Some students will breathe through CS101 like it was second nature,
others spend every evening in the computer lab and just barely get through it.
Many more just drop out half way through.

I encountered a lot of 4.0 highschool valedictorians who struggled to get
their homework done by the third or fourth week. They could memorize all the
tools and intricacies of the language but were completely unable to figure out
the steps between knowing what their program was supposed to do and
implementing the code to do it. It's something about problem solving, I think.
I suspect the real unifying trait among programmers is the ability to solve
puzzles more than anything else.

I don't think our CS101 class was particularly tough although I do think our
school did them a favor by not babying them through the basics so they could
go on to fail their data structures class. I'll stress that these kids were
very smart and most went on to have very successful careers in other majors.
It's not about intelligence or ability to work hard. I think we just have a
very poor understanding of what makes programming so obvious to some and so
inscrutable to others.

~~~
kthejoker2
I don't think programming is something binary - either obvious or inscrutable
- but there are certainly environments which make programming seem more like
one or the other to the vast majority of people who would fall in between
those two extremes on the spectrum.

One such finding by Cantwell Wilson and Schrock:

[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88....](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88.4671&rep=rep1&type=pdf)

Math background and formal programming classes before their CS101 class
helped, but the dominant factor was "comfort level"

* how they perceived the difficulty of the course

* how they perceived the difficulty of completing the assignments

* how they perceived understanding the concepts of the course compared to their classmates

* asking questions in class, in labs, and in office hours

Students who felt "comfortable" in these areas compared to those who did not
had a strong positive correlation with grade performance.

From my own experience you get a looooot of mileage when teaching others
programming or even basic computer literacy skills out of:

* making "mistakes" yourself to show them the machine won't (literally or figuratively) break

* tell them that error messages are actually the wise words of a sherpa left behind by the developers to help you up the mountain

* Following all the awesome advice in Phil Agre's How to help someone use a computer ( [https://pages.gseis.ucla.edu/faculty/agre/how-to-help.html](https://pages.gseis.ucla.edu/faculty/agre/how-to-help.html) )

I studied chess quite a bit, and one time I complained to my instructor that I
was great at tactics but couldn't apply it in my games. He wisely pointed out,
"That's because you know when you're in a tactical puzzle that there is a
concrete solution."

For people who find computer science "obvious" I think it's in large part
because they are "convinced" \- by assumption, by proof, by experience - that
the thing in front of them was _designed_ to do things ... that you're in a
puzzle, basically. So no matter how many wrong things you enter, bugs you
encounter, hacks you endure, logic bombs you build ... there's an answer, and
you can find it, key by painful key if needed.

And a lot of people feel more like they've been flung into the middle of a
chess game, and there's no certainty at all that what's being asked of them
can even be done.

"Convincing" people of that they're in a puzzle is the first step. If you fail
it, they will always feel that computer science and software development and
all things computers are "inscrutable."

------
WheelsAtLarge
I think it comes down to students having a different expectation of what CS is
all about. Students think that if they like to use and troubleshoot computers
then they will like CS. Well, surprise, CS has a lot of math and a lot of
theoretical work which is a drag if you are not ready for it. Even if you are
ready it's still a drag.

Math is a large component of the degree. I remember that most CS students in
my school would minor in math since it only took 1 or 2 more classes to
complete the minor. Any way you look at it, it's a lot of math. Many people
aren't ready for it.

I think economics is one of those majors that has a large dropout rate too.
Again, the amount of math is a huge reason why people drop out.

~~~
fossuser
I’d be surprised that it would be because of the math - I’d think some math
would be expected, I’d guess it’s because you have to think for yourself and
problem solve basically immediately.

Pretty much every other class just has you follow rote steps until you get to
upper classman years or even graduate school. Some form of recognize the
problem type and then implement the procedure of explicitly taught steps for
that problem.

In computer science introductory classes you get introduced to programming
languages as tools, but you have to figure out the procedures largely on your
own.

I think this is the first time a lot of students have had to actually think
for themselves when solving a problem, and I suspect the transition is too
much for a lot of them and they drop out.

~~~
OGWhales
All of my friends who dropped out did so because of the math. The actual
computer science courses were enjoyable. Discrete math was particularly
challenging on purpose and so was our specific calculus classes we had to
take. This was just to weed people out I heard. I would have guessed your
reason too as that’s why people didn’t like AP computer science when I took
that, but in my experience it seemed like math is what gets people and
honestly that’s what I struggled the most with too. It was just an absurd
amount of work on top of my other classes and it wasn’t enjoyable work either.

~~~
fossuser
That’s interesting - I would expect CS drop out rates to not be significantly
different than engineering/STEM in general if that’s the case since any of
those are likely to have similar levels of math.

If CS rates are higher then I’d expect something unique to CS, if they’re not
then CS isn’t really unique among more difficult degrees anyway.

If the person is comparing engineering degrees/dropout percentage to liberal
arts degrees, well - there’s a reason the liberal arts stereotype exists.
Those classes are way easier.

~~~
dodobirdlord
> That’s interesting - I would expect CS drop out rates to not be
> significantly different than engineering/STEM in general if that’s the case
> since any of those are likely to have similar levels of math.

The level of math in most engineering fields stays within the bounds of
applying techniques from calculus, and rarely involves proving much if
anything. Most engineering degrees don't require any math courses beyond
calculus and statistics. CS is one of a small number of degree programs where
undergrads are likely to be exposed to a significant amount of proof theory,
along with topics like algebra and graphs.

------
mFixman
A big factor people haven't mentioned yet is that job prospects for non-
graduates are extremely good. I know plenty of extremely talented people who
got >£100k/y offers with half a degree.

------
Mikeb85
I'm going to guess it's because lots of people took it just because
programming careers pay well, then realised they hate it or are terrible at
it.

~~~
sesuximo
I think so too. the other side of this question is why do so many people sign
up for cs majors

------
circular_logic
A Professor in 101 put it as: "Programming is just a tool, CS is a study that
just so happens to use that tool now and then."

Without reading through every year's syllabus you will come across supprises
(and very few students seem to do this)

Its expectation versus reality, CS seems to be taught very differently
depending on where you go ie different levels of maths focus is a big one,
another is if they teach "reality" like common industry tools, software
development methodologies, software ethics etc

Often there can a problem with elitism "this course is for knowledge, not your
career" that changes many students minds on if this huge amount of debt is
worth it vs just finding a job right away.

~~~
sky_rw
As my professor put it: "Computer science is as much about computers as
astronomy is about telescopes."

~~~
paulryanrogers
So it's science that happens to involve a computer? Maybe I misunderstood what
CS truly is. I thought it was the science of computing. And while I used a lot
of books and paper to study it, without the machines it would not have been of
much use.

~~~
lykr0n
It is the Science of Computing. Memory Management is a great example of this.
You learn the theory behind memory management, physical vs virtual memory,
pages, swapping, with the goal of being able to understand how modern
computing handles memory. And down at that level, it's all theory and math.
You don't actually need to use a computer to understand it. Something like
sorting lists at an algorithmic level can be applied without a computer. Part
of CS is understanding the most efficient way to sort or traverse a data
structure- a computer isn't needed to apply it.

It's like Medicine. You can know how the human body works down to a cellular
level without ever touching another human. It's not very useful without
another human to apply it to, but the science and application of that science
can be two distinct topics.

~~~
paulryanrogers
While technically true my experience is that doing makes learning easier.
Whether it's chemistry labs or running modified examples through a computer
the process helps things click for me.

~~~
lykr0n
Oh agree 100%. Theory doesn't help much if you can't apply it.

------
analog31
I think the paradox of programming is that it's both easy and hard. It's easy
for a few people who manage to get over the "hump" and become self sufficient
at it. But it's prohibitively hard for most people, even very bright people
with technical degrees. Nobody knows why. It doesn't matter whether it's
"just" programming, or the theory of programming.

"Because math" isn't a good explanation, because most programmers I've known
are average at math, and yet are good programmers.

------
BearOso
Society tends to aggrandize kids these days as the “technology generation” and
so on, but those kids don’t have an understanding of all the devices they’re
using. It’s just rote learning of applications and interfaces.

If you ask them how they think the underlying systems work, you’ll get a
simplistic estimate or something that amounts to “magic.”

That’s why entry level courses are designed to weed out candidates who don’t
know what they’re getting into.

It’s working as intended.

~~~
musicale
> It’s working as intended.

By whom, to what end? Who is served by poorly-taught courses designed to turn
students away instead of helping them become enthusiastic learners?

What's the point of a "course" that can only be passed by students who either
already know the material or learn it entirely on their own without
assistance?

~~~
BearOso
Where I went those courses weren’t exactly difficult. But they started at a
low enough level to say “this is how things are built.” It’s not intended to
frustrate students, but to help them realize what the major is about, and
removes illusions they might have had about it.

------
rndmwlk
What kind of post is this? This question presupposes that CS dropout rates are
"so high," but I am not convinced.

------
downerending
One reason is it's a discipline that you can't really start in college. Unless
you have a fair amount of tech experience of some sort under your belt by
then, you'll never be more than mediocre. Ideally, it's experience you got by
scratching and clawing. If someone served it up to you on a platter, it's not
going to be worth much.

It probably doesn't help that people are being directed into the field for
reasons other than that they simply _really_ want to do it. Those people will
fail at a high rate.

Finally, as many have observed, there's a knack to it. If you don't have it,
you're not going to do well. (I lack the knack for a lot of other fields, and
having tried a bit, there's not much way to get past that.)

------
Ologn
I took night/weekend college classes in CS, often alongside teenagers. For our
computer graphics class, one kid was excited, anticipating he was going to
find out how to point and click his way to make a dragon appear in a video
game and that sort of thing. In class, we learned things like the Phong
reflection model to calculate the illumination of a surface point. Or matrix
addition, multiplication and transposition to reorient the points of an object
in three dimensional space.

Even for myself, we spent a semester learning graph theory, and I had no idea
why we were doing so. I understood the next semester as we worked with tree
and graph data structures like heaps, DAWGs, Dijkstra's algorithm etc.

------
March_f6
As someone who just finished their undergrad in CS I can say that the majority
of the people I know who dropped did so because of the workload and the nature
of it. Coding up a robust LZW compression algo or a small version of BASH in a
week and a half on top of other classes can make for a stressful time. But
every school is different of course.

------
jki275
Because it’s hard, and a lot of people think it’s about computers.

Computer science is a cleverly disguised math degree.

------
mydongle
Over the years I've heard that a number of people mistakenly go into CS,
thinking they'll learn how to program and develop stuff like games and cool
programs. I can imagine how disillusioned some people can become after they
realize what CS really is.

------
acroback
CS requires a lot of practice. Both in terms of theory and practical aspect.

Without it is difficult to make connection between theory and actual stuff you
can run on computers.

And the subject is vast, making it difficult.

------
gnusty_gnurc
When I studied ECE (focused more on EM), it seemed like anyone who couldn't
manage the math/physics/engineering/etc. moved into CS.

------
andrewclunn
Because 2 years of experience is worth more on the job market than a degree
about math concepts that are abstracted away by compilers, so why waste the
time and money?

