Code Literacy Doesn’t Need To Come At The Expense Of Other Skills

This week President Barack Obama rekindled a couple of the Internet’s favorite debates: whether it’s appropriate to take selfies at funerals, and whether everyone should learn to code.

As part of Computer Science Education Week, Obama delivered a YouTube address titled “President Obama calls on every American to learn code.”

“Learning these skills isn’t just important for your future, it’s important for our country’s future,” he said. “If we want America to stay on the cutting edge, we need young Americans like you to master the tools and technology that will change the way we do just about everything.”

The last time we went through this was when New York City Mayor Michael Bloomberg tweeted that he would learn to code as part of Codecademy’s “Year of Code” in 2012, which earned a certain amount of backlash.

“I would no more urge everyone to learn programming than I would urge everyone to learn plumbing,” Discourse co-founder and CTO Jeff Atwood wrote, suggesting that communication skills were at least as important to a well-rounded education as programming. Many other critics complained that you don’t need to learn to build an engine in order to drive a car.

This time around Slate’s Matthew Yglesias complained that far too many people in the U.S. don’t know how to read English, and that spreading actual literacy should be a higher priority than spreading code literacy.

I’m still on the side of pushing code literacy to as many people as possible. If everyone in the country were likely to spend a significant portion of their waking hours using faucets, and Congress was likely to debate bills that had great ramifications for the future of faucet users, then I probably would say that everyone should at least learn the basics of plumbing. And I agree with Douglas Rushkoff, author of Program or be Programmed, that not knowing how to code is more analogous to not only not being able to drive, but being blind folded while you ride. And while we don’t teach all of our high schoolers how to build engines, we do generally teach them the basics of physics and internal combustion as freshman. Likewise, we can’t expect to teach everyone enough programming to build Facebook, but we can make sure as many people as possible have a general idea of how it was built.

But I think we can all agree that learning programming shouldn’t detract from other educational objectives, like reading, writing and math. Fortunately, it doesn’t have to. In fact, it can be combined with other skills.

Mathematics is the most obvious subject to combine with computer programming. Conrad Wolfram — Stephen Wolfram’s brother — is one of the most radical proponents. His organization, Computerbasedmath.org, calls for students to stop doing rote memorization of steps and focus instead on using computers to explore the concepts that underpin those steps.

“Why get students emulating what computers do so much better (computing) rather than concentrate on imaginative thinking, analysis and problem-solving that students ought to be able to do so much better even than today’s computers?” he wrote in a blog post announcing a partnership with Estonia to rewrite the country statistics and probability coursework. But you don’t need to go that far to add a few programming exercises to an algebra or geometry course.

Meanwhile, economics is an elective at most high schools, but it’s probably something more students should learn and it’s another subject that could incorporate some programming lessons. There are already books on programming for college level biology and physics courses, and they could be adapted to fit high school level courses as well.

But it’s not just math and science that can be combined with programming. A class that used SuperCollider or PureData to teach music theory could be a fun and interactive way to learn both programming and music. And Adam Parrish at New York University already teaches creative writing through programming (yes you read that right). He teaches students a bit of Python, and then sets them to work doing stuff like creating algorithmic poetry using the Twitter API.

Where things could get really interesting is combining multiple subjects. My dream course would be one that taught programming, electronics, mathematics, physics and music by having students build, program and play Arduino-based synthesizers.

The big idea here would be to give students early, accomplishable projects. One of the most interesting posts of the week was one by an anonymous blogger titled “People Feel Dumb: That’s Why They Don’t Code.” It’s a big problem: there’s research showing that students who think they can make themselves smarter do better in school. Those who think that they just aren’t smart get left behind. I know from experience that people feel the same way about writing, drawing and other creative endeavors.

One of the best ways to combat the “I’m not smart enough” or “I’m not talented enough” phenomena would be to give students early victories, showing them that they can program or that they can make music or that they can do math — preferably while teaching them something else important along the way.

The hardest part of such a scheme, though, will probably be teacher training. Estonia designed a curriculum to teach computer science in elementary school last year. The first step in bringing the program to life, though, is teaching training. We’d do well to remember that in the U.S.

Photo by Michael Himbeault