Having demonstrated Codea at my local high school, I now have the opportunity to help a class of about twenty 16 year olds, learn Codea as an introduction to programming. I would like your help, if you have ideas or suggestions.
This term (semester if you prefer) is half over, so there is about 5 weeks left, with about 10-15 lessons available in total, of one hour each. Then there are only a couple of weeks in the next term before exams, which is another 5-10 lessons.
While this is clearly too short a time to learn anything too complex, the same students will be studying programming next year, and if Codea is successful in the next few weeks, it could be used for all of next year, and for other classes, too. So you might say the next few weeks are a trial.
While some of the students have home access to iPads, and will be able to work on those if they prefer, the school will provide iPads during class for anyone who doesn’t have one.
Before giving my thoughts, I’ll just list a couple of practical issues I’ll need to deal with.
LIMITED ACCESS
One is dealing with the limited access to iPads (in class only, for most of them). This limits practice time for students. Maybe they can go and work on one in the library out of class, but I don’t know.
The other limit is that there is only one of me to run around in the class, helping 20 students. Before long, I expect some students will be helping others, but it could be tough, early on.
BACKUP AND RESTORE
Another is how to get projects backed up after each class and reloaded for the next class (because they won’t get the same iPad every time). I’m thinking maybe a shared gist account (internet access permitting). I will probably have to restrict image use to the built in libraries because it will be too difficult to back up and restore images via a school network.
CONTENT AND APPROACH
But the main problem is how to get to do something the students will find interesting, in the time available. I think most of us agree that to learn Codea, you need to start with Lua, which has no exciting graphics. Too much of this, though, and they will get bored.
Fortunately, they have been learning a somewhat similar language, Visual Basic. That is my background too, and I found a lot of similarities with the look and feel of Lua. So I think I can start almost straight away with simple graphical projects, such as bouncing balls, using simple Lua code, but no tables initially. I’m sure I can get across the basic Codea drawing approach, and the basic Lua commands like for and if, at the same time as trying out relatively simple projects, even very early on.
I can also give them copies of the Lua and Codea ebooks I wrote (and any other useful material), and ask them to read them out of class.
I also need to provide opportunities for individual students to show some flair and do something themselves. I think we all feel the same way - we may be programming something that’s been done before, but we want to do it our way.
I should also allow for the fact that not all students may be mad keen on programming, even if this is a programming class.
So how about this approach.
I won’t teach (most of the) Lua and Codea basics by standing at the front of the class, instead I’ll ask them to read the ebooks (and other material) and bring questions to class. So the ebooks help me “flip” the classroom - the students learn new stuff as homework, and get to apply it in class (instead of learning in class and applying it with homework). This is important because I only have a handful of hours to work with.
I provide them with a project with several tabs, ranging from extremely basic to more challenging. They can work through the tabs at their own pace in class, with me walking around and troubleshooting.
The first tab might be a handful of lines that bounces a ball round the screen, with an if test to reverse direction (and teach them “if”).
The next tab might add more balls (I’d like to include a “for” loop, but that is difficult without tables - unless I introduce a very simple table type).
And maybe a whole lot more tabs. I don’t mind how many there are, as long as each one teaches something new. I’m wondering if the final tab shouldn’t go as far as physics objects, as a stretch goal for the enthusiasts.
The students have to complete a minimum number of tabs before continuing. And then on to a more complex project.
Providing code like this may seem like spoon feeding, but the idea would be to provide fairly basic code in each tab, that teaches some Lua or Codea technique, then ask them to change it to do X or Y, to show they understand it. So each tab provides something new, and asks them to apply it to some objective, with room to try something of their own.
I would like to get as far as a simple game by the end (early next term, after 7-8 weeks) - again with room for individual flair - but I haven’t thought what that might be.
And yes, I do know we have some game templates in our forum, like FoggyBummer and Lander, which might be useful for teaching, and I will look at those. But I need to start with much simpler stuff.
I think this is an exciting opportunity to confirm Codea’s suitability as a teaching platform, which is why I want to get it right. I also realise that what I’ve set out above is quite ambitious, and there’s quite a lot still to figure out, so maybe I’ll stop there, and see what you think.
If any of you would like to be involved in any way, please let me know.