As I think I've said before I'm doing an open degree in computer science with the aim of teaching at some stage, I already do some classroom work and I am seriously considering starting a coding/computer science club. Since we will be going to the new spec GCSE in 18 months and doing python I am looking at doing something like a Python club and if things go well perhaps making it broader with some Pis and various sensors etc... (If the school will buy them.... (And yes, I know I said I didn't see the point in RPIs but I'm willing to try them)) Anyway...
I'm still a beginner in Python but have a background in PHP and general web development and obviously computers/computer science. But what do I do in the club to make it fun for the kids? What do other people do?
Ideally I'd like a mix of kids, some with a little programming experience and others, probably the majority, with none at all and I need to get all these kids hooked from day one. I've ordered myself a PiLite which is an LED matrix board, 126 LEDs with built in driver specially designed to work with the Pi and a PC over usb/serial, they would be great but I only have one! Pygame looks promising.
Anything I've missed here? I don't want it to be just another boring lesson, I want to encourage the kids to work on their own projects. Once they've got the basics of Python down I'd love for them to come in one evening and show me some amazing project they've come up with.
I'm looking to start a coding club after half term too.
As a lot of our kids have not done any programming yet, I'll be starting them off in Scratch: Scratch - Imagine, Program, Share
I'm planning on first of all getting them all to make a short animation just to get them used to the software and the idea of stepping-through code, then we will make a Pong clone to teach them about variable, statements and loops. I am undecided whether to then move on to something more complex in Scratch, such as a Space Invaders clone, or shift to Python; I'll judge the kid's abilities at that point and decide.
When I get to the point of showing them Python, I'm planning on first of all running them through some basic "Hello World" type programs with a bit of user feedback, just to get them to apply what they learnt in Scratch to Python and so that they can see how the basic makeup of a program is the same, only the structure/syntax changes.
I'm not planning on really having any limits as to ability levels as I want this to run more as a club than a lesson, so I'll have materials ready to go through with them but largely leave those more confident coders to do their own thing and encourage them to work on some sort of project, obviously with the added benefit of being able to help each other out and also ask me for help when they're really stuck. That's pretty much how we run YRS and it seems to work well.
Of course I'm also planning on doing demos with Arduino and similar tech, anything I think might create a spark in some of them or inspire an idea.
EDIT: meant to say, R-Pis are great for clubs like this as it means you can let them loose to experiment without fear of them doing any serious damage (you just re-image the SD card if it all goes Pete Tong!), plus they're cheap enough that most kids can get their parents to buy them one to use at home if they really get in to it. Having GPIO allows you to show them some hardware programming too, again on a device cheap enough not to be a total disaster if they short something. This is what the R-Pi was made for!
Last edited by LosOjos; 4th April 2014 at 01:11 PM.
Do you currently have the RPIs as a school? Or are they going to buy you some?
My PiLite arrived and it seems brilliant for the kids. Fits onto the Pi and has the same form factor, easy to access with Python and I think it's a great springboard, for lessons it would be fantastic and brilliant as a club starter but £50 for the board and a Pi... not gonna happen, not for a club anyway.
Sounds like you have a good plan sorted there. I think if we had a class set, or even 10-15 Pis it would make it a lot easier, I've looked at Minecraft Pi edition and it looks great. The kids all know minecraft anyway! We do Scratch here and personally I find it so boring! But if the kids have no programming experience whatsoever then it's probably a good place to start. But how are you going to bring Python up so a similar level of fun for the kids? I'm sure they will get the same buzz as us when their code works for the first time but keeping that interest seems to be the harder bit. With a CLI there's only so much you can do, simple ASCII art interfaces really. Or are you going to go for more GUI stuff? The other thing that I've noticed is PyGame which may or may not be a useful tool in lessons/clubs. Seems fairly complex for starters but could work once they get the hang of Python.
I *believe* we have some Pis knocking around as our previous NM (a mate of mine) used to run a coding club here and he was big on the Pi (it was when they were first released). If we don't, I'll set up a VM and run Raspbian inside that to get them used to it until I can either get the school to buy a batch of Pis or the kids themselves convince their parents to buy them their own!
As for keeping Python interesting, did you have a look at that teaching Python with Minecraft eBook? this worked really well with my daughter, as you are essentially creating your own mods for Minecraft using Python, so as they're learning new elements of Python, you then get them to apply it in some way to a mod. For instance, we made an "auto build" mod which using arrays and 'for' loops built a structure in front of your character. To get to that point, my daughter needed to understand data types, how to use arrays, the flow and control of a for loop, how if statements work, how functions pass and receive data and so on. Sounds like a lot of work, but that book builds the student up slowly, expanding each step from the previous. Now I'm not saying that will be interesting to all the students, but I hope it will be to most as it gets them interacting with a game environment without having to worry about complex graphics rendering routines.
PyGame is great and I'd certainly like to get them using that eventually but I think only the most gifted of students are going to get to a point where they can do anything interesting with that by the end of the first year (I'll only be seeing them once a week). That may be something I reserve for those who return for the second year...
This could all change of course once I get started. I've been dropping in on some KS3 classes lately and it's clear some students just 'get it' while others really don't. In one class, the Scratch programs ranged from scripted animation with no interaction right through to a fully functioning game with high score list. I imagine only those kids who really get it will turn up to an after school club and those who aren't doing so great will at least want to understand, so they should be a good group to work with. What I really need to do is layout a progression plan ahead of time so that I can tailor it to the individual, i.e. spend more time in Scratch with the weaker students and 'fast-track' the gifted ones in to Python.
I'm keen too to get the better coders helping out the weaker ones, we do this at YRS and you can see the weaker kids feel motivated by the stronger ones and the stronger ones really cement their knowledge by explaining their work. Education by stealth!
What are you going to use to virtualize raspbian? I believe the only way to do it is to use Qemu as you need to emulate the Pi's ARM architecture. I had massive headaches with that on Linux though the NM had no real issues with a Win7 host. That's what put me off using something like Minecraft Pi since I'd need to virtualize the Pi environment. Not impossible though.
Every Thursday I go into the classroom as a TA/trainee teacher so I get to see what the kids get up to with scratch, some like you said, really take to it. They are told to make a maze type game in scratch though a few have done their own thing. One has made a maze game with bad guys which fire bullet sprites, you can shoot back, collect ammo, keys and even a little shield which lasts a few seconds. One is making a flappy bird type game too. Problem is, most of them find it stupidly boring, and I really don't blame them! they do this stuff every single year, from 7 to 11 and IMHO scratch is a primary school tool, year 7 at a push. After that, much like the rest of the curriculum, it's not a challenge. It's just something they do to get a grade. Anyway, I digress!
It'd be interesting to know how you get on emulating the RPI architecture and what not!
I wish back when I was in school they ran some sort of "Coding club"
I don't mean to sound insulting but I know I wouldn't have been terribly interested the Raspberry Pi/LED boards/Python at all
Just my two cents here, why don't you keep it current, keep them interested.. Make android apps.
At the end of the day, it's java. The kids will be keen to learn as they will be able to see their own creation on their phones and show off to their creations: calculators, soundboards etc etc etc, things they could even use during other lessons.
There's also a few even better incentives.
Everything to do it is free, there's a built in emulator in the ADT. It does run like crap but it works for debugging purposes, if you have tablets you can enable developers mode on them and actually use the devices for debugging.
The best incentive is this, $15 one off fee for the developers license to Google to publish to the android app store. Googles adsense program extends to mobile devices through AdMob which is VERY simple to implement.
Here's the best statistic, I made a truly awful app, a Celsius to Fahrenheit converter. It's made me £200 since Christmas.
If there was a coding club when I was back in school, I would have been straight there. If they were teaching java, I would have been there quicker. But if they were to show how to make apps, you wouldn't have been able to keep me away...