Today I’m making more python with the kids. This time we’re talking about the if statement. Based on Code Club project 5 – Gameshow, which I’ll go through with the kids on the big screen, this is a more sophisticated game that those kids who feel more advanced can take a look through and copy from if they wish. It’s the basic Blackjack 21 game. In my version you play against a slightly sassy computer opponent. It might be fun getting the kids to change some of the messages to make it even more acidic.
So I finally did it. After 2 years of teaching Code Clubs I finally started doing some Python with them. For a couple of reasons I’d not managed it previously. First of all getting Python onto the school computers was difficult for reasons I’ve discussed before. But also I wasn’t seeing sufficient mastery of Scratch to convince me that the kids would understand Python. But I went for it anyway, solving the Python install problem by using trinket.io/python instead of the installed version. I even let the kids all login to that site using the same account so they can save all their work, albeit in one big dogpile.
So how has this exercise gone? Well I began by using the Code Club worksheets. And to be honest they show evidence of the same concerns I had myself. This programming thing assumes a lot of prior knowledge. It’s hard and as a result the worksheets are a little too noddy. The kids quickly get bored of drawing a dog with ACSII characters because it’s much less engaging than the Scratch experience.
Given that the first couple of worksheets were so noddy I decided to start going through the worksheet with them on the big screen at the start of class. I did this for worksheet 2 – calculating your age. And it went better I think. I was able to throw some fun in by letting the kids guess (and be rude!) about my age. And it meant I could talk about stuff like the form of a function call and what a string was and so on. Some kids glazed over and some got it. And I should have been WAY more brief. But it worked.
So with some hesitation I recommend those wanting to start out teaching some Python should do so with some explanation and demonstration. Get the class sat down and do it in front of them. Talk to them and get them coding it with you. Then send them off to do it again solo. At least to begin with this seemed to get them producing working code. And best of all the accompanying teacher – you do have one of those don’t you? – sees what you’ve taught the kids and can help answer the kids’ questions.
A friend of mine just directed me to this rather excellent blog post by Katerina Pascoulis on Gadgette.com. It describes some of the lessons the author learned from becoming a coder that were unexpected and which flew in the face of what school had taught her. I think these lessons are just the sort of thing that we should be telling the kids in Code Club. I already do this with point number 5 – “Creating everything from scratch isn’t a good use of your time”. Although I do it by saying to the kids that there is one rule in Code Club – copying is allowed. In fact it’s encouraged. And then I go on to explain about code re-use and learning from each other. I’ll consider bringing in some of these other points to my Code Club introductions as well. But for now – go and read this. It’s a great post:
Show off time really. I’ve had this game in my head for literally years. Since I was a kid in fact when I had a physical real world version of this, only without the coins, which are my addition as a reason to actually go somewhere.
The idea is that the clock moves along the black lines which represent grooves in the tiles. Click tiles to slide them around. Arrange the tiles to make the clock reach the coins. You can keep sliding the tiles while the clock is moving. You can also slide tiles before you set the clock moving so you get a nice start. But once the clock is moving it keeps going.
This game uses a real line following algorithm that uses 2 sensors, one ahead and one slightly to the left. I wanted for a while to try writing a line following algorithm in Scratch. It’s fussy and difficult and mine in this game is far from perfect. Don’t try and do this with the kids at Code Club.
Under the line following is a sliding puzzle. This is much easier and uses Scratch version 2’s cloning code. So each tile is an instance of the main tile, which is hidden, and each takes care of its own movement. So when you click on one it looks around to see which way it can move. If it can move into an adjacent empty space then it does. Simple. Definitely easy enough to do with the kids. Feel free to steal the code. I’m pretty sure this could be used in a variety of other games.
Today was my first Code Club for this school year. And I had all these big plans. If you’ve been following the blog you’ll have seen some of my thoughts on how I could make my Code Clubs better. And today I put a bunch of those into practice.
The code puzzles idea went great. I’ll write a separate post about that. But my big plans to have the kids all use Scratch 2 on the MIT website didn’t work so well. We started out by telling them that they had to create users on the scratch site – this wasn’t my original plan. I’d meant to setup users for them so they could just be handed a username and password as they arrived. That didn’t happen. Poor planning on my part.
But the big problem was the internet connection. It just wasn’t up to the job at all. I don’t know exactly why but sometimes the web responded and sometimes it just waited and waited and waited without ever sending data to the browser. And of course the computers are so locked down there’s no way I can get at a command prompt to diagnose the problem. My best guess is that there’s something upstream – probably a proxy server designed to protect the kids – that is overloaded and dropping connections. The school has a slow 1.7 Mb/sec internet connection but it doesn’t look like a straightforward bandwidth crunch. I’ve seen those and they’re annoying but they just go slow. They don’t stop.
So today’s club was a lot of kids struggling to create logins – a trial in its own right since most usernames are long since taken on the Scratch site. And a lot of kids staring at a blank browser waiting for the internet to respond.
Not the triumphant start to Code Club that I’d hoped for.
So I guess the message I’ve learned from this is don’t rely on schools having good internet connections. And this is a message for Code Club because I find a lot of what they produce assumes a great deal from the school’s IT that might seem basic to you and me but in school is not a sure thing. Things like access to Notepad. Or the ability to install Python. Or a functional internet connection.
There’s a new Kickstarter project on the scene and it looks rather cool. Best of all it’s about teaching kids programming. It’s called Code Spells and the idea is that you play a wizard and your spells are something you create using code. It’s a wonderfully simple idea that I think could spark a kids imagination. The programming language is block based like blockly or scratch and kids will be able to share their creations. The developers are working, initially, on a single player sandbox version. After that they plan to make it multiplayer. And after that they’ll add creatures, NPCs and life of all kinds.
It looks like it’ll be a long development cycle. The beta isn’t expected to launch until November 2015 – yep, more than a year away. That’s a shame but it does look like a worthy idea and their early demos are very promising. If it takes your fancy then head over to the Code Spells kickstarter page to back the project.
By the way, this might be a good place to mention that I’m a gamer and I’ve backed a few games on Kickstarter. I’ve decided that I don’t like this idea of giving people money to develop the game. I think that once they’ve got your money it removes their incentive to get it finished. So for the most part I don’t back games on Kickstarter any more and I rarely buy early access games on Steam. But for Code Spells I might be tempted to make an exception.
Yesterday the BBC announced their new line up of children’s programmes meant to support the new school computing curriculum. They’re involving some of their top stars including Nina and the Neurons and Dick and Dom. The new programmes will include Appsolute Genius with Dick and Dom, Technobabble which will highlight various exciting digital innovations. In addition the next series of Nina shows, subtitled “Go Digital”, will include coding, how the internet works and 3D printing. My 6 year old daughter Catherine will be over the moon. She’s a huge Nina fan!
There’s plenty more information in the BBC’s own announcement which you can find at http://www.bbc.co.uk/mediacentre/latestnews/2014/computing-coding. In particular, though, I’m really pleased to see the obvious and deliberate overlap of subjects on the BBCs list of topics they want to cover. At key stage 3 (secondary school) they include Computational Thinking Algorithms, Programming, Data Representation, Hardware and Software, Internet Communication and Safety and Responsibility. These are all the same topics that Code Club Pro are trying to cover and that’s because they’re the topics in the national curriculum. And most importantly of all, these are the RIGHT topics. Despite the rather meagre description of the computing topics in the government’s new curriculum document, what’s there seems to have been well considered by people that actually understand what computing is about and how it can be of value to everyone, not just those who will grow up to become programmers.
Teachers and interested parents can find more BBC computing resources at http://www.bbc.co.uk/schoolscomputing.
I’m delighted to see the BBC, as always, taking the education of our children so seriously and doing such a great job of producing quality content that informs as well as entertains.
Here’s an audio version of this blog post for those that prefer to listen:
One of the things I’ve loved most about getting involved with Code Club Pro is that I’ve learned a lot about schools and classroom teaching of children. It’s a totally new world to me – I’ve never had any teacher training and I’ve never taught children before Code Club. So one of the problems I encountered in my first year was that some children will ask for help for every little thing while others will keep quiet. This means you end up spending all your time on certain more vocal children and that’s just not fair to the others.
One of my very good friends happens to be a school teacher and she told me about a technique she uses that I think would work great. She suggests giving the children 2 help tokens. They can ask the teacher for help twice and give up a token each time. After that – no more help. So they are encouraged, before asking for help, to try and solve the problem for themselves. That might be by reading, asking a friend or checking the board. If after trying to solve it themselves they still can’t progress then they use a help token and the teacher helps them. It’s a simple system that just might work. And it dovetails nicely with one of the key messages taught by Code Club Pro, namely that copying from a friend is not cheating when it comes to programming. That’s how programmers do things. They build on each other’s work. Pair programming is way that programmers share ideas. Shared code is another. And there are endless books and published articles explaining how complex problems can be solved in code. This is a key part of the programming world and we should encourage it.
One of the attendees, Simon I think, on my Code Club Pro training day was a teacher and he explained something to me that seems obvious but really got me thinking about how I help my Code Club kids when they have a problem. He said that whenever kids get stuck in class they immediately put their hand up and ask for the teacher to come and solve the problem for them. The same thing happens in Code Club of course but if we go over and debug their code so that it works what have we taught them about debugging?
One way to debug code is to try explaining it out loud to a rubber duck. It doesn’t have to be a rubber duck of course – it could be anything. The key is to explain out loud how the code works. Often when I’m trying to debug a knotty problem I call my wife over and explain it to her and in the process I end up realising what I’ve done wrong. She rarely has to even listen to what I’m saying but she’s kind enough to pretend. 🙂 So I think this idea combined with a proper stand-up teaching session near the start of term that explains to the kids about debugging and dry-running code in your head should help a lot with the volume of questions I have to attend to.
How about you? Are you deluged with questions from the beginning of a your Code Club sessions to the end? Do your kids solve problems for themselves? Isn’t that exactly what Code Club is trying to teach them?
It’s a BIG part of the joy of Scratch that the kids can show off what they’ve made. Too many schools are using the offline downloadable version of Scratch and never letting the kids upload them to the Scratch website. In some cases they don’t know they can and in many cases the school networks block those uploads. In both my Code Club schools the kids can’t open a browser window at all or even run Notepad! The computers are so locked down they’re near useless. Fortunately there’s a sneaky hack that lets you get a browser by typing a URL into the file explorer so we’ve been using the Scratch website that way but since we started doing that we’ve run into ANOTHER problem. The kids can never remember their usernames and passwords. So next term I’ve got a new plan. I’m going to create a bunch of usernames and passwords for the kids and hand them out at the start of term. They’ll be random names and passwords – nothing that can identify the kids themselves. And most importantly I’ll keep a copy of what they all are and who I gave each one to. So that when they come and say, “I can’t get back to my work from last week cause I can’t login”, then I’ll be able to help them. I’d *like* to be teaching them good practices for logins and passwords but the sheer number of kids having this problem was preventing me teaching them programming.
How about you? Have your kids been using the Scratch website or the downloadable version? Do your kids ever share and show off their work?