Hacker News new | ask | show | jobs
by moshmosh 1865 days ago
It struck me in college that CS departments are getting away with assuming a lot of background familiarity with computers from their incoming freshmen, picked up on those freshmen's own time, in a way that I don't think any other departments do.

I don't know how people coming in not having sunk thousands of hours into computer crap before entering a CS major don't drown in a hurry. It'd be like starting a creative writing degree in a world where reading & writing aren't taught in school, except maybe as a one-semester high school elective, and you're just expected to have picked them up on your own time by age 18, if you're going to be a creative writing major. "OK, you're familiar with stories from watching TV, but now you're going to need to read and write them. If you can't read them here's a book(!) to help you learn to read, in you own time. Good luck anyone who wasn't already a long-time reading-and-writing nerd before choosing this major".

3 comments

More generally some departments, including CS but not only, get away with picking above average students in a given college and letting other departments get the below average students, through things like "weed out courses" or not teaching actually 101 courses but "assuming a lot of background familiarity with computers", to quote what you say.

Difficulty of any given program at the undergraduate level is completely dependent on university policy. Maybe at the research level, you truly need to be more intelligent / harder working / whatever to succeed in math than in art history, but at the college level, you could do for instance:

- cram all that is taught in current undergrad, MA, and PhD (including the thesis) for art history in 4 years

- let CS students graduate if they can write any working program in any language of their choice

Tada! Art history is now the hardest degree in the college where only the best students aren't weeded out out; and CS is the easiest degree there is.

My point being that CS departments assuming prior levels of CS unlike other departments is merely an instance of a larger pattern.

When I was undergrad, I took a Fortran course. It was basically an intro programming course for non-CS engineering majors. I had taken some BASIC senior year of high school but this course was really literally: We assume you have never touched a computer before. It was 1976, so not a bad assumption.

I'm sure it would be considered a laughable course to teach at an elite school today. (OK. It was a bit harder because we were using punch cards and we had to beg for more computer cycles if we made too many typing errors, but still.) But I'm pretty sure it wasn't because we were a lot dumber back then.

I agree with your basic point though some students do freeze up with even relatively easy math. But, yes, you could put together a relatively easy programming course and call it CS. And liberal arts courses are not necessarily easy today--especially at a good school. You'll be doing lots of reading and writing.

> I agree with your basic point though some students do freeze up with even relatively easy math.

That's the opposite of my point, really.

> And liberal arts courses are not necessarily easy today--especially at a good school. You'll be doing lots of reading and writing.

My point was about the "within university" variance of student levels rather than the "between university" variance. I have no doubt that a liberal arts programs in a good university is more selective than the CS program at a particularly non selective university. However, within any given college, I'd be surprised if the liberal arts program manage to get the above average students and the CS/Math/... programs get the below average students.

Yeah, I had a friend in college who switched majors after constantly comparing themselves to the rest of the class, when a good chunk of us had been programming since our early teens and they had never written a line of code before their first class. It was a bit sad because they were actually doing fine (IMO), but always felt behind because they were comparing against students with years of head start.
I added cs as a second major in my junior year, and I felt that way at first in the java based 101 course. I had actually been using linux since I was a freshman in highschool (before graphical installers were around), and had picked up emacs to use tex-mode for my philosophy papers. But using Java in Eclipse felt completely foreign to me, and I wasn't sure I was going to like CS because of it.

It wasn't until I got past the first few java heavy intro courses that I realized I had a huge leg up on a lot of the other students that only had experience with Windows or Mac. Before that I felt like I was behind behind the curve because I was stubbornly writing Java in emacs because I couldn't stand how dogshit slow Eclipse was, so I didn't have the advantage of the code-completion or project management features.

Looking back on it, the curriculum was actually just holding most students back even further and by using emacs and managing my projects from the command line, I was just increasing the lead I already had over students that didn't have linux experience.

I felt very out of place in my college CS classes. I picked up programming my freshman year and switched to CS from my original major. I was completely green while so many other students - what felt like a majority - had been programming for years and were already extremely familiar with many of the concepts and tools that I was just being introduced to. It was rough for me to feel like I was starting out at such a disadvantage.
I was just thinking about this more, and CS programs kinda remind me more of college sports programs than traditional college majors: if you haven't spent years playing the sport before going to college, you're probably gonna have a bad time. Can you still do it? Maybe, but... damn, it's going to be hard, and take some unusual levels of determination.

Of course some of the problem is that CS programs use computers so much. Which I know may seem like a silly complaint, but I think the fundamental issue is CS-the-science being mashed together with what's really a vocational program (which is what 99+% of students and employers actually want out of it, and its being "real" CS is mostly just an IQ filter). I imagine if you go into, say, a junior college HVAC program not knowing which is the business end of a screwdriver, you'd also be at a big disadvantage compared with most of your peers, and probably feel really out-of-place for quite a while.

Sports or the arts. You probably don't major in music in college if you've never touched a musical instrument.

I took MIT's "Intro" to Programming and Algorithms I think it was called (6.001). I'm not a professional developer but I've written a fair bit of code including Python which is what the class used. I'm pretty sure that, as an undergraduate, had I never seriously used a computer command line before, there is no way I could have gotten through that course.

The same dynamic is largely missing from other engineering courses, as well as the sciences, which don't really expect more than high school classroom work, an interest, and general aptitude.

And it's certainly true that CS (the math degree) gets munged with CS (the engineering degree). MIT's a bit more engineering focused (the degree is in the engineering school). There are also some variants of the degree that are more or less engineering-centric.

To dip my toe into somewhat-dangerous waters, I suspect that if there's a major and highly effective filter other than simple interest (as some data re: more- and less-restrictive societies suggests) keeping women out of CS, it's mainly this preference (by CS programs) for experienced long-time computer geeks in CS freshmen classes, and hostility to those who aren't. Which is still, kind-of, an interest-related filter, but a bit of an odd and harsh one that punishes not having taken a strong interest very early.

You're not going to meet that kind of abrupt and early resistance on the path to becoming a doctor because you didn't spend tons of your free time as far back as junior high reading anatomy books or practicing dissection, for instance.

I don't think it's the only factor but it's been my belief for a long time that it's one factor. If you assume 18 year olds entering CS programs started to widely use computers and game consoles as kids in the mid to late 80s, that lines up well with the decline in women entering CS. [1]

Again, there are almost certainly other factors, and correlation is not causation, but there is at least logical correlation.

To your broader point, a lot of kids enter college with only a broad idea of what they want to do. And high school courses don't really offer much guidance. High school science classes have very little to do with their counterparts at good colleges.

[1] https://www.aei.org/carpe-diem/chart-of-the-day-the-declinin...

Right, agreed on that not being the only factor, but I do think it's suspiciously-sufficient-looking to explain why CS was becoming a boys' club even as women were reaching parity with men in terms of proportion-of-the-sexes in medicine and law, and to some extent business more generally. "Computer nerds are so remarkably and uniquely sexist that they not only avoided this trend, but sharply reversed it" has never... quite rung true to me. Again (because you have to over-specify on this topic or risk angering people) not because there's no sexism among computer nerds or computer companies, but just because I don't get why programming/CS would be uniquely afflicted with that, to such an apparently huge—in order to explain the sharp difference—degree.

Meanwhile there are definitely a lot of gatekeeping-assumptions about childhood interests in modern CS programs, which one would expect to have gotten stronger as more and more freshmen actually could have had experience with computers on their own—so, starting with late-80s freshmen, mostly, with the effect getting stronger fast after that. That lines up so well with the data on CS-program-enrollment-by-sex that it seems to me like the factor to examine before we go looking for other explanations. Again, to be excessively explicit due to the topic, I mean this in terms of accounting for the gender gap in programming, not in terms of addressing any other issues of sexism in the industry, which I am not denying exist.

> You're not going to meet that kind of abrupt and early resistance on the path to becoming a doctor

It's much more inclusive indeed. If you can afford the mandatory completely unrelated undergrad you need to have completed to even apply to med school and the travel fees to attend your in-person interviews of course.

Yeah, the educational commitment is definitely much higher. I just mean they don't expect you to have put hundreds of evenings, Saturdays, and Summer afternoons into wholly-self-motivated learning about the field by the time you're 18, or else have a very rough first couple years.
> I'm pretty sure that, as an undergraduate, had I never seriously used a computer command line before, there is no way I could have gotten through that course.

They don't call it the firehose for nothing. [0]

[0] http://hacks.mit.edu/Hacks/by_year/1991/fire_hydrant/

I'm very well familiar with the firehose :-) But mechanical engineering there, for example, did not require anything more than 1.) The ability to get into MIT and 2.) The normal high school curriculum. It didn't require years of experience in stripping down engines and rebuilding them. and, OK, 3.) Dealing with the firehose. :-)
> I picked up programming my freshman year and switched to CS from my original major. I was completely green while so many other students - what felt like a majority - had been programming for years

There's been some research on this and places like Harvey Mudd solve this basically by dividing the incoming freshmen into 'has any experience at all programming' and 'completely new', which was like 50-50 if I recall. And then tweaking assignments to not be video game focused -- pulling in problems & themes from bioinformatics and other fields instead.

>And then tweaking assignments to not be video game focused

Our only program of any significance in CS101 was a space invaders clone, but because we were so inexperienced, they provided a project template where we really just had to fill in some methods with a bunch of for-loops. When we got to the later courses and had to write our programs from scratch, we really had no idea where to begin because the 101 coursework had done all of that for us.

The video game assignments were asinine because they were beyond our skill level to do from scratch, so their templates handled all the I/O for us and that part of the program was treated like a bunch of magical incantations. As a result, we never fully internalized how all the moving parts fit together, and it kept us from learning useful stuff like how to read/write from files or execute system commands.