Who uses CODEA to teach programming?

I vote for CODEA on every iPad.

Think of the improvement in STEM education and programming knowledge.

How great would it be for Apple to include CODEA on every iPad just as Basic was on every early PC?

And pay it’s developers accordingly!!

What an expansion of high quality apps that would create!

Replace boring PowerPoint presentations with active simulations and graphics that demonstrate your points and act as prototypes.

Templates such as in https://bitbucket.org/TwoLivesLeft/core/wiki/Step%20by%20step%20projects will speed up coding and learning of good programming practices

It would be lovely, although there are several other issues around the idea.

I’ve seen loads of people who say that the iPad will revolutionise education and whilst I’d really love to believe them - all the institutes that I’ve seen that use iPads only really focus on simple games aimed at primary / junior level.

My friends daughters school has a scheme where every child in the school has an ipad but the reality is most of them are never used - either kids don’t take them, or they’re out of charge, or from a useability / collaboration point of view pen and paper are still winning out.


Also Codea is designed to write simple interactive applications - it’s not really designed for the linear style of code that beginners start with. Getting to grips with the draw loop and the awkwardness of accessing the keyboard just adds unnecessary complications.

Now if Apple released an iPad version of XCode that ran Swift - that might stand a better chance.

IPad’s are not used because school systems seem to think education is for 19th century industrial automatons, not 21st century information workers who are Internet experts.

Look up Utah two language total immersion education.

The Basic linear style of programming has been obsolete since the first Mac appeared in 1983.

CODEA has made coding Mac style graphic user interfaces easier than most current development systems.

No, it’s still not trivial - see the source code for Cargo-Bot in your CODEA examples.

And yes there are still more lines of COBOL executed per second than any other language including Windows on PC’s but try getting a job coding COBOL.

Sorry for the diatribe but I’ve been programming since 1963 and don’t like the obsolete thinking to be repeated.

I think most students learn to hate programming because they are taught useless trivial examples that are totally unrelated to what can be done.

I teach programming at Mother Teresa HS in Ottawa, Canada.

We started last year with a BYOiPad program with grade 9 students.
Since my grade 10s all had them this year, we used Tynker and then Codea to learn to program. Unfortunately my course is inside an iTunesU course and my Board does not have a public iTunesU account yet.
Here are some video lessons I made for the class.

If all goes well, I hope to use Swift on the iPad using Dringend with my grade 11 class next year.

Sorry I don’t agree - linear programming is not obsolete, granted it’s not the newest, latest shiny, BUT it’s one of the best places to start learning - especially for beginners.

Don’t forget that the processors the code runs on are still essentially linear and all to often people come out of university having learned fancy methodologies and systems and don’t understand the relationships between registers, memory, instructions, the fetch / execute cycle, interrupts etc etc.

Don’t get me wrong, object orientated programming is great and a more natural way of thinking and organising data but each method still consists of sequence, selection & iteration. It’s the foundation on which everything else is built - if you’ve been coding since '63 then you’ll have run the gamut of every type of programming methodology and all of this knowledge has been built on the linear foundations.

I tried teaching some Codea to a high school programming class, where the teacher had finished the course material very early and was looking for something to engage them. They had been doing some kind of accounting project using VB6 (!) until then.

I prepared several step by step projects, starting with just one Lua lesson (far too little, I know, but I have brought up teenagers myself so I know their attention span) and one on physics, games etc.

It didn’t work at all. It was a total flop.

Some of the kids were not interested at all in anything that looked like work, and just played games on the iPads.

Some of the iPads played up, because they were shared library iPads, so I wasted ten minutes every time, just on that.

The kids who were interested in programming looked briefly at what I had prepared and then went off in all directions trying to do things, which just resulted in questions I didn’t have time to answer.

Now I fully realise that I wasn’t a professional teacher, and the kids only had iPads in class, and that the class teacher had not done a good job of making them realise that even fun programming languages require some preliminary hard work. (On this forum, too, we see a lot of young people arrive with fond dreams of having the next Flappy Birds up on the App Store by next week…).

I came to the conclusion that while Codea is one of the simplest languages around, and one of the most exciting in terms of what it can do, it doesn’t teach itself, and still needs to be taught in the context of a CS class by teachers who knows how to teach programming to teenagers.

Having said that, there are, I believe, some teachers who have taught with Codea. Try googling on the forum and elsewhere.

@TechDojo - I agree. You don’t need OO for the page of code that is all most beginners can write. It’s only as your code builds in length and complexity, that you find yourself looking for some way to organise it, and that is the right time to teach OO.

@Ignatz - 100% agree. I was saying to my son earlier today when he expressed a desire to “learn to code” that the most important thing is to develop the skill to break a problem down into smaller and smaller blocks (sequence, selection and iteration), followed by the ability to identify the different data items and operations needed (using nouns and verbs as part of OO analysis) and lastly the importance of discipline and organisational skills and methods to keep track of what’s going on as the program scales in size and complexity.

To my mind if you master the above, then the language used is irrelevant.

I wonder, though, if that just sounds like theory to a youngster. I see value in teaching them the basics and letting them play with it. In Codea, they will start writing things like


and that’s a good time to teach them arrays/tables, and they will appreciate the result.

Then when their code starts getting messy, it’s a good time to teach them to break it into functions.

The same goes for classes etc.

Even as an adult, I have found I learned the most when I had the need for it. Before then, each of these things was just fancy words.

I got started just like @ingnatz described. Teacher ran out of stuff to teach before the year ended. So she had all twenty-six of us do the Hour of Code. (I actually came across Codea from an ad on that website) From what I saw from my class mates only three students (including me) were interested in it. The rest either where confused and intimidated by it or just didn’t care.

With that in mine problems I see with Apple doing that is:

A.) although Lua is extremely powerful and easy to learn and is a great intro to programming, Apple doesn’t use Lua for anything big (I think). Sure there are app on the AppStore made with Lua, but not a lot are made by Apple personally. So Apple may not need someone with good Lua skills.

B.) Lua is a good language and don’t get me wrong, Codea is extremely entertaining. However it would be cheaper and easier for Apple to just make their own Lua code editor and put it into an update. This would also mean that they just pay some people for a little while to make it instead of paying Two Lives Left for every iPad useing Codea.

C.) Even if they did do that, Lua isn’t used as much for anything outside of gaming industry. So it would be smarter if Apple just made a Ruby or Python editor. That way the people interested have way more access to documentation and tutorials. This would also help with potential employees due to the fact that these languages have a lot more applications in the work place.

D.) There just might not be that many people interested enough to learn. So Apple might not really profit from the action. Like I said although it would be cheaper it would still cost money for Apple to make and distribute their editor. Even if they do get some people interested (and they probably get the money back anyway) the whole thing would be a waste of time and effort if very few people start working for Apple, or if Apple doesn’t make deals with other organizations. This means that Apple would have no need to take this action.

I was lucky enough to learn programming starting with assembly language on an IBM 7090(subtractive index registers). We did matrix multiplication in assembler then they taught us FORTRAN in three hours. Redoing the matrix multiplication was a dream! Most of my career was writing in assembler but I love not having to be mired in the details.

Yes, there are times when I would like to see what is going on under CODEA’s hood, especially to understand exactly how draw() and coroutines work.

I feel that programming is best introduced by starting with the big picture and end result of something interesting then showing how much detail the computer needs to be told to create it.

The biggest thing to learn about computers is that they don’t understand human language and concepts without a lot of help.

Yes, most CODEA code in linear just as are movies and novels.

But it is the bigger context that is important and to be kept in mind. Helping to do that is my goal for my CODEA Enlightenment project.

@CodingOnNapkins With assembler, it sounds like you’ve been coding for a long time. Does your name reflect that. When I first started coding, that’s pretty much how we got coding assignments, on napkins ( small pieces of paper or real napkins ) depending on where we were when discussing what needed to be coded. Before I retired, meetings and lengthy tech specs needed to be written and submitted for review before any type of coding was to be started. It seemed more time was spent writing/reviewing tech specs and not leaving enough time for actual coding before the deadlines.

CodingOnNapkins is my name for a project to help turn notes on paper, in drawing programs, mind maps or program comments into running code.

Or at least a big picture template into which humans and computers(think IBM’s Watson) can interact to help each other grind out the details.

My CODEA Enlightenment project is a part of that in which existing code such as Cargo-Bot can be studied to help create big pictures from details and to extract parts to be used in other code.

This effort will produce a vocabulary of big concepts from which detailed code can be generated.

This concept is really the big idea behind the creation of FORTAN, COBOL, RPG, SQL, etc.

We just did not have the computing power of an iPad Air and CODEA to help us then.

@dave1707 Yes, most of my professional assignments were just a very short verbal description and never reams of paper and that is the way I like it.
For example, my first for pay programming job in 1963 was “Add macros to the assembler CDC gave out with the CDC1604.” I had to learn what macros were, design a language for them, all with no help.

I also like to interact with the real users and create what they actually need to do their work.

@Ignatz Teaching programming to 20 something people at the same time seems like a complete nightmare, especially with teenagers. Since some people gets some concepts and not others everyone needs to have it explained differently and thats even if they pay attention. People also haveing false expectations doesn’t help either. This is the main reason that I’ve avoided my high school’s programming classes.

@Progrmr235 - Apple would never release an app like Codea that ran Lua, I think one of the reasons they created swift was because they saw how popular scripting languages like Lua and JS have been in getting people intro programming and wanted to create their own proprietary system just like M$ did with VB, VBScript, C#, F# etc.

@Ignataz - I agree, I think the concepts should be introduced in stages just at the point the issues they solve start to become a problem / frustrating.

When I’ve taught programming in the past I tend to create an implementation of a LOGO like system so that the students can get visual feedback very quickly and generate some impressive results from just a few lines of code. I’ve done this with both Java and Python to great effect - but unless the students actually have an interest and a desire to learn then it’s an uphill battle (like most teaching :slight_smile: ). Interestingly a lot of people just don’t seem to be able to “get” programming and creating the mindset that allows people to make that jump is often the hardest part.

@CodingOnNapkins - sounds like a massive undertaking, I’d love to see how your project pans out.