Hacker News new | comments | show | ask | jobs | submit login
Show HN: An iPad app to teach kids how to program
57 points by smj2118 on Dec 26, 2011 | hide | past | web | favorite | 36 comments
This app is a graphical programming environment for kids to learn coding by creating animations.

Although we released it to the app store it's still more of a beta version and we would love to solicit feedback from HNers with iPads. To me, programming is something that kids could really enjoy but the obstacles in their way (getting a programming environment, publishing their code, learning syntax) make the barriers to entry unnecessarily high. We're hoping this will be a good first step in overcoming some of that.


Tell me what you think!

Thanks, Samantha

I learned to program on my TI-82 calculator because I couldn't pay attention in my Engrish class. Learning to program allowed me to actually understand the math I was studying and put it into a practical framework. Especially since I was replicating a lot of games that I couldn't afford. It was great.. I was learning and becoming more popular by distributing these games to my classmates.

I played your app with a kid I mentor (he is 7) and he got bored of it very quickly. I think the main problem is that it does not have a clear objective. I can make a dinosaur move, but OK... I get bored super quick. Now. Old school games like the incredible machine... that's an awesome game because its colorful, the objective is clear, there are tons of flexible solutions per stage and it causes him to think with the tools he has in hand.

If you add in a mission based structure, I think that will help in the use and addictive-ness of the application. A thought to consider!

I totally agree. Programming is a hard thing to "teach" when so many of us "learn" it in order to accomplish something.

As the saying goes, some things are taught, and others are learned.

I don't have an iPad, so I couldn't try this app, but these are just my thoughts on kids' applications in general, not the app itself:

I agree that in a learning-based program, a mission of some kind would be helpful, but too often, creators of these apps think it's good enough to put in a smiling dinosaur, or a silly animal friend and that'll do the trick. It does not.

I have a 7 year old, and he is just starting to like to "create" on the computer. He loves Sploder.com for creating games right now, but programming doesn't interest him much. If I told him to move a dinosaur across the screen he'd look around for his 4 year old brother who still likes smiling dinosaurs. At 7, which I think is a good early age to start programming, they are already into monster trucks, clone wars, and big time action. No more cutesy stuff. If that dinosaur didn't devour Jedi's, I don't think he'd like it much.

Agreed that having a mission or goal is important.

What comes to mind for me is a game called the Island of Dr. Brain that I played as a kid.

There was a section in the game where you would input a bunch of directional commands to send a robot through a maze. Then you would "run" the program and see if the robot made it to the end.

Of course, this didn't teach me how to program, but it did teach me how to think in an input/output sense--input these instructions and this thing happens--in a way that I hadn't previously learned in school, and the idea of finishing the maze helped the game hold my attention. Game mechanics...well, they work.

FWIW I'm female and I was never put off by the fact that neither Dr. Brain, nor the legos I had, etc., were geared towards girls.

That said, what you have seems like a really good start and I'm very much looking forward to experimenting with the app.

Thanks for the insight. The reason the dinosaur is a bit cutesy is that we wanted to appeal to both genders. A dinosaur devouring jedi might get boys interested but would probably turn off girls. Unfortunately it seems difficult to appeal to both girls and boys at that age.

Thanks, I do agree that it needs more goals to be built in, especially if we want it to become stickier and more addictive. The incredible machine sounds cool, I will chcek it out. Our idea with the first product was to see how far people could get with just the plain platform before building in more complex mechanics.

From our user testing I think 7 is probably a little young for the app. 9-11 seems to be more of the sweet spot where they want to play games but can go off on their own without much structure.

Thanks for the feedback!

As an aside -- I picked up Scribblenauts on iOS recently. It's not quite as good as I remember the Incredible Machine -- but it's got a lot of the fun "let me come up with a weird solution to this problem" puzzles. Worth the $2 if you haven't got it.

I always wondered how successful those apps and languages (Logo etc.) are as learning tools.

It seems like a great idea - you make colorful apps, that are easy to fiddle with and you sneak in coding under 'move dinosaur few centimeters to the left' cover - but 'real' programming is not very much like this - it might create false illusion to those children, that it's and fun and easy, and you get real programs working after 5 minutes.

Illusion, that will break to pieces when confronted with real world - and I think that disillusionment might actually discourage kids.

One of the most important skills a programmer needs is rigorous thinking. You can not "wish" the turtle to do something different -- and whatever it does is a direct result of your instructions. With logo, you can start to understand that "technically correct is the only kind of correct."

Because it is a safe and interactive playground, logo is a great entree to programming, as you suggested. Given the right tooling and attitude, 'real' programming is very much like this. I put a great deal of effort in minimizing my iterative loops because it helps with motivation and predictability.

Finally, the turtle metaphor is nice because the child imagines themselves as the turtle and so learns to anticipate what the turtle will do when given a set of commands by imagining themselves following it -- this is a fantastic exercise that helps build the skill of mentally modeling the behavior of a machine.

The turtle can do a lot more than pen-down, move, pen-up, but it is still a great metaphor for the computer being the automatic executor of the programmer's wishes.

One of the differences between very good programmers and mediocre programmer's that I've noticed is that very good programmers understand code as it commands the machine (virtual or physical,) whereas mediocre programmers understand code as such.

Logo is much closer to Assembly than to Java, and that's a Good Thing. You are right that there is a big distance between Logo and professional code -- similarly, there is a big difference between elementary math and actuarial science.

Of course real life is not like this -- but it's not that bad either. You could say the same thing about anything -- why teach kids play basketball, as it might create false illusion that they will master it after few games? Why teach kids art, as their drawings will be crap judged by adult artist standards? Why teach kids anything?

The educational programs serve the purpose of accustoming kids to challenges that await them in real life, and I believe that the prepared ones will be served with the less severe blow.

That's an interesting comment, it sounds like you've experienced the frustrations of programming first hand. Basically what you're talking about is the issue we want to solve. There will always be frustrations around getting your code working (some would say that's the fun of it) but we hope to create something that will eliminate a lot of the other non-code problems that stop people from moving on to the next step.

What we want to do next is add in a way to publish your code to the web through our app (which may morph into a web app if that turns out to be more appropriate). At that point, in my opinion, a user would be doing real programming since she or he would be creating something in code and distributing it to others for use.

I don't think kids will make such a big jump. :) But I agree in a point you made... you can't expect a "learning tool" to be created with just a few cute graphics. I would argue that this sort of tool would be super valuable once you add in the element of "infinite possibilities" of things to do. It's not quite there yet... but could be if adding in some elements such as a mission based structure with increased complexity.

I would move away from text-based programming and try a visual metaphor approach, especially on the ipad when touch/gesture are fundamentally easier for kids to learn, i.e. replace "grow" with growing animation of the dinosaur Take a look at what http://launchpadtoys.com/toontastic/ is doing for animation/story-telling.

It'd be cool to have a lisp that you could edit structurally with an iPad. Structural editing is a foreign thing when done on a keyboard. But it's 1:1 on an iPad. I know that's not visual in the way you meant. I just think it'd be easier to grok than syntax.

Also, Conal Elliot did a talk about how to visualize higher order programming. He demonstrates a UI for manipulating higher-order functions. I don't know how directly useful it would be but it's at least a good place to farm for ideas. http://www.youtube.com/watch?v=faJ8N0giqzw The demo starts at 22:22 if you just want to skip to that.

Great news, I hope this means Apple will allow MIT's Scratch into the App Store soon. http://computinged.wordpress.com/2010/04/15/apple-removes-sc...

Getting a programming environment is indeed a barrier which I have experienced a number of times. This contrasts with schooldays when I could start writing a basic program simply by switching the computer on.

Why don't Apple, Microsoft etc. package the stuff you need to get start programming with their OSes? (So one could begin learning with 5 mouse clicks or less.)

Sorry if this is a hopelessly naive question

I think programmers themselves have a bias against getting started easily. Everyone knows how much they had to struggle to get their environment set up so they expect it to be a hard problem and don't consider it necessary to solve when building an OS. I imagine it's simply not a priority although I wish it was.

I dunno, I started on a Commodore 64. When you turn the computer on, you are in the BASIC interpreter. It didn't get any simpler than that.

"Why don't Apple, Microsoft etc. package the stuff you need to get start programming with their OSes?"

They do, or at least Apple does with the inclusion of a version of Ruby as standard in OSX, various shell scripting options, and Xcode available for free from the Mac App Store (although I would question how easy that is for a novice to get started with). Windows? Not so much.

Those sound like good things but as you suggest this doesn't meet the standard of beginner friendliness.

This would be something like clicking on an application called 'Ruby' in the applications folder and then a window popping up ready to start typing my script in. (If there are choices to be made, fine, just make it work with some default options and I can switch text editor or whatever later.)

The same set-up on every single Mac/PC, out of the box. Every resource required pre-installed and automatically updated with the OS.

No credit cards, no searching online, no knowledge of what is required beforehand, no obscure dependencies, no expert friend required, no need to read instructions about how to set up, etc.

The reason that is not available is that the universe of options for beginning programming has exploded since the old boot into BASIC days, and there is no longer agreement on the easiest way to begin programming.

As for the same set-up on every single Mac/PC, it's already there, it is just slightly harder to get to than you want. It's called a web browser, and there are numerous URLs you can go to that let you program right in the browser.

W3schools is probably the easiest to find, and lets you try HTML and JavaScript right in the webpage. http://www.w3schools.com/html/ and http://www.w3schools.com/js/default.asp

The online version of "Eloquent JavaScript: A Modern Introduction to Programming" by Marijn Haverbeke has an integrated JavaScript console at the bottom to follow along. http://eloquentjavascript.net/chapter1.html

If anything, the problem is that there are too many answers, targeted at too many starting levels, so it is hard to Google for any likely phrases and get to the answer easily.Searching for "begin programming" seems to give better beginner answers, whereas "learn to program" tends to give more college-level answers.

I see no reason why a kid who is interested in how to do it, and grew up in the modern era around web browsers and search engines and such, would have any trouble finding something quickly.

You have that right now. Every computer with a web browser has a JavaScript interpreter installed; but at some point some knowledge of programming, or a desire to learn it is required. The web browser is a gateway to that knowledge and learning, so, other than opening a text editor and getting stuck in, it's all there, ready and waiting.

Microsoft does this by releasing "Express" editions of Visual Studio: https://www.microsoft.com/express, which is available for C#, C++, Basic, JS/Web and Windows Phone. Although the installation is different (Mac App Store vs hunting it down on Microsofts website), what they actually do is very similar.

As recently as 2011, Microsoft launched Small BASIC, although that might be more aimed at kids. But anyway it's entry level, that's for sure.


Because there is better? Nokia's had python forever on their phones, and now QML (declarative + javascript).

I think JavaScript/Browser may eventually fill this void. Maybe.

Good luck, Samantha -- looks great :) Also, clickable : http://itunes.apple.com/us/app/daisy-the-dinosaur/id49051427...

I like the concept and the graphics, but I dislike "website in a webview"-apps. Why not simply release this app as a website?

Well, there is a slightly buggy webview version at:


But since it only really works on iPad we decided to release it as an app.

Congratulations for getting this out in front of people. Good luck. I'll be checking it out.

Let me know if you want your app in Portuguese. software.pro.br

It runs very slow on my 1st gen iPad

I will never understand why anyone would want to teach little kids to program. Especially those who barely know how to add and subtract. I know of no upwardly mobile, reasonably successful adult, 18+, who knows how to program. This makes as much sense as teaching them brain surgery.

I know of no upwardly mobile, reasonably successful adult, 18+, who knows how to program.

Huh? Surely I'm misreading this or there's a typo here. If not, you've stumbled into the right place. Say hi to the legions of programmers on HN who are upwardly mobile and very successful.

I think you'll find plenty of upwardly mobile and reasonably successful adults on HN that know how to program. Many of the best started as little kids. And as software increasingly touches every aspect of our lives, knowing the basics of programming will be useful for understanding how things work in the world.

Brain surgery is a highly specialized discipline that takes years of preparation before the surgeon makes her first cut--Daisy the Dino is specifically trying to make programming less intimidating to learn with a lower barrier to early success.

Exactly! The fact that it seems so unattainable to you is the problem we are trying to solve.

Being a programmer myself I know that it can be a challenging field but I also know that it's definitely something kids can do and enjoy as well.

I like the analogy to Legos- not every kid who plays with Legos will grow up to be an architect or civil engineer but they can gain a great deal of enjoyment out of doing a simpler version of what these people do professionally.

I really enjoyed learning Logo in my 5th grade gifted program. I'm pretty sure that most of the class enjoyed it as well.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact