I had a bad experience with my high school computer science classes (both the AP Java curriculum and a teacher-designed curriculum). No one learned anything in that class: You either already had some experience with programming and were thus far beyond the scope of the curriculum, or didn't know anything and were introduced to difficult new ideas by a horribly designed curriculum and ineffectual teacher. `What does "public static void main (String []args)"[1] mean? Why do I have to write all that?` `It's what you put at the start.` `This is stupid, I'm going to play Quake and copy someone's work later.`<p>It was a pointless and discouraging experience all around. The only people who came out of those classes and actually did anything related to technology were already learning on their own in the first place. A neutral effect at best, more likely negative.<p>I'd explain further, but instead of complaining more about my specific experience, I'll just get to the point: the problem is not that the high school compsci curricula are somehow biased against people that aren't white and male, it's that the curricula are totally fucking useless and aren't teaching anyone anything. The only way to do "well" in them is to have preexisting programming knowledge, which just happens to mostly exist in middle class boys privileged enough to own a personal computer.[2] The whiteness and maleness of the kids in these classes is not the problem, it is a <i>symptom</i> of a greater problem.<p>I think to fix the gap, you have to introduce some level of computer science education in elementary school. If you just leave it to kids to discover the magic of computers on their own, it shouldn't be surprising that most kids won't, and the ones with opportunities to use computers at home get a huge head start.<p>The other thing: We need people in "tech" to be selfless and sacrifice their cushy salaries to contribute to education. My teacher barely knew how to program, and couldn't teach worth a damn either. One memorable moment that stunted my growth as a programmer for a while: She actually, I shit you not, told us that all the programming jobs were being offshored to India and that we shouldn't bother. We believed her. If <i>that</i> is the kind of teacher that we have introducing kids to computer science, there is clearly a problem, because just about <i>any</i> CS undergrad could have done a better job. Given enough freedom (that is sadly nowhere to be found in our bureaucratic education system), they could easily design a curriculum that goes far further than the AP curriculum while being more approachable and more exciting. Here's a start: Ditch Java for Python, Lua, or even (barf) Javascript. Here's another idea that can start as early as elementary school: Give kids ~50 megabytes on a web server and teach them to make their own personal static web pages by hand in HTML, Geocities-style. And another: either ditch Windows XP, or configure the systems so that they aren't completely locked down and impossible to do <i>anything</i> on.<p>I think you see my point here: These are ideas that should be totally obvious to anyone who cares about education and has basic programming experience, that could make a big difference with very little effort, yet no one is doing anything like them at all. This suggests that there are systemic problems that will not be easy to correct: the early education system is hopelessly bureaucratic, the tech industry has no voice in it, that smart programmers aren't altruistic enough to give up relatively large salaries to work for education...<p>If I seem bitter about this, it's because I am. My education system (and I suspect many others) only focused on improving the racial divide, barely making any effort to improve curricula, hire better teachers, or think outside of the box in any way, to the detriment of <i>everyone.</i><p>[1] I don't speak Java, did I get that right?<p>[2] It's not just about middle class privilege, though: When I was in school, I think it was actually more common for girls to have personal laptops than boys, probably because parents believe that "if you give a boy a computer, he'll just look at porn all day." Yet still there were very few girls truly interested in computers or taking the computer science classes.