Friday, August 3, 2012

Teaching computer programming in schools

I've been inspired by Gary Stager's blog on this subject. We are about the same age, and I've written my own story about what I believe on this subject. You can listen to the podcast here:

Here's the text of the podcast...

In 1975, I was in 9th grade in Fargo, North Dakota.

I had to take a one semester elective that winter. Most of the choices sounded dreary to me. Only one sounded tolerable: Computer Programming.

I wasn't sure what to expect, but I figured I'd learn something. In class, the teacher passed out the textbook. We would be writing programs in BASIC. The computer was a mainframe at North Dakota State University, on the other side of town. The teacher showed us the terminal we would all share. It connected to the mainframe using an ordinary telephone handset, as though you were going to have a conversation. You could type, and the computer on the other side of town answered. Cool.

Our teacher advised us to write our programs in a notebook while we waited for access to the terminal. I took the book home and started reading it. And writing programs. And reading the book. And writing more programs. By the weekend, I had written programs for every problem in the book. I begged the teacher for extra time after school let out. I was showing up late for swim practices, and I told my friends I'd fallen in love.

For those of you that have never been smitten by programming, it may be hard to understand. Writing software is a conversation. The computer asks me to clarify if I say something that doesn't make sense. And if the computer does something that doesn't make sense to me, we walk through my code together, the computer detailing what's on its mind, until I understand what's wrong, and fix something. The conversation continues until we're both satisfied.

I don't need to tell you how the world has transformed since 1975. I went on to have several careers, from flying jets to working on Wall Street, and I used my programming skills in every job. Now I'm in school again, learning to be a high school teacher. Yet, despite the ongoing software revolution, most high schools can't offer what I had in 1975.

And I believe that should change. I believe every 9th grader should take a programming course. Here's why:

  • Pedagogically, programming is a very pure exercise in deconstructing a problem, and reconstructing it as a software program.
  • The computer itself is an excellent teacher. Once a student acclimates to the programming environment, the conversation between student and computer begins and flourishes.
  • Research shows the best learning takes place in effective social settings. Programmers interact frequently, often working in pairs.
  • Programming can be applied across the curriculum, as software has touched every discipline.
  • There are legions of programmers, late in their careers, who would love nothing better than to give back by teaching a new generation of programmers.
  • Finally, computers aren't going away. They even talk to us. Shouldn't we be able talk back?


  1. Stager is always provocative, and although I don't always agree with him, he always gets me thinking .. and that post resonated with me, too, for months!

    I, too, started on computers by programming in BASIC (and playing MECC games in version 1.0 like Oregon Trail and Lemonade Stand), and when we think of how programming has been replaced by endless word processing projects, I think we have at least a glimmer of why millions of dollars' worth of tech infusions have not necessarily delivered adequate bang for the buck.

    The world of makerspaces is often occupied by folks who learned to program as you did ... and want to share what they've learned with a new generation. New tools like Arduinos help them -- and students -- rapidly prototype new inventions (though the Raspberry Pi Alex mentioned in class may be a disrupter in this arena, it's too early to tell) by blending kinesthetic, hands-on building and electronics with computer code (Arduino code is a modification of C++). Pretty exciting stuff -- we are just at the beginning, over in my home department, of putting together some of these learning-by-coding activities with middle schoolers. We are driven by exactly what you articulate here -- that coding has a cognitive challenge embedded within it (right-brain visioning, left-brain planning, iterative design, "talking back" if the code doesn't work) that can't be beat by many of today's fancy do-it-for-you tools.

    Plus, there are now so many free, online communities, tutorials, software tools, etc. ... the cost of learning has never been less! Codeacademy, Scratch, Arduino, Mozilla Thimble, P2PU's World of Webcraft ... it's heady stuff. So if you wanna take your theory for a spin, boy, do I know some middle schoolers who want to meet you! (In all that copious MAC spare time you get.)

    You might enjoy this reading as well:

  2. One of my biggest complaints about the modern world (and they are, as you may have noticed, copious) is how out of touch with our own lives we are. We don't think about where our food comes from, let alone prepare most of it ourselves. We don't think about how or where our clothes are made. We certainly don't think about how our cars and computers work, most of us, anyway; we just trust that they do. I would love it if we were all required to learn at least a little about programming. Maybe if I had studied them, learned their language, computers wouldn't seem like dark magic threatening to take over my world. I would understand the poetry of them, the way you do.

    By the way, love the opening music: felt like a movie, panning in on a high school. I immediately felt it. :)

  3. I am really glad I read this post, I never thought of programming as a conversation between the computer and the programmer. As an English major, I thought only other English majors understood the relationship between a human and a book or other piece of literature (something inanimate in any other person's mind). My engineering friends rolled their eyes when I would talk about how I felt immersed in the lands that stories created in my mind, and how some characters seemed to be talking directly to me. When they told me about their programming, I rolled MY eyes. How could typing in a bunch of random letters and numbers ever amount to the experience of reading a book or having a class discussion on the use of imagery in pastoral literature? I get mad at my friends when they say learning the basics of writing is worthless, and reading novels has no value in real life. But I never stopped to think about how hypocritical those thoughts were. How could I ever be mad at someone for not taking the time to learn the basics and importance of literature, when I never thought about knowing what was behind the scenes in the computer I used everyday?