Last week a long list of distinguished technology, business and government leaders published a letter urging support for a new program in NYC called "Computer Science For All" (#CS4All).
This program, and programs like it, are critically important to our national competitiveness, and the future of today and tomorrow's students. Can you imagine a successful, future career path that can be navigated without a basic level of computational knowledge? It gets harder and harder to do imagine day. On the other end of the spectrum, big, life-changing opportunities open up daily for those that have truly mastered some aspect or application of computers.
Since this announcement I've caught myself thinking about the program on a daily basis. While the program's leadership wishes I was thinking about how to help, I got stuck on a more mundane issue:
Is "computer science" the right phrase for this program?
At this point you might be thinking "Dave, don't be a shmuck, it's just a name, so leave it alone", but I think there are two important reasons to have a serious discussion about this question.
What do we want students to learn?
I suspect I'm not alone when I say that the phrase "computer science" evokes images of things like computer language design, compiler optimizations, algorithm efficiency, artificial intelligence and cache-coherent multiprocessor architecture. And I can say with certainty that these aren't the things that #CS4All has in mind for kids.
One explanation is that the meaning of the phrase has evolved, and it just means "anything to do with computers". That would be fine with me, but I'm not sure that's really happened. Or maybe its a projection of a serious science down to an age-appropriate scale, such Physical Science in elementary school, which would also be reasonable.
But neither of these explanations get to the point of what we'd like these students to learn. Do we want them to be comfortable with the guts of computers, or just confident computer users? Is it OK if they never learn a formal programming language before college? Do we have a preference for whether they control a robot, create a dynamic presentation, graph a science dataset or play with the color spectrum of a digital photo? If a student is a wizard with iOS but can't find their way around Windows a success, or a failure?
The answers to these questions are not at all obvious, but it is also not clear who is in a good position to answer them. Given that we're looking to prepare students for the use of computation throughout our economy and daily lives, the two obvious groups, educators and computer scientists, don't seem to have any more or less insight than any number of other groups.
Summary: We can call this whatever we want, but I'm not sure we know what we want students to learn.
How should we market to students?
While the last question was poked at some deeper issues, this one is more straightforward: the fraction of people who are motivated by the idea of learning "computer science" is miniscule. Worse, the only people who would find the concept appealing are the types who'd disappear into their room and teach themselves, so we don't need to market to them anyway. (Note: "computer literacy" may be even worse, so don't go there).
The saving grace is that, in my experience, kids naturally want to interact with computer programs and the Internet, that just makes the lack of an appealing name even more lame.
Here's my modest proposal if we can't come up with something better: "Computing For All". But I'm not good at this stuff, and I hope someone can do better.