Thoughts on diversity

Yesterday, my buddy Stan pointed me to this article: "To address tech’s diversity woes, start with the vanishing Comp Sci classroom"

It gives a reasonable overview of the gender issues in computer science education. The article talks about the drop in popularity of the old Advanced Placement AB course and its eventually being dropped as well as thoughts on how the current A course is pretty dry.

It made me think about the old vs new exams. The current APCS A exam is roughly analogous to a typical college 101 course: programming in one language and one paradigm. The old AB class represented a 101 and a 102 with the 102 being data structures and algorithms. Much more interesting for both guys and girls. Over the years, the AP A exam has become more and more vocational, at least in my opinion, and that makes matters worse. Its more and more about using the language and built in collections and less about thinking and problem solving. What's fun about that?

Of course, we teach our version, a super-set, of the AB curriculum over the course of a school year.

Interesting that even though we teach that old school hardcore CS, we far exceed the national numbers in terms of gender balance, but more on that later.

One of the big things going on right now is the AP CS Principles course. There's some good stuff in there but I've got a lot of questions.

To start, I'm tired of hearing that it's a college level course. If a course is designed so that a 10th grader can be successful, it's not college level. I do understand that it's being taught in places like Berekely (and as an aside I both like and greatly respect Dan Garcia, who's the architect of one version of CS principles - the Beauty and Joy of Computing, and his work). If my kids were doing in college what they could have been doing in 10th grade, something's wrong. That's not to say that you can't have a similar course at both levels, just that there's a huge difference between a 10th grader and a college freshman.

I also take issue with the drag and drop languages in high school and beyond. True, there's a low cost of entry, but then it's limiting in oh so many ways. Much slower than a keyboard interface, limited screen real estate, and no clear exit to traditional textual programming. Scratch and the like are probably good for younger kids, but I've had to rescue many a kid from the damage done by drag and drop. I'm not advocating starting a high schooler in Haskell with Vim but there are plenty of tools that are both accessible, easy entry, fun, but at the same time real.

We also see the proliferation of all girl after school programs. I don't have any problem with this per se. I think we need some all girls and some co-ed. In fact, one of the young ladies in our summer program commented on how much she liked the fact that we weren't all girls but we created a wonderful environment where everyone felt comfortable and supported.

Some of those programs do great things in terms of exposing girls to role models and to what's possible. My issue is with the actual education, notably because these programs invariably don't have real educator/computer scientists running the show. They teach a watered down CS or conversely too much too quickly and then the girls are clobbered at the next level, they start doubting themselves and they change majors.

The problems with these after school programs as well as with CS Principles are the same. A few of my students who studied CS at Harvard framed it nicely when talking about Harvard's highly publicized CS50 course (I'm paraphrasing and combining thoughts here):

They don't really teach anything, you've got to do it mostly on your own. In the end you don't really learn anything.

Then, they go on to Harvard's next real CS class - functional programming with no real preparation and they drop like flies.

So, what do you do?

You do what we did.

I developed an intro course over 10 years ago. The new AP Principles course has some overlap in terms of concepts but one big difference is that we dive into programming using two real languages. Scheme, which is mathy functional and NetLogo which is visual and interactive but still text based. We then move on to a number of really neat concepts in Python.

People say, "Oh, you do the NetLogo because it's visual and appeals to girls." No - we do NetLogo because it's cool and it appeals to kids. Same with Scheme. Show me a girl that loves the visual stuff, I'll show you a girl that loves Scheme's functional goodness. I might only be a dopey old school teacher, but I really believe "kids are kids."

On top of this, you get great teachers that really know their stuff (and we've built plenty of them over the years) and create a culture with everyone's accepted and good things happen.

By the time our kids leave us, they've got enough under their belts so they not only know their stuff but they have the confidence that they know their stuff.

How does it work for us? Nationally, about 19% of APCS test takers are women. At Stuy, we hover around 30%. My Software Development, Post AP classes are also around 30% so we keep them. Oh, and Stuy is only 40% female and we do much worse than the national averages in other traditionally male dominated fields such as physics.

Yesterday, I was talking to one of our CSTUY hackers as we ended the day. We were talking about possible directions to go in after the new year. We could stay graphical, go to text processing, look at some hardcore algorithms and more. I asked Aruna what she thought. Her answer: "It's all fun."