The new Apple ads for the iPhone, with the catchy phrase "There's an app for that," seem ubiquitous on television these days. They suggest that, for whatever one might want to do with an iPhone, from printing a label to finding an apartment near campus, then there's an application ready-and-waiting to help you do just that. Ready-and-waiting -- but who made it?
One of the challenges of computing education these days is convincing students that there are new programs to write, programs that they want, and that they are the ones to write them. Computing is a new literacy. As Chris Crawford said, "Programming is the new writing." How do we convince students that they also want to write? It's hard to come up with a compelling argument for students that they need real computing literacy -- which isn't about using applications, and is about what is possible with a computer.
There are arguments that we can give students for numeracy and textual literacy. They need those things to survive in the world, because numeracy and textual literacy is pervasive in our society. But even without the pervasiveness, we can make arguments about self expression and solving one's own problems.
We tell kids that they need to learn to write in order to write letters to their grandmothers or to write to-do lists. The fact that there have been letters written in the past is irrelevant -- everyone's letter to their grandma is different. Few teachers tell kids that they should learn to write in order to become a great author (few kids will, or will even find that motivating) or that it will influence the way that they think (I wonder if even all teachers believe that, though there's good cognitive science research suggesting that it's true).
We do have a harder time arguing that kids should learn mathematics when they have calculators at-hand. "What happens if you don't have a calculator nearby?" and "You should know how to check if your answer makes sense" are both real reasons for knowing about mathematics without a calculator, but aren't very compelling for elementary school children. The idea that mathematics might influence the way that one thinks and problem-solves is, again, true but not compelling for a child. Yet, the challenge to sell textual literacy or numeracy is nothing compared to the challenge of selling computational literacy.
How much harder is it to come up with a reason for coming to know computation? "There's an app for that." What should we be telling students that they can do with computation that's different or better than downloading a ready-made piece of software? What's the software equivalent to the letter to grandma, that there's a compelling reason why your program should be different from other programs out there? In part, the problem is a lack of imagination. As Alan Kay says, "The Computer Revolution hasn't happened yet." How do you convince kids that there's a greater revolution possible out there, and they can be part of making it happen?
This is a timely article for me, as my school is beginning a STEM initiative, and part of our goal is to convince people that computing literacy is important for every student. I am inspired to find a way for my computer science students to write an app for a G1 phone or an iPhone. That would be a very exciting assignment for them--one they would delightedly share with friends. And I can't think of a better way of "selling" an idea than letting the students do the selling to each other! Good article.
One request, though. Do you have any resources to share that would help me learn how to write apps for mobile devices? I currently teach students Flash, Java, C programming for robots, and some Python. Finding the time to learn new things can be difficult, but this seems worthwhile to me.
Hi Debra! There's a cool class going on at Stanford on programming cellphones -- my colleague Sarita Yardi pointed me to it. Their class materials are at http://www.stanford.edu/class/cs193p/cgi-bin/index.php with more of an overview at http://studentapps.stanford.edu/
Some off-CACM respondents suggested to me that it's hard to make a utilitarian argument to students for programming. It might be better to think about arguing for programming as a form of expression (to build or say things that one can't easily in any application, like with Processing http://www.processing.org) or to explore ideas, like in computational science. I found both of those to be compelling arguments.
Android is an ideal platform for learning mobile. Eclipse is free. The Android SDK is free. There is a wealth of online documentation and books (electronic and paper). And there is online support. Oh -- and it programs in Java: what you already teach.
For students who don't have hardware devices, the emulator works well.
The potential educational experience goes far beyond simply programming the device to how to be a part of an open-source community -- a crucial skill nowadays.
Actually, you can participate in open source projects for the iPhone as well. There are several open source projects that has been used on the iPhone.
Though, for the iPhone it requires hardware investment (Mac and iPhone) and iPhone Developer Program if you want to test on the device using official SDK, but if you're willing to invest more effort and time for iPhone development, and successful in building an app, the financial incentives will be better.
Displaying all 4 comments