Computing with Purpose

Earlier today, at a birthday party for one of my daughter’s classmates, I was making small talk with a fellow parent (and for true CS/Ed geeks, note that that’s two words of small talk, with no capital letter).

As it often does, the subject of work came up, and I clarified what I did, from the overheard, “computer learning”, i.e. machine learning, to what I actually do. For the sake of the sake of the other parent, I summarized my job as helping others learn how to program computers.

The next question from this friendly person was “ah, cool, what’s the best way to learn that, then?” Rather than deluge him with a rant about the many possible ways to learn, and how it might depend on the learner, I gave what I thought at the time was a bit of a quip:

“Find a project that you want to do that requires computer programming, and learn how to do it.”

Thinking back, this is a very good answer indeed.

And it’s precisely the answer that makes sense for an adult learner (of computing, or many other things, for that matter). Why do we adults learn? Because, as mostly self-directed individuals, we’re curious. We feel the drive to learn something, or the need to learn it to enable some other drive we have. Whether it’s to improve our job performance (my next big project is to write an AI to respond to most of my emails – but that might be insulting to artificial intelligence), to build a slideshow tool for a family blog (that’s how I learned a new language, on one of the sleepless nights of my first paternity leave), or to automate the LED’s that are a part of our Halloween or community theater costume, I can concoct myriad reasons for learning to program.

But what I’ve seen fail multiple times, for myself and others, is to make the learning an academic exercise. To say “I really should learn that – why don’t I buy a book so I can,” or some version thereof.

Without a clear purpose, many well-meaning adults fail to learn that new thing.

But when someone is purposeful, about their learning, they won’t be stopped. They will persevere, learning the minutiae and early nits so they can achieve their goals.

This idea of purpose-driven learning, and purpose-driven computing, is why I care enough about computing to spend my waking hours trying to help people learn about it, and it’s an ideal that I share with Hal Abelson and others on the MIT App Inventor team. We want to make that purpose-driven learning and computing possible. We want to enable the apps that people create while learning to be real, usable, and in as many cases as possible, useful apps.

Our goal is to enable anyone, whether they start by knowing how to program computers or not, to build an app that can have real impact on their world.

Of course, there is much more to be said about the dichotomy we often see between adult, or lifelong, learning, and classroom learning (for most classrooms beyond pre-school).

How many times have we said, heard, or even heard a joke about “When are we ever going to use that?” That question does not exist for the learning I describe above – the learner is not left in the dark about the purpose of their learning, in fact, they bring the purpose. So, along with adult learning of this kind, I advocate for classroom-based purpose-driven learning.

Is it possible? Maybe; maybe not. I’d go so far as to say probably, but let’s try it and find out!

Reactions to a CS10k Webinar: Block Party

I write this without having listened to the recording of the first half of the webinar, “Block Party: Meet Some of the Creative Minds Behind Blockly, Scratch, and More!”, which took place live on the evening of October 7, 2015. I hope my reactions prove spurious after listening to the recording of the full webinar. I am afraid, however, they will not be. And at the very least, they reflect my experience. I hope they will resonate with some others, and encourage you to share your enthusiasm for computing with others.

I listened to, and participated in the chat for approximately the last 25 minutes of the event. There was certainly some interesting discussion, among some very enlightened and well- meaning people, representing thought leaders in Computer Science and/or Computing Education.

Given that, however, I cannot help but ask question: “Why did the majority of what I heard focus narrowly on how we teach what is often taken as a vocational skill, namely programming, most effectively?” There were a few half-hearted nods to computer science-specific formulations. The message I got loud and clear, however, was that we should figure out how can we get kids proficient in Java(script) as quickly as possible.

And it intrigues me that this ended up being the case. I know many of the people who participated, and they believe firmly in much more transcendent ideals. Why, one of the curricula based on one of these blocks languages is entitled “The Beauty and Joy of Computing.”

I recently had a small difference of opinion with Dr. Mark Guzdial on Facebook, in which I critiqued an article about new CS courses in Georgia for emphasizing only the vocational good they could do. His response, paraphrased, was “that’s often how these things end up getting sold.” Much more exclusively on that idea in another post, but to boil it down, there’s much more to computing and any of these languages, and we lose so much richness when we devolve into a discussion of optimizing teaching of programming.

I’m not saying anything particularly new, but computing to me is about much more than the act of programming. Programming is often the last stage of a bout of computing. First, we assess the problem in our head, devising a strategy to approach it. We (why “We” and not “I”? Because computing is rarely a solitary endeavor,) may discuss it with peers, we may sketch flowcharts or notes on whiteboards or in notebooks. We often search for facts and figures, data, that have nothing to do with computers, but about the real-world problem we are trying to solve with an application of computing. Using a variety or combination of methods, decomposition/solution of parts/reassembly; machine learning; data mining; etc., we plan, eventually program and test, then repeat to find better, and finally adequate solutions. This, for tonight, is my barely adequate description of an experience of computing.

Why the disparity then, between the possible discussion space and what ended up being talked about? Certainly it was not because the blocks languages that were being discussed are learning or play languages. Scratch and the languages that spawned from it scaffold creativity of several kinds. Alice and its relatives are also about self-expression, though with a slightly different flavor. Pencil Code, to my poor estimation, strives to give fast ability to control real tools. Admittedly, though, I’m biased, and know the most about about one particular tool, MIT App Inventor.

MIT App Inventor strives to give beginners and experienced programmers fast control over mobile devices (yes, still Android only) through high level abstractions that allow the app creator to do real, meaningful things. What does that mean? There are myriad examples, ranging from crowdsourcing access to sanitary toilets in Lagos, to developing apps for tracking student location on school and/or city buses, both domestically in the US and in Bangalore, among other locations. Are they all so goody-goody? No – kids (and adults) make fart noise apps too – and those are popular and exciting, and represent the thrill of computing as well – they allow the app inventor to make something that promotes cognitive dissonance – a phone farting!?! How much more fun, and relatively innocently disruptive can you get?

So, to close, let’s strive to elevate the discussion – let’s talk about the Beauty and Joy of Computing, farting phones and all. Let’s talk about why we love computing, and how programming enables that.

Somehow, with only a gut feeling to support this, I suspect that we should curtail our inclination to debate in the esoteric weeds the relative merits of one blocks-to-text conversion tool vs. another. Instead, let’s spend more time developing and telling the inspirational stories to pass to youth who may not hear them otherwise. Enthusiasm is contagious, sometimes… I’m convinced if we share our true enthusiasm for problem solving and computing, vs. vigorously discussing arcane points, we will share that youthful enthusiasm with a larger AND broader audience of youth.

Starting with a… pffffttt…. Surprised?

This may give you some idea what to expect from this blog. It’s a (relatively) serious post about the importance of apps that making bodily function noises. Yes, it’s about why building fart noise apps matters.

Fart noise jokes are nearly ubiquitous. Make such a noise, and people will snicker, or if in polite company, try their hardest not to snicker. And they are apparently timeless as well (see Flatulence Humor, Wikipedia).

So, there is no surprise in the fact that they have moved into the digital age. There’s the story of the iPhone app that lit up the charts, But I find it more interesting to consider why young people, many of them, think making such apps is so darn appealing.

In full disclosure, I have never made my own fart noise app, though I did record my daughter laughing and make an app out of that, which I propose is related. People make apps that are important and meaningful to them. However, most of the apps I see made are not my own. By now, I have seen hundreds of youth build their first apps. Invariably, one or more in a group will make an app that makes “inappropriate” noises.

Why?

This is more than simple silliness. Yes, silliness is there in good measure. More notably, though, I think this is evidence of youth taking control of their surroundings.

Let’s look at the outcomes – the builders get attention, from peers and adults. For a moment, or longer, they are the center of the social encounter.  They know that the adults, sometimes known as authority figures, will have to contend with what to do in such a situation – should they laugh it off (giving power to the creator as a source of humor), scold or punish (giving social standing to the creator as one who can make an authority seem petty), or simply ignore (which in rare cases they do, while probably laughing inside).

Apparently, then, fart apps serve the creator well in many cases. So with that inspiration, I offer this to you to consider:

If you were 12-years old, in 2015 USA, with many aspects of life outside of your control, what would your first app do?