We don't expect law students to have been amateur lawyers in high school; it's a bonus if they have been in the debate society or have taken a personal interest in the subject, but it's not necessary. I don't see why CS should be a special case, aside from a misplaced attitude of exclusionary elitism.
If you can afford a video game console, you can afford a raspberry pi (or equivalent.)
> We don't expect law students to have been amateur lawyers in high school
No, but we expect math majors to have done some math before they get to college.
I don't disagree with you that most people can be brought up to speed in less than a year, but it's also not unreasonable to expect first year CS students to have had some programming experience. Computers don't cost thousands of dollars anymore.
If you are a boy, video game console is something that is bought for you often times whether you really want it or not. Raspberry pi is likely not and you don't know it exists. And even if you know it exists, you need computer to upload code to it and then you could have just use that computer to code. I know that it is easy to code when you know where to look, but the biggest hurdle is that many kids dont know where to look. Instead, they are told there is something magical and hard about it.
I remember being told that it is hard or that I cant compete because I am (presumably) just learning and other kids "already know a lot". It was bs, but that is where it is for many kids.
Seriously, I knew straight A students who were more hardworking then me and had good grades in math (meaning no dummies memorizing stuff) were under impression I have some special brain because I can program. All the myths around cs tend reinforce such nonsense.
Beyond that, I know a lot of poor kids who don't have video game consoles, and there literally isn't $50 in the budget for something that may or may not produce any value (not to mention the monitor, the peripherals, and taking up vast amounts of time on the family computer -- if one exists -- to figure out how to use it).
I have extended family living in rural Utah who don't even have a computer -- they use their phones for the Internet. You can debate back and forth about the cost of a phone vs. the cost of a cheap Desktop, but people need phones to function in society, for better or worse. Try figuring out what to do with a bottom tier smartphone, a limited data plan, and a Rasberry Pi that just arrived in the mail.
I volunteer at the Boston Museum of Science, working in the Tech Studio/engineering department, often showing off the latest "engineering toys" -- Little Bits, Rasberry pi, Scratch on an iPad that controls a Lego robot... Rich kid parents ask "Oh, where can I get this?" It's not a big deal for them to drop a couple hundred bucks on flavor-of-the-week programming toys. Poor kid parents are often interested and enjoy playing around with it at the Museum, but never ask about getting one themselves. It doesn't even occur to them.
Beyond THAT, there are a lot of majors that don't cost a lot of money. You can use the argument "X doesn't cost much to learn -- why haven't you done X before on your own time?" to apply to anyone.
Right. This type of democratization is EXACTLY what allowed me to climb the social ladder out of the rural midwest into a Top 15 university and then Silicon Valley. As a teenager, all I needed to teach myself coding and advanced math was free time and an Internet connection.
What makes you bring up gender over race or class ? There are more middle-class Asian and White women in the field than lower-income African-American and Hispanic men.
Agreed, and when it comes to CS, programming is the easiest part. People who fail to see this are probably the ones who only know programming and no CS.
Say you apply to study marine biology but have never been to the seaside then sure, you might do fine, but really I'd be wondering why you weren't taking a gap year and doing some self-directed study at a beach (hey, that sounds fun!).
Somewhat related to your point, letting novice programmers get CS degrees doesn't fix the problem because there is still a performance gap which results in a hiring gap. If there is problem with demographics having unequal experiences, while colleges can be tweaked to keep the inequality from growing, it is far better to fix it where it comes from.
It's far simpler to say than do, but our society needs to find why the gender skew in high school programmers happens and stop it.
In the UK you start to specialise at 13/14
I and I bet having a GCSE and A level in Law would help for wanabe lawyers
Linux wasn't required for entry-level courses. At the time, they were taught using C++ and a Borland IDE on Windows.
Similarly, source control wasn't introduced immediately. I'm pretty sure CS101 assignments were turned on paper, in addition to email.
And the department offered many options for lab time, office hours, and tutoring. I worked as an undergraduate TA for 2.5 years, which basically meant holding lab hours 3-4 times/week for 2-3 hours at a time, in addition to grading assignments and exams.
I also started a CS program in '95, with practically no previous programming experience. (10 PRINT "HENRIK IS THE BEST", 20 GOTO 10 doesn't count)
One thing our university did though was that the introduction course was in Scheme, which evened the playing field immensely, because most of the kids who could program were self-taught in Pascal or C, and where pretty stumped when confronted with a functional programming language.
But my university's approach didn't help the abysmal graduation numbers either, there were so many classmates that dropped out during the first year. A bunch dropped out because the programme was an engineering programme, and they failed the math parts, but did good on the CS parts. Most of those switched to other programmes that were more pure CS and were successful.
But there were a lot of students who just lacked that elusive thing that makes a person a good programmer. There's been a lot of studies, and lot of previous discussions on HN of those studies, but the jury is still out, we have no idea how to effectively screen people for programming ability. The only thing we can do is toss them into an education and see if it sticks. The original article asks:
> Isn’t it reasonable to expect that people with an aptitude for math, physics, and engineering will also have an aptitude for CS?
And the answer is a resounding no.
Funnily enough, this whole thing ties into the problems of recruiting good programmers, another HN staple topic. We can't tell if someone will be a good programmer before an education, and we can't even quickly tell if someone is a good programmer after an education, or even after years of working in the industry! If there was a quick way of identifying good programmers, we wouldn't be in this mess.
Agreed. Apart from understanding logic, complex math is such a small part of development. I would say programming requires the overlap of knack for math and a pure creative interest like painting. That's much, much rarer.
During the dot boom, there were plenty of CS grads, but after the dot bomb and the market dried up, people lost interest. Also, the pay and incentives aren't nearly as good as they were during the dot boom.
Add off shoring, constantly pushing down wages, and the fact that most US businesses make programming miserable, that's probably most of the big picture.
There are solutions to this problem as well.
JMU and GMU (high quality, but not top-tier, state schools) both offer pure CS degrees, but also a spectrum of multidisciplinary programs in "IT". One of my current summer interns is wrapping up a degree in info security, with a heavy dose of programming. The other intern is a straight-up CS major. Both appear to have the programming chops to join the workforce as typical application developers.
Where would you have them start instead?
Bumble through learning to program without the theory behind any of it?
That seems like a cart-before-the-horse scenario.
Of course, in my experience coming in to a CS degree as a techie didn't actually teach me how to make a living writing code. Most of the useful stuff I had to learn on my own time. The connections I made at school helped, but the value of the actual classes was low.
So perhaps a CS degree isn't intended to teach anything to anyone.
However, in general, the idea that you need to already be a programmer per-college to major in CS is somewhere between wrong-headed and toxic.