Justin Li

Computer Science in the K-12 Curriculum


ACM recently made a statement to the Obama administration about including computer science in the K-12 curriculum. This only caught the attention of Ars Technica, but those interested should read the original statement (pdf), which is only 3 pages long.

The Ars Technica article does not offer to many opinions, but I agree with their opinion that ACM overstated the benefits of computer science. That "computer science also provides an important skill set for students entering any career area" is indeed hyperbolic, and for ACM to put most of the weight of its statement behind that seems to weaken its argument.

Their point stands, however, that much of what exists as "computer science" in the curriculum is actually information technology. There is a big difference between knowing how to use a word processor vs. how to create a word processor. A similar difference can be found if physics taught you that things fall due to gravity (duh!) and not how specifically gravity causes the position of objects to change.

This analogy with science serves a second point: the advantage of teaching computer science is not to "provide an important skill set" for any career, but because it should be part of common sense. Just as high school students should know biology (although evolution is still under debate ;) and physics to explain the world around them, integrated circuits and computers have become ubiquitous to our daily lives. The addition of computer science to the middle/high school curriculum will serve to fill in knowledge about these devices.

Of course, the more abstract objectives of logic and problem solving skills are still present, but would be treated the same way physics classes treat the scientific method.

The problem as I see it is that too many people think computers operate on magic. How computers operate is mysterious and unknowable, and so people lack knowledge of how to overcome computer problems. I don't expect everyone to get the source code and debug programs, but they should know that computers are deterministic.

In fact, although I think programming would be a very good way to learn about computers and problem solving, I think a large part of a high school computer science curriculum need not be about writing code. From a "common sense" perspective, I think it's more important to learn about the progression from logic circuits to computers, then onto operating systems and finally the applications. Just as people can talk about acceleration and velocity without knowing the precise equations, people should also know how computers work in general despite not knowing how to fix these problems.