A colleague that I hadn't seen in awhile asked me, "How's your work going? Why isn't there more computer science in high schools?" I paused for a minute wondering, "Where do I start?"
First, my colleague is right: there is very little computer science in US high schools. Depending on how you count, there are between 24-30K high schools in the US (e.g., do you count K-12 schools, or just 9-12 or 10-12 schools? Private vs. public? Charter?). There are approximately 2K teachers of Advanced Placement Computer Science (AP CS) in the United States, and they are not distributed evenly. The "Running on Empty" report describes how many states have no computer science in their curricula at all. I would estimate that less than 10% of US high schools offer computer science.
So why is that?
- Getting CS into the high school curriculum is hard, because curricula are hard to change. There is no national curriculum in the US -- the Department of Education is prohibited from ever establishing a national curriculum. Where educational decisions are made varies from state to state. In Georgia, the state defines the curriculum, but that doesn't mean that any district has to offer the defined curriculum. Each district can pick-and-choose which classes they offer. Still, by defining a statewide CS curriculum for Georgia high schools, we created an opportunity to teach CS and got districts to think about it. In Massachusetts, each district can define its own curriculum, so getting CS into the curriculum requires many small battles.
- CS doesn't count for much in high schools. CS isn't part of the Common Core that the US governors are promoting, though there is an organized effort aimed at changing that. Only nine states allow CS classes to count towards high school graduation requirements. It was hard to get AP CS to count towards high school graduation in Georgia, and it keeps un-happening.
- If few states have CS classes, and CS doesn't count towards graduation or core requirements, schools aren't hiring a lot of CS teachers, and there is little demand from teachers to learn CS. We have more capacity to provide professional development in CS than we have teachers interested in taking it.
- CS is battling issues of perception and access. Stuck in the Shallow End tells this story in the Los Angeles Unified School District. Jane Margolis and her colleagues studied three LA high schools and found these awful feedback cycles. They found principals saying that their kids didn't really want CS so there was no reason to offer it. They found kids saying that they weren't really interested in CS -- since they couldn't get access to it.
- Why don't we ask mathematics and science teachers to teach CS? Isn't it easier to teach them CS? Doesn't this get around the problem of having to squeeze another class into the curriculum? In most states, CS is classified in the business department, as a vocational education subject. To involve math and science teachers means that you are crossing departmental boundaries. We would be asking teachers who are certified to teach in core, valued subjects (math and science) to teach a subject (CS) that doesn't count for much and that is based in another department. While we have more capacity for CS professional development than we have prospective high school CS teachers, it's not clear that we have enough capacity to teach all math and science teachers about CS nationwide.
If it helps at all, the US isn't alone in these problems. The UK's Computing at Schools effort is tackling many of the same issues of developing a CS curriculum and helping teachers to learn CS. New Zealand and Denmark have both just launched new national CS curricula and are struggling with issues of professional development. Worldwide, there is growing recognition that we need more computer science in secondary schools. That's an important first step, but making it happen is challenging.