September 13, 2013
Teaching Programming and Defending the Middle Class
Tyler Cowen's new book Average is Over argues that around the world, the middle class will inevitably continue to hollow out, leaving a more fragile, poor, existence for most people, and elevating a small class of super-wealthy computer-literate computer designers:
“The obvious and direct beneficiaries [of ever-more powerful computers] will be the humans who are adept at working with computers. … That means humans with strong math and analytic skills, humans who are comfortable working with computers because they understand their operation.”
Why is it so out of reach for most people to "understand the operation" of computers? Here is where I think Cowen is wrong: he is unjustifiably pessimistic about the ability of most people to master the language and creation of automation....
Teachers Can Do It
The great educational experiment of 20th century America was a huge success, lifting our nation out of widespread illiteracy into near-universal literacy in just a few generations.
Compared to teaching written language, teaching computer programming should be a cinch! What makes Cowen think that most people are not capable of mastering it?
I think educators should see this as a fundamental and worthy challenge. It is obvious that computers are a powerful force driving change in our society, and it is also true that mastering the creation of automation is not a trivial skill. It is really not enough for kids to grow up to be able to use an iPad or write a tweet do a Google search. Kids must learn that we are all designers, not just consumers, of algorithms.
If we do not teach this lesson, then Cowen is right that computers will divide society into "creators" and "clickers."
We Are Not Taking This Topic Seriously Today
It is important for kids learn that a computer is a flexible tool that can be shaped and used like a pencil. But a pencil does not make an artist. Programming a computer it is a complex skill which you must practice for about ten years to develop expertise.
Just as layers of knowledge and technique and beauty go into writing English, there are layers of understanding and creativity and elegance in programming. There is a difference between a good, sound, cogent program, and a messy, fragile, buggy one.
Just as there is a zoo of important abstractions to learn in Mathematics, there is a bestiary of foundational concepts in programming. As kids are learning about similar triangles and divisibility and integrals in Math class, they should also learn about nesting, sorting, and concurrency in their programs.
That is why we need to begin understanding how a 10-year computer curriculum would look: how can we teach kids programming along with their spelling and arithmetic in Kindergarten? And how can we do it in a way that progressivly builds on this knowledge as they get into high school and beyond?
Untangling the Current Mess
The current state of computer education is a mess: whenever programming is taught as students grow up from elementary school to high school (if kids are lucky enough to be taught at all), kids are taught the same Kindergarten concepts again and again in a jumble of different notations.
Why not move on to teaching them a real concept: teach them parsing, statistical computing, set-oriented computing, something different! But as an educator, if you stop to think about it, the problem is that the Robot competition did not teach them things in the right order. They spent years becoming world-class young thinkers in building robotic control systems, but they do not know what a local variable is. So they need to start again.
I do not agree with Peter Norvig that the solution is to just let kids learn half a dozen languages and let them sink or swim. Just because that is how we learned does not mean that is how it must be done.
I think the problem of teaching programming is important enough that a thoughtful ten-year curriculum should be designed. We should put some planning into what comes first, and what comes next.
Programming is important enough that it can and should be taught well.Posted by David at September 13, 2013 12:31 PM
|Copyright 2013 © David Bau. All Rights Reserved.|