Regarding the kid's guide

User Ipad41001 asked me for my opinion of the kid’s guide on the wiki that he had written. Once I found time to do so, he asked me to post it so others could see it, because he felt he had learned something. Here it is, unedited:

Finally got some time to look at it.

I think that trying to write an online tutorial for kids under 12 (which it seems like you were targeting) is kind of pointless. (unless its a guide for a non-technical parent to follow, to in turn teach their child)

There is a development milestone called ‘the onset of abstract thought’, before which trying to teach certain concepts (programming, algebra, etc) is basically useless. For most people this happens when they are ~11 (it can vary widely in some cases), and it actually happens fast (Ive had students who in the spring couldn’t grasp the most simple of concepts, then come in during the fall and do just fine on much harder material).

Basically, things to avoid:

Lack of a clear goal: Show them what they will be making first. Talk about it. Show them its parts, and explain where you are going to start. This helps them conceptualize what is going on, and build a bridge between what they see in the code, and what it represents/means/yields. [remember, they likely have NO experience or relevant preconceptions!]

Lack of tangible progress: Younger people need a quicker and (most importantly) clearer effort/reward cycle. Starting them off with creating an ‘invisible rectangle’ is the perfect way to spoil this. Instead, front load the fun as much as possible. Have them immediately create something that is interesting.

Unnecessary non-literal phrases (such as “set the stage”): If you do this, immediately explicitly explain what it means. Do not rely on context. This is particularly a problem for autistic children, who are going to be more likely to try to program in Codea in the first place.

Ambiguity: At one point you say “add this” and then list code. Where do they add it? A kid’s first instinct will be to do so after the end of all the text on the screen, as that is how they are used to writing. This specific case is misleading for everyone, but ambiguity in general is again more challenging for autistic people.

Text: You avoided using big blobs of text, which is good, however you still relied upon the text for getting the message across. Include pictures of how the code/program should look, and at the end of each section a complete copy of the code.

Giving them half the tools: You tell them how to do things like move a sprite based off of the accelerometer, but you don’t tell them how to look up how to do that. I did not follow along with the tutorial word for word, but did you ever explain the difference between putting code in setup() or draw()?

As for what to do to improve the materials available to children coming to Codea… I’ll think on it.

Wow, @SciQuest, that is some really insightful discussion.

Out of curiosity, what do you think about more visual and game-like programming metaphors, like Little Big Planet, Kodu, and Scratch?

Generally favorable, but with implementation quibbles.

I’m working on the preliminaries of creating an apologetic short essay on the subject of ‘soft’ programming, like Scratch / Kodu / GameMaker / Minecraft (Redstone) / Little Big Planet / etc, and will let you know once it is ready!

(keep in mind, there are purists who would insist that even Codea is too ‘soft’ on the programmer)

Some great comments there, @SciQuest. A week ago I started playing around with the idea of putting together a ‘Learn to Code with Codea’ iBooks textbook, so these comments are very much worth me bearing in mind!

For the bigger picture, on kids and programming – takes 10 min to read:

Very interesting read, gebloom. Thanks for pointing that out.

Thank you.

I knew your observations would be a hit. It’s great to hear from experts.

Ever since you started complimenting me & my profession (which, thank you, it is very flattering and appreciated) I’ve been dying to find a way to reveal that I’m far from an expert without coming off as self important or some such, and honestly, I’ve given up! So here it is:

I’m 25 and don’t have a degree. If I tried to get a job as a teacher in a public school I would be laughed out, and the idea of working in one (or getting a degree in Education) scares me.

@SciQuest - Fron what I can tell, you’d be a feet tech teacher. Our’s isn’t the best. I by far outsmart him in a lot of subjects. And about soft programming, I’ve made very simple prototypes of something like scratch for Codea… I’m thinking about really doing a full project, but I’m not sure. I have been programming since 8 (4 almost 5 years ago), but took a 2 yer break in between due to the fact I use to like games. I forgot a lot of it. Back when J started, I used Scratch, BlitzMax, and DOSBox to simulate an old computer to use QBasic. I wish Codea was around then. Now and days, I much prefer creating, that consuming, and Codea was my inspiration to really get programming seriously and start my iOS app.
P.S. Waiting for Xcode export so I can submit my awsome app.

“From what I can tell, you’d be a feet tech teacher.”

Okay, Urban Dictionary doesn’t have that one. Help me out?

“fe” is just to the left of “gr” so I assume he meant “great” and forgot the a.

Slow iPod touch 3G… uhg. Sorry

Ah, personally my phalanges are too fat to think of typing on such a thing. That explains it!

I have just finished reading the guide thus far and I actually learned some things about codea thanks for posting this @Ipad41001 please let me know if you contenue it

It’s been about 15 years since I did any programming. I’m thrilled to have Codea, and I worked my way thru the guide a couple of times before I went thru it with my grandsons, ages 8 and 12. The progression was effective, and I could not have done it on my own. I check back regularly. Thanks.

Great, so, there is a niche, an adult reading to a child and/or a quick walkthrough for everyone.

At the moment I’m experimenting with Codea examples in Codea. Depending on how that works out, I may go back to the kids guide.

As a side note, it’s spring here, I found Codea in the fall and it kept me good company through the winter. I may not be around as much through the summer. Guess I’m a foul weather friend :slight_smile:

My boss had to teach one day of my Codea camp last week. She does not know how to program, and had a hard time with it. One of her complaints was that Codea is entirely based in scripting, instead of using a GUI (our other two intro level programming camps using LEGO NXT-G and Game Maker). She felt that this was too close to teaching them the syntax, instead of teaching them how to program.

As an informal educator, my primary goals are to enrich children’s lives, get them motivated to learn more, and give them the ability to continue their exploration into science and technology on their own time. I especially want to provide this service to children who have a specialized interest or are gifted. This of course puts me firmly in the 'learning to code" camp, not “learn to code in X language” or “learn the syntax of X”.

However, in the days after I continued to teach the class, and I noticed patterns in the bugs in their code. The kids would accidentally insert a space in an elseif statement, then add an extra end statement (who knows where) to compensate. They would not indent code (we have no ipad keyboards yet, so I understand their difficulties here), and many would either add tons of extra lines or have no blank lines at all. (even between functions!) They also had a hard time understanding the relationship between inner and outer loops, etc.

All of those problems are problems in how they understand, and how they interact with, the structure of the code; its shape and form. This is an aspect of syntax, and one I believe is fundamental to understand. I am of course not talking about leaving a semicolon off at the end of a line (I almost forgive Lua’s lack of += and ++ just for this small mercy) or misspelling a word, but in not understanding the difference between “if elseif end” and “if else if end end” even when the distinction is brought to their attention.

So, as perverse as it seems to say, I want to find better ways to teach the syntax of programming, because I believe that it is a necessary part of learning to program, specifically for conceptualizing the code.

@SciQuest it’s unfortunate that syntax is so necessary. Your description sounds like something a whitespace-significant language, such as Python, might overcome. Do you think a language like that would be easier to teach?

I can think of some ways to assist with the lack of visual information in Codea.

  • Something that highlights the current scope — something that puts only the lines of the current scope in focus.
  • Code prettifier
  • Marking and warning about multiple control structures on a single line (else if)


I would love to have a Python-based tool for teaching programming. At the moment we have no education programs using Python, but it was my tool of choice when I was doing Project Euler.

All three of your ideas sound like they would solve a BUNCH of the practical problems the kids are having. Heck, having those tools would benefit me!

For a code prettifier, forcing proper indentation, removing more successive blank lines in excess of 2, and forcing a blank line between functions, seems like a good starting point.