I am organizing a code camp for middle-school aged kids and need some ideas. We are giving the kids a Raspberry Pi to take home at the end of the camp and I want to foster the idea that they can do more than read instructions and repeat what is written down. I am trying to spark something in them. To that point, I have been limiting my research to JavaScript and Python.
There are several great starter projects on AdaFruit, etc. but they are single session projects. I am guessing I could staple a few of those together for a five day class, but I would rather have a cohesive curriculum.
Has anyone else done something like this? Am I failing at Google-jitsu?
Top comments (6)
There are a few details that might help those who want to give advice.
1) How long is the camp, and what is the prospective session schedule? For example, one week, M-F with a morning session from 8:30-11:30, lunch from 11:30 to 1, and an afternoon session from 1-3.
2) If there are multiple sessions and topics, how are you going to have the kids schedule their time? Can you assume that if someone picks a python track that they will get consecutive sessions, and understand prerequisites for the later topics.
3) In addition to the RaspberryPi, what tools are available? Will they have a screen and keyboard to plug into the pi? Will they program on some other computer in a lab and then move code to the pi?
All that said, I have done one-day code camps with two 3 hour sessions on Python for kids. I blogged about that experience: agilecoder.net/2015/06/15/what-I-l...
If you have them for a week, and can build a progressive curriculum, then basing it on the Hello, World! python book in my post is a great idea. It's perfectly reasonable that by the end of the week the kids would be able to follow along and code the skiing game in the book, as well as make their own modifications.
I wish I could heart this more than once. Your blog post hits home.
The kids we are working with are from several disadvantaged schools here in Albuquerque. Our first take is that we will get better participation if we can cover as the need for child care during one of the school breaks. So we will be running the camp for five days. We are using all Raspberry Pi and will be providing these kids with computers, keyboard, mouse and screen for the class. They take the system home at the end of camp.
The topics are a big problem. I am trying to take the approach that these kids need not have ever used a computer before. The first day is probably going to be spent getting used to NOOBs. From there? I don't know. I have seen several approaches and theories on the best way to introduce programming concepts before breaking out code. Sadly, I haven't seen a condensed curriculum around this.
Have you looked at the offerings at code.org/ and hourofcode.com/ ?
The former may be more than you're looking for, and the latter may be less than you're looking for, but they're both likely to be good starting points.
I started there and it has some pretty cool starts. That said, I am lazy and am hoping for a kit. We are trying to set up a five day camp that will give these kids a fairly immersive experience, something more than a collection of single day lessons. If I can't find anything, I will have to develop one.
The most important thing to remember is why your learners are interested in programming. What do they hope to produce? From watching movies and shows, I thought a programmer could typically do any of the following:
A 'code camp' probably won't allow you to cover all of these in-depth, but for each student you'll probably find a different reason they want to learn to code -- several, since few will have just one interest. A student who is interested in graphics may also be interested in audio. Find where these overlap, and you'll know what to cover. Single-session lessons will work well since the students are looking for breadth. Provide resource suggestions for those who want more depth. Five days is not a lot of time, but covering one aspect well for a day will help ignite that spark. Make your curriculum broad, but with a central theme, e.g. "How do we get X from a computer using code?"
JavaScript and Python are great languages for working with the Pi, since they will transfer to a laptop or desktop or server fairly easily, and allow for cross-device uses such as viewing web code on a mobile browser, and communicating with the server through websockets. At that age range, I would bear Scratch in mind for those who are less familiar with concepts such as syntax, loops, and functions. Also consider something like SonicPi for audio. You don't have to teach music theory or run Adobe software, but think about what a student might like to create or do.
Remember what you thought when you realized this device in front of you made of silicon and attached to a screen, keyboard and mouse could do just about anything. What ideas popped into your head? Now realize the Pi makes a lot of those more accessible, plus gives you direct electronics control through the pins, and open source libraries give you access to more and higher-quality graphics, sound, networking, etc. with less effort than before.
It sounds like you're thinking well ahead, so I think you'll do great. Keep an eye out for where you can expand to meet a learner's desired topics and please post about your experience! I'd love to hear what success you have, as well as what challenges you meet.
Hi James!
Sorry this is kind of a late response but I'm on the webdev team at Adafruit, I'd recommend looking at adafruit.com/educators and getting in touch with our support team to figure out the right plan and materials for your class.
Personally I think our Circuit Playground Express boards might be a great fit, they have a ton of useful sensors, a few buttons, and a ring of RGB LEDs right on the board, and they use Python primarily although they can be used as an Arduino derivative as well. Those should keep everyone busy and keep you from constantly troubleshooting a classroom's worth of circuits.
learn.adafruit.com/adafruit-circui...
Good Luck! We'd love to hear how it goes!