All children should learn to program, not because it may lead to a job, but because it is a new liberal art and grants young people agency over an increasingly and technologically sophisticated world. At a time of rising authoritarianism and science denialism, it seems prudent to provide kids with experiences that develop a systematic way of making sense of the world. It may literally be the least we can do.

click to enlarge

Current approaches to teaching computing to kids suffer from the traditional failures of curriculum development and too often fall prey to the following desires:

  • vocabulary acquisition
  • a condescending view of teacher competence
  • convenience
  • frugality
  • ignorance of the intellectual euphoria associated with bending a computer to your will
  • offering students an illusion of agency without actual power
  • speed

The calls for “CS for All” are right out of the timeless schooling playbook; require a new subject without a requisite investment of funds or imagination and reduce it the sort of lifeless content devoid of experience that is easily tested. For extra credit, “demonstrate” that some students just don’t have a facility for the subject. A bell curve would be swell, but the real goal is for the “new subject” to fail with only children and their teachers to blame.

Scope & sequence from Microsoft’s CS curriculum for the micro:bit. https://makecode.microbit.org/courses/csintro

There is no better way to explain the quality of computer science curricula being developed for school use. Much of this curriculum is designed by interns or the very same educators who presided over the death of interest in CS. In many cases, the curriculum focuses on isolated topics, rather than on doing. What can a student do with the information being taught? Fluency is the goal!

(IMHO) Computer programming is not a means to demonstrate understanding of computer science jargon or even a technical act. At its best, computer programming a form of composition – like writing, music composition, painting, sculpting, or dancing. A handful of carefully designed assignments does not make one a computer programmer any more than it produces authors, musicians, or artists.

Computer programming mediates a conversation between the person and herself. Skills and habits of mind emerge from acts of creation, development, and debugging. One might think about this in terms of the purest forms of project-based learning where the project is a teacher’s smallest unit of concern and students are free to lose themselves in the process of realizing something that matters to them.

Great expertise is developed by identifying things that bother you, a laser-like focus on overcoming that obstacle, and the emergence of a new thing that bothers to you as you approach your temporary goal. This phenomena maps perfectly to the process of programming and debugging. It also matches a young person’s remarkable capacity for intensity while mirroring the writing process and other forms of composition.

Show kids a primitive or two and see what they can do with it. The genius of “Logo family” languages, like MicroWorlds, Lynx, Scratch, Snap!, TurtleStitch, Beetleblocks,  Turtle Art, or perhaps even MakeCode is that seemingly infinite world of complexity can be realized with a handful of commands or blocks. With forward and right, you can draw anything in the universe. New commands, reporters, variables, conditionals, and control structures may be introduced to students as they need them. Programming elegance results from constraints or experience. Since microcomputers are no longer limited to 4K of RAM, “efficient” code becomes less of a necessity and more of an aesthetic quality that develops over time.Allowing kids to program in their own voice allows them to concretize abstractions and solve problems while developing programming prowess.

The Piagetian adage, “knowledge is a consequence of experience,” is certainly true for programming. The more you program and the longer you stare at the screen of what you are programming, the better you will become at it. Schools that “or a little bit of Scratch” or celebrate “Hour of Code” trivialize the power of programming. Engaging in the false complexity associated with teaching a new programming language every year (or faster) is also likely to deprive students of the exhilarating feelings that result from your program meeting or exceeding your expectations. Programming should be like learning to write, compose, make cinema, dance, etc…

Above all else, quality work takes time. What’s your hurry?

PS: Computer programming requires computers.

• • •

Veteran educator Dr. Gary Stager is co-author of Invent To Learn — Making, Tinkering, and Engineering in the Classroomand the founder of the Constructing Modern Knowledgesummer institute. He led professional development in the world’s first 1:1 laptop schools and designed one of the oldest online graduate school programs. Learn more about Gary here.


Get started learning to program by programming at Constructing Modern Knowledge 2020!

Last year, my friends at Intel invited me to participate in a breakfast summit at the Museum of Contemporary Art overlooking the Sydney Opera House. The other invited guests seated around the table represented captains of industry, distinguished academics, and leaders of assorted acronyms. We each had 2-3 minutes to solve the problems with school, 21st Century skills, S.T.E.M, S.T.E.A.M. girls and technology, economic development, Coding in the classroom, teacher education, and a host of other challenges that normally require 5-6 minutes of breathless rhetoric or clever slogans.

I had the luxury of speaking last. I began by saying, “The first thing we need to do is find a cure for amnesia.” Those armed with “solutions” or prescriptions for “reforming” education do not lack for chutzpah. A sense of perspective and awareness of history are their greatest deficits.

I once heard President Clinton tell the National School Boards Association, “Every problem in education has been solved somewhere before.” We do indeed stand on the shoulders of giants, but Silicon Valley smart-alecks and the politicians they employ behave as if “history begins with me.”

During the Intel breakfast I pointed out a few historic facts:

  1. 1:1 computing began at a girls school in Australia a quarter century ago for the express purpose of reinventing education by programming across the curriculum and that work led to perhaps a few hundred thousand Australian children and their teachers learning to program (“coding”). For those scoring at home. That one statement ticks the boxes for 1) personal computing in education; 2) programming across the curriculum; 3) girls and technology; 4) success in building teacher capacity; 5) evidence of successful (at least temporary) school reinvention; 5) appealing to hometown pride.
  2. None of the expressed goals were possible without abandoning the heavy-handed medieval practices of national curricula, terminal exams, ranking, sorting, and inequity that are cornerstones of Australian education. Progressive education is a basic condition for achieving any of the desires shared by my esteemed colleagues.
  3. There are many examples of people who have not only shared similar concerns throughout history, but who have overcome the seemingly insurmountable hurdles. We have even demonstrated the competence and curiosity of teachers. For example, my friend Dan Watt sold more than 100,000 copies of a book titled, “Learning with Logo,” circa 1986. Let’s say that 10% of the teachers who bought such a book taught kids to program, that’s still a much bigger impact than “Hour of Code.” (Of course there were dozens of other books about how to teach children to program thirty years ago.)
  4. Perhaps the reason why so few students are taking “advanced” high school math courses is because the courses are awful, irrelevant, and toxic.
  5. If it is truly a matter of national security that more children enroll in “advanced” science and math courses, it seems curious that such courses are optional. Perhaps that is because we are quite comfortable with a system that creates winners and losers.
  6. I have been teaching computer science to children for thirty-four years professionally and forty years if you count my years as a kid teaching my peers to program.

The other day, President Obama announced $4 billion dollars available to teach computer science/coding and mathematics (now that’s a novel idea) for the vulgar purpose of creating “job-ready” students. Never mind the fact that there remains no consensus on what computer science is or how such lofty goals will be achieved, especially by a lame duck President. If history is any guide and if the promised funds are ever appropriated, this seemingly large investment will disappear into the pockets of charlatans, hucksters, and a proliferation of “non-profits” each suckling on the government teat. (See eRate)

To make matters worse, one of our nation’s leading experts on computer science education reports that the national effort to design a K-12 Computer Science Framework has is focused on consensus.

“The goal is to create a framework that most people can agree on.  “Coherence” (i.e., “community buy-in”) was the top quality of a framework in Michael Lach’s advice to the CS Ed community (that I described here). As Cameron Wilson put it in his Facebook post about the effort, “the K-12 CS Framework is an effort to unite the community in describing what computer science every K-12 student should learn.”  It’s about uniting the community.  That’s the whole reason this process is happening.  The states want to know that they’re teaching things that are worthwhile.  Teacher certificates will get defined only what the definers know what the teachers have to teach. The curriculum developers want to know what they should be developing for.  A common framework means that you get economies of scale (e.g., a curriculum that matches the framework can be used in lots of places).

The result is that the framework is not about vision, not about what learners will need to know in the future.  Instead, it’s about the subset of CS that most people can agree to.  It’s not the best practice (because not everyone is going to agree on “best”), or the latest from research (because not everybody’s going to agree with research results).  It’s going to be a safe list.

…That’s the nature of frameworks.  It’s about consensus, not about vision. [emphasis mine]  That’s not a bad thing, but we should know it for what it is. We can use frameworks to build momentum, infrastructure, and community. We can’t let frameworks limit our vision of what computing education should be.  As soon as we’re done with one set of frameworks and standards, we should start on the next ones, in order to move the community to a new set of norms. Guzdial, M. (2016) Developing a Framework to Define K-12 CS Ed: It’s about consensus not vision.

That’s right, mountains of money and human capital will be expended to determine the status quo. Consultants will be enriched while school children are treated to “coding” curricula so good that you don’t even need a computer! Powerful ideas are viewed as distractions and vision may be addressed at indeterminate date in the future.

“The future must be dreamed, desired, loved, created. It must be plucked from the soul of the present generations with all the gold gathered in the past, with all the vehement yearning to create the great works of individuals and nations.” – Omar Dengo

From Melbourne to Massachusetts to the UK, large scale state and national edicts to teach “coding” or “computer science” K-12 has resulted in laundry lists of unrelated nonsense, full of “off-computer” programming activities, keyboarding instruction, file saving, posture lessons, digital citizenship, identification of algorithms, counting in binary, bit, byte, and vocabulary acquisition. In more than one jurisdiction, the computer science curricula is touted as “not even needing a computer!”

There is far too little discussion of programming a liberal art – a way of having agency over an increasingly complex and technologically sophisticated world. There is no discussion of Seymour Papert’s forty-eight year-old question, “Does the computer program the child or the child program the computer?”

There is no talk about changing schooling to accommodate powerful ideas or even add programming to the mathematics curriculum as my Wayne, NJ public schools did forty years ago. Instead, we’re renaming things and chanting slogans.

Frequent readers of my work might be surprised that I only include one mention of Seymour Papert in this article. Instead, I end with the words of another old friend of mine, Arthur Luehrmann. Arthur coined the term computer literacy. After three decades of his term being segregated to justify the most pedestrian of computer use (Google Apps, IWBs, online testing, looking up answers to questions you don’t care about, etc…), it is worth remembering what he meant when he invented the term, computer literacy. The following is from a 1984 book chapter, Computer Literacy: The What, Why, and How.

“A few years ago there was a lot of confusion about what computer literacy meant. Some people were arguing that a person could become computer literate merely by reading books or watching movies or hear- ing lectures about computers. That viewpoint probably came out of a time when computer equipment was expensive and, therefore, not often found in classrooms. Teachers had to teach something, so they taught “facts” about computers: their history, social impact, effect on jobs, and so forth. But such topics are more properly called “computer awareness,” I believe.

Even the fact that a school or district possesses one or more com- puters must not be taken as evidence that education in computer literacy is taking place. Many schools use computers for attendance and grade reporting, for example. These administrative uses may improve the cost- effectiveness of school operations, but they teach children nothing at all about computers.

Other schools may be using computers solely to run programs that drill their students on math facts, spelling, or grammar. In this kind of use, often called Computer-Assisted Instruction, or CAI, the computer prints questions on the display screen, and the student responds by typing answers on the keyboard. Except for rudimentary typing skills and when to press the RETURN key, the student doesn’t learn how to do anything with the computer, though. Here again, a mere count of computers doesn’t tell anything about what students may be learning.

A third kind of use comes closer to providing computer literacy, but it too falls short. In this mode, the computer, together with one or more programs, is used to provide some kind of illumination of material in a regular, noncomputer course. A social studies teacher, for example, might use The Oregon Trail simulation program to illustrate the difficul- ties pioneers encountered in trekking across the American West. Such an application not only teaches American history, it also shows students that computers can be made to simulate things and events—a powerful notion. Yet neither in this, nor in any of the other educational uses of the computer I have mentioned so far, does a student actually learn to take control of the computer.

Literacy in English or any language means the ability to read and write: that is, to do something with the language. It is not enough to know that any language is composed of words, or to know about the pervasive role of language in society. Language awareness is not enough. Similarly, “literacy” in mathematics suggests the ability to add numbers, to solve equations, and so on: that is, to do something with mathematics. It is not enough to know that numbers are written as sets of digits, or to know that there are vocational and career advantages for people who can do things with mathematics.

Computer literacy must mean the ability to do something constructive with a computer, and not merely a general awareness offacts one is told about computers. A computer literate person can read and write a computer program, can select and operate software written by others, and knows from personal experience the possibilities and limitations of the computer.”

At least educational policy is consistent, we continuously invent that which already exists, each time with diminished expectations.

Thirty two years after Luhrmann published the words above – longer than the lifespan of many current teachers and our national goal is to create job-ready coders? Off! We should be ashamed.

Luhrmann, A. (1984). Computer Literacy: The What, Why, and How. In D. Peterson (Ed.), Intelligent Schoolhouse: Readings on Computers and Learning. Reston, VA: Reston Publishing Company.

This is undoubtedly a first-draft written during a conference overseas.with kid Gary stager_hkis X 200

A response to the plethora of articles spouting hooey similar to this article – Saving Computer Science from Itself

(Regrettably, I will undoubtedly be compelled to write more on this topic in the future. In the meantime, here is my answer to the “should we teach kids to code” argument)

As someone who has taught countless children (from preschool) and their teachers to program across the curriculum for 34 years, I disagree with lots of the arguments in this article. I agree that we have done an awful job of defining CS AND reaching any rational consensus of why it is critical that every child learn computer science.

The larger argument I would like to make is that this is not a matter of opinion.

Programming gives children, every child, agency over an increasingly complex and technologically sophisticated world. Computer science is a legitimate science; perhaps the most significant advancement in science of the past century. It is foundational for all other science. THEREFORE, IT MUST BE TAUGHT AND USED WELL BY EVERY CHILD. Computer science gives kids access to complexity and provides an authentic context for learning the crummy mathematics content we dispense to defensless children.

One might also discuss the terrible (or nonexistent) job we do of teaching ANY science to children (below secondary grades). Oh yeah, add art, instrumental music, civics, mathematics, and history to that list as well.

The difference between Computer Science and all of the other stuff we don’t bother to teach is the vehemence with which nearly two generations of educators have fought to democratize computer science and keep it out of the classroom. There are countless examples of far less relevant and less fun bullshit we fill kids’ school days with.

Furthermore, ISTE cannot be trusted to play any leadership role in this effort. They have disqualified themselves from having any voice in discussions about the future of computing in schools. I signed the ISTE charter, edited their last computer science journal for several years, and have spoken at the last 28 of their conferences. I even co-authored the cover story for the last issue of their magazine, “Learning and Leading with Technology.” However, ISTE’s self-congratulatory pathetic “standards” for educational computing do not contain the word, “programming,” anywhere. There are no powerful ideas they embrace, just some mindless notion of “technology good.”

I’ve written about ISTE before:

Refreshing the ISTE Technology Standards
Senior Editor Gary Stager interviews Don Knezek, CEO of ISTE, on the revised National Educational Technology Standards(NETS). Plus: Stager’s perspective.
Published in the June 2007 issue of District Administration

The ISTE Problem
ISTE’s vague standards and an exclusionary “seal of alignment” make one wonder whose side the group is on.
Published in the February 2003 issue of District Administration

Educational Conference or Boat Show?(2007)

Why not ask the Wolfram brothers or Seymour Papert about the value of children programming? Why are we relying on the “vision” of politicians or tech directors whose primary concerns are about plumbing and getting Math Blaster to run on Chromebooks connected to an interactive whiteboard?

The UK example is exactly NOT what we should be doing. Their curriculum (scope, sequence, content) makes no sense and bares very little resemblance to computer science. Like other “Coding” or ill conceived computer science curricula written by government committee, the UK curriculum doesn’t even need a computer. AND when you make a hierarchical curriculum, IF needs to be in 2nd grade while THEN gets introduced in a subsequent year. The only way you become good at computer science is by revisiting ideas and techniques in lots of projects – just like in any other medium.

Puzzles are not CS. An hour of “code” is not CS. Using Scratch for a few sessions or storyboarding are not CS.

There is no length to which people will not resort to deprive children of learning to program computers.

Oh yeah, the issues of efficacy, equity, etc you mention have been studied for decade. We know what to do.

I could go on….