Computer science is not widely taught, even though programming may be one of the most important skills of the 21st century. While most schools do recognize the importance of helping students learn how to use new technologies, you’ll still find scant opportunities in K-12 classes for students to learn how to actually build those very technologies.

A report issued last year by the Association of Computing Machinery found that very few states offer K-12 computer science education at all. Just nine states allow CS courses to count towards graduation requirements for math or science. And no states require computer science for graduation.

Why the absence of CS courses from elementary and secondary schools? A recent article in Technology Horizons Journal points to a few obstacles to teaching computer science: questions about teacher certification, debates about what a CS curriculum should contain, and concerns about where CS fits into the curriculum and/or the schedule. Is computer science math? Is it science? Does it replace another course?

There are, no doubt, increasing opportunities for kids to learn programming. But these often occur as after-school projects (things like the First Lego League) or as self-directed programs (such as learning to code with online materials like Hackety Hack). While these do attract those students who are interested in programming, they do little to expose the general student population to computer science.

Studies have repeatedly shown that early exposure to science, technology, engineering and math (STEM) subjects is important in convincing students to think about STEM careers. Earlier this year, Microsoft surveyed some 500 college students pursuing STEM degrees, and nearly four out of five of them said they had made the decision to be a STEM major in high school or earlier. One in five said they made the decision in middle school or earlier. These students pointed to the influence of a particular teacher or a particular class as sparking their interest — notably, almost 70% of girls said this was what made them decide to study STEM (versus just 51% of boys).

But just one in five of these college students said that their K-12 education helped prepare them extremely well for their college courses. While that can be interpreted as a challenge to the state of STEM education broadly, this is particularly true when it comes to computer science. There are plenty of opportunities for students to take biology before stepping into a Biology 101 class in college; there are very few opportunities for students to take programming before stepping into CS 101.

“Program or be programmed,” as author Douglas Rushkoff says, noting that we must learn how to be producers not just consumers of computer technology.

But teaching computer science isn’t simply about learning to program. It’s about computational thinking, logic, reasoning, and problem solving too. These skills are imperative to what K-12 students should be learning. The challenge: finding the support among administrators and teachers to make learning computer science the way in which students gain these skills.

Should Computer Science Be Required in K-12? 15 December,2011Audrey Watters

  • Computers are tools.  Computer science makes as much sense as drill science or chain saw science.  Obviously the term computer science could not be invented until 1945.   It is a creation of our educational system.  To stimulate STEM give grade school kids REAL SCIENCE fiction.  Not Hyperion or Hitch Hikers Guide to the galaxy.


    Omnilingual  by Henry Beam Piper

    All Day September  by Roger Kuykendall

    The Fourth R by George O. Smith

    • Yes, computer science is a bit of a problem as a name. In Europe, CS is actually called Informatics.  And computational machines (precursors to computers) existed as early as the late 19th century. Astronomy is not called telescope science, but we’d still have the concept of the study of space without telescopes.  Algorithms are something that can be taught without computers.  Perhaps the science of computing would be better. It’s actually a very broad field that includes the study of information, the study of what you can and can’t compute (there are things that can’t be computed).  Programs can be proven in a similar way to a mathematical equation.  You can study human-computer interfaces, which touches on human psychology as well as figuring out what a computer can or can’t do.  Artificial intelligence delves into how the human brain works and the nature of intelligence itself, which we might not explore in the same way without computing.  

      Computer Science, the name, may not make sense, but there’s a lot of computer science study you can do without computers.  The machines are not necessary to study the theory.  Go read some Alan Turing if you don’t believe me.

      • Why not just teach physics and incorporate mathematics and computer science into that.  Write computer programs to do the math for the physics.  LOL  Like put 110 masses floating in the air and use the conservation of momentum to compute how fast the top 15 can force the rest down.  Then vary the distribution of mass.  12 seconds minimum.

        • Bfoitguy

          that’s my opinion as well… computer science and programming-as-a-tool can be brought into most of the existing classes we have today… the concrete applications/simulations available are wonderful, but you do need a technology teacher to assist the subject teachers, at least in this point in time…

  • Computer science courses became popular in the late 1970’s when schools started to purchase early personal computers. At the time there was little software available so if you wanted your computer to do something you had to write some code. As time went by and computers could do more and more, programming became less necessary until we got to the point where computer science courses disappeared from a lot of high schools. Forward looking schools should give credit for online programming courses. This is one type of course well suited for online, self-paced instruction. in 1976 I created and taught my school’s first computer science course. This allowed me to become a district computer director and ultimately a principal. Now I write HTML code for my blog at DrDougGreen.Com. Being able to program is valuable. Thanks for this post and keep up the good work. 

  • That sort of feels like a trick question.  I want to say yes, but if required means a whole new set of standardized tests for CS, then no, because that’s another can of worms.  There are real issues that can be addressed through CS education like equity, job preparedness and national competitiveness.  The digital divide is more complex than ever, referring not only to those that do not have access to technology, but also encompassing a paradigm shift from technology literacy (competent users of technology tools) to fluency (capable creators of technology tools).  Understanding how technology works is key. 

  • Justin Halls

    Thats like saying that because everyone drives a car then they must all be trained as car mechanic – and hey Ive got a washing machine, so schools should be teaching washing machine repair skills, and I live in ahouse so they absolutely must teach brick-laying or framing.
    Code jockeys are specialised professionals and learning those skills should be developed at degree level, like engineering design or theoretical physics – yes maybe give them some idea of what goes on in a program, but actual coding, no way.

    • Fábio

      What you’re saying is complete nonsense. Like the author already mentioned:

      “But teaching computer science isn’t simply about learning to program.
      It’s about computational thinking, logic, reasoning, and problem solving

      Learning computer science skills are very important to developing logical thinking and problem solving skills. It helps develop brain skills that are applicable to too many areas to describe here. If teaching coding, even in pseudo-language or languages target at kids, helps training the kids brains, it’s very valid. Your too fast do dismiss this possibility.

  • DZ Guest

    We could replace useless foreign language courses with computer language courses.

    • Jerry

      You wrote “We could replace useless foreign language courses with computer language courses”.
      This reminds me of the joke:
      Q: What do you call a person who can speak three languages?
      A: Trilingual
      Q: What do you call a person who can speak two languages?
      A: Bilingual
      Q: What do you call a person who can speak one language?
      A: Gringo
      Told to me by a Mexican who spoke very good American English
      You not only learn a language, you get to know a new culture and new people. I speak as a Englishman, enjoying living in Germany and speaking German fluently.
      Don’t be so insular!
      Best wishes, Jerry

  • Wil_paulk

    A better name is computational science. CS is the study of the theoretical foundations of information and computation. So CS is not exactly synonymous with programming. If anything programming is simply a tool that is used in CS. Like a Bunsen burner to a chemist. This comment from another article I read sums it up pretty well.
    “I have a CS degree and they were never meant to teach you to program. They teach you about complexity and theory. Electrical Engineers on the other hand are taught programming. Hire EE grads to code and CS people to run your processes.” 
    Also, CS is a mathematical discipline so in a way schools are teaching CS skills in their math program. I do agree that it would be a good idea to offer classes that teach programming but as an elective not as a core requirement.

    • Anonymous

      “So CS is not exactly synonymous with programming”

      Thanks for saying it! It’s a small misunderstanding, but it is distracting.

      By all means, work computer skills into the curriculum, and by all means offer an elective to kids who want to take a programming course as early as possible, and by all means, sneak at least a lesson or two into required coursework that makes kids write a simple Ruby (for example) program, just so they know what “programming” is.

      • Peter

        A summer elective would be fine. The main educational path should be fundamental subjects, not job skills. As a senior research engineer specializing in computational science for industrial application, it is the fundamental subjects that help me the most. From what I have seen, very little that feeds solutions to difficult techical problems has to do with computers and “programming”.

  • crf

    Our kids learn Matlab as part of their physics classes in their junior and senior years. It’s pretty clear that the ones with aptitude for algorithms and logic just excel in this area and the others just give up and copy their neighbor’s code to finish the project. Some “get it” and others don’t just like in most subjects.

  • Ddd

    I don’t mind – more job security.

  • jow

    Wasn’t there a quote from Byte in the early ’80’s that said “Knowing how to  computer program is like knowing how to read and write in the 1500’s”?  

  • John

    Should it be required? Absolutely not. You’d be better off requiring everyone to take automotive shop – at least everyone’s car would work better.

  • sleipner

    Though CS can be useful I think it’s far more vital that people learn how to use spreadsheets – almost every business job these days use them extensively, and many other jobs at least use them occasionally.

  • DanDan316

    Leave us the alchemical illuminati to the uninitiated masses; let students continue to think that varsity football players are important, ensuring the holy echelons of our priesthood will one day dominate world decision-making.

  • Ideal4642

    I say we make teaching them how to read and write the first priority. 

    • Learning to program is learning how to read and write. Whether English or Java, both are about understanding syntax and how language works. People who learn music tend to be better at math because music is another way of calculating. People who learn programming languages tend to do better at reading and writing because it another way of expressing ideas.

      • Tgscomputera

        YES! YES! YES! Ezra.  I get so sick of hearing the argument you replied to…

  • Jack_simmons

    There is a huge difference between job training and education. It is easy to put computers into classrooms. Education is hard. The “education” industry has convinced us to go with what is easy.

  • Dpmccain

    What many people miss is the fact that teaching a particular skill as a discipline does not need to be exclusive of all else.  When teaching figurative language, I would bring in phrases used in different environments.  What is Azure to someone in the world of technology would be different than that of someone teaching painting. 

    It is possible to work across the disciplines and introduce students to problem solving,  critical thinking, logic, language, etc, but it takes an instructor who is willing to work beyond the text and worksheet, and students, (and parents/guardians) willing to learn as well. 

    There is more to technology than allowing students to blog  with their teacher, or “play” with the computers, and if more teachers (K-12) were williing to teach beyond the district matrix, our students would be prepared for the competitive global workforce, whatever their chosen vocation. 

  • Writing code is a minor part of the landscape – what matters is the ability to manipulate data, extract information and understand how that information should impact our decision making processes. I think the right thing to do is to establish a broadly interpreted information science curriculum as the basis of what is taught in K12. Like it or not everything else from literature to astronomy is a drill-down from there. I am glad that computer science hasn’t been taken on by the schools, it shouldn’t be as it inevitably turns into either Java, ios, Office and other parochial junk or the computational characteristics of a bubble sort – either way it’s a waste of most people’s time.

  • Sheena

    Computer Science should be required in K-12. It teaches our students to be creators of technology and not just passive consumers. It  teaches computational thinking and a way to understand how we really learn. The problem is in the branding  – Computer Science is not an accepted field in K-12 education.  We may need to rename Computer Science in schools or place it under a STEM program. In the Los Altos School District in California for example, every 6th grader is learning some Computer Science as part of a STEM class. 

  • James Gill

    As a former elementary teacher and father of 3, I know that kids like it when they make stuff happen.  Boys and girls alike enjoy making something move, or making things happen.  I am thinking of my experiences with Scratch.  When my students learned how to “program” their characters to do stuff on the screen (move, turn, change costumes) they feel a sense of empowerment.  Even when things don’t go according to plan, most kids didn’t react with frustration or anger.  They looked at their code and said, “hmmm that’s interesting.  Why did the character do X when I was expecting it to do Y.”  I would like to promote this kind of thinking and attitudes towards problem solving.

  • How about teaching them karnaugh mapping, finite state machines, mvp, petrinets too, besides boolean algebra.
    Oh yes, some parents are complaining they don’t have enough of history and international geography causing them to be “socially illiterate”. And then some teachers want to teach them nettiquette. Another thing, their math and science skills are dropping and their English language too. Some parents want schools to teach a 3rd language. How about mixing religion and creationism like some kooky school boards in some banana republic states (like Kansas).

    Yes, let’s pile it up on our school children.

  • Allowing students to acquire skills in computer science across K-12 is a worthy proposition. 

    DZ Guest’s comment regarding the discarding of “useless foreign languages” is sad and truly pitiful. Learning C++, for example, is not unlike learning a foreign language. I wouldn’t be surprised if knowledge of a second or third language would probably make you a better computational scientist for a variety of cognitive reasons.

    Along with computer science students should also be taught art, music and design from K-12. When many students reach the 7th or so year of their schooling much is lost in terms of art and music.

    Design, and particularly human-computer interface design should be part of any computer science course K-12.

    Finally, coming from dual backgrounds in humanities and technology life has taught me that technology’s impact on our lives needs to be measured. Those same students need to be taught how to switch off, be mindful and simply be human beings.

  • Dante

    I see a lot of misunderstanding here in the comments. Programming is akin to using a foreign language to make computers do things, with some math problems thrown in, depending on the task. It’s a wonderful cross-disciplinary subject that teaches creative problem solving (there are many ways to skin a cat or hack something). It’s absolutely ideal for kids and can be as abstract or as job-oriented as we make it.

  • Anonymous

    Might be worth checking out the work Raspberry Pi (www.raspberrypi.org) are doing in the UK to tackle the same question.  A small cheap ($25) computer that plugs in to a TV so the kids can own and do what every they want with it without the concern of breaking the school or family computer.
    There are very active discussion on their forum teaching computational thinking in schools as well.

  • I think the bigger question should be why we require taking separate academic classes. Why do Carnegie Units and factory mode seat time still prevail? I think all children are interested in learning to control their digital devices. But, as long as students are controlled in what they are required to learn, I doubt we will solve the problem.

    I think all teachers should give kids the opportunity to learn computer science, and this should start in elementary school. Writing mobile apps is one of the new Texas HS courses. But, unless students are prepared for this logical thinking rigor, they will avoid the hard. Spatial skills need to be built in ES by taking kids from the 2-D world to the 3-D real world through what is called computer science unplugged. How about a Lego Future City Course? CS is not about the computer; it is about invention, creative thinking, and computational thinking.

    Yes, require CS K-12 as it is the perfect field to integrate reading, writing and arithmetic through science and engineering. The UK has eliminated required IT curriculum and replaced it with CS Education. This was requested by the labor market. US??? When are you going to get the big picture?

Sponsored by

Become a KQED sponsor