Why everyone should learn computer science
Dec 9, 2011 · 4 minute read · Commentscomputer scienceprogrammingeducationCSEdWeek
On Sunday I wrote an introductory blog post for Computer Science Education Week (CSEDWeek) in which I posed some questions to follow up on.
Today I’m going to begin exploring my central thesis that has been brewing in my mind in the past couple of years, which is that everyone should learn computer science.
I mean everyone. And I mean computer science.
How can I dare much such a strong claim?
What I am not saying
First, let me get out of the way what I am not stating.
I am not stating that the United States should encourage more college students to enter computer science “because” we have high-tech jobs we want to fill with Americans.
I am not stating that computing careers are high-paying and desirable and we should be recruiting K-12 students into them.
I am not stating that K-12 schools should be filled with computers and that all teachers should start using “educational” software in their classrooms.
I am not stating that babies and toddlers need to get a head start in life with iPads and learning to type on computer keyboards.
I am not stating that everyone should learn how to use Microsoft Office in school.
I am not stating that people should be “computer literate” in the sense of knowing what a USB port is and how many bytes there are in a terabyte and how to maximize a window.
What I am saying
By “everyone”, I mean everyone, not just college-bound students or those who are babies and toddlers now.
By “learn computer science”, I mean learn enough about computation to be able to write and run simple programs to do a desired task, to have an idea of what more complicated programs do, to be informed about what is fundamentally going on when using a web browser, sending email, posting information on Facebook, doing a Google search, being infected with a virus, etc.
Why I am saying it
My claim: we are living in a time of human societal change unparalleled since Gutenberg invented the printing press in the 15th century and people began to be able to write, read, and share information as individuals and as institutions.
A corollary: within around two decades, anyone who does not know the fundamentals of computer science will lack important understanding about the world, how it operates, and how they can take control of their lives (as opposed to cede all control to institutions such as governments and corporations).
The best analogy I can come up with is this: if you live in a developed nation such as the United States today, and you do not know how to read or write, you are missing a huge amount of information and knowledge that is spread around, and furthermore, you are lacking in personal autonomy and power. Being illiterate, you are very dependent on others to get through life. Similarly, if you do not know basic arithmetic, you are very dependent on others.
A corollary: computer science education should soon be considered a basic requirement, in the same sense that reading, writing, arithmetic are. It is a non-starter to treat computer science education as some kind of optional subject, one meant for only a few select students. Computer science is not like physics or English literature. People do not need to know about quantum mechanics or Shakespeare in order to have a decent understanding of everyday life, but computation is everywhere now.
How to bring computer science education to everyone?
I don’t have the answer yet to the question of how to bring computer science education to everyone. But I think the first step is to actually agree that this goal is important. The second step is to agree on what it is that people really need to know. The third step is to determine the best ways of teaching that.
Conclusion
Humanity is at a crossroads. The ubiquity of computing technology points towards two possible futures: one is a brave new world in which technology is controlled by an elite and the masses are distracted and docile consumers, and the other is a liberated world in which everyone is potentially a creator, a programmer, a critical thinker. Which world do you want to live in?