Computing at School’s Raspberry Pi manual – call for contributions!

Liz: Commander Coder, one of our friends from Computing at School, left the message below on our forums last night. Because I know not all our forum visitors read the  Educational applications section, I’m copying what he posted here. Please consider whether there’s anything you can do to help out – we really value community input and we’d be really chuffed if you can take part.

I know a lot of you are interested to learn more about what we’re planning for this year’s educational release. Myra, our educational co-ordinator, has been working on the project for more than a month now, and I hope we’ll be able to publish something about her plans for the run-up to the next academic year later this week.

I’ll hand over to Commander Coder:

Over the past few months the Computing at School’s working group (CAS) has been working on a user manual to be ready for the educational launch.  The manual is destined to answer that question to be asked by many Raspberry Pi owners; “What do I do with it?”  The manual will be right there on the desktop when the Raspberry Pi boots up. Thus, the owner won’t need an internet connection to get started.

The manual will answer the question with a series of “step-by-step” guides and “type-in and run” experiments in computer science. CAS has agreed with the Raspberry Pi Foundation that the following languages will be available on the educational launch SD card in a few months. There are hundreds of other languages and systems, but these will be enough to give Raspberry Pi users an experience of computer science.

* Scratch
* Python 3 (including PyGame, PyQt4 and similar libraries)
* Greenfoot
* Geogebra
* Java
* and C/C++ (naturally)

We have created a series of experiments for the owners to try out but we’re hungry for more. This is a call to the Raspberry Pi development community for your contribution to the educational manual.

As in the good old days of magazine listings, we are looking for short programs followed by a description of how they do what they do and preferably how it relates to a computing concept. If you’d like to contribute you can contact me at [email protected].  Ideally, point me at a website which has your experiment, add it to the Wiki Manual section, or simply send a zip or tarball containing the program and readme. Please don’t send links to material you don’t own. We want your contribution, not someone else’s.

Thanks in advance for any contributions and any we use in the manual will be properly attributed to you. We can’t promise we’ll use all the contributions, and I’ve seen a lot of them already mentioned on the forums and the wiki, but we’ll try to collate the most appropriate for teaching computer science to the Raspberry Pi owners.

Even if you don’t want to contribute anything to the manual you can follow our progress on Twitter @rasp_filling, and our Facebook page.


Hrishi Mittal avatar

You might want to include Zed Shaw’s excellent book Learn Python the Hard Way. It’s written in the style of a manual for a complete beginner.

liz avatar

They’re looking for original submissions – but thank you for the tip!

Trevor Frewin avatar

Would 1-manual-fits-all work? Could we consider a manual with sections in it appropriate to different levels of student/experience and.or different focus?

scep avatar

The manual indeed has different sections for different abilities and focus.

Trevor Frewin avatar

Are we focussing on CAS-led initiative (ie: UK focussed) for this manual?
Ref Section 2.3 (p3) of [] -> “Communication and coordination”
… do we know what level networking topics (Key Stages?) will be opened up at?
I have been toying with the idea of virtualisation tutorial/applet set that at least opens the cloud/networked computing topics of [single system responsibility, scale, security and other] … because I do think (time issues aside this would would make a brilliant topic for later-years students.

scep avatar

It’s not CAS focussed or UKcentric or school targeted. It’s just a user guide/manual with listings and examples to teach you how to program and to learn some CS concepts and computational thinking on the way. Like the old Beeb, C64 and Spectrum manuals.

When we started this several months ago, no one else was writing a user guide, so we decided to :) (RasPi was kind of under the radar!). That’s all really, no set agenda apart from getting kids to have a bit of fun and learn stuff.

wombat avatar

Any chance of posting some work in progress versions of the manual?

scep avatar

Not at the moment. It would just turn into user guide by committee, with everyone piping up to say stuff like “don’t use Python 3″and “why haven’t you included language X?” etc ;) A lot of work has been done on the guide already in the last few months, whole sections are already finished.

What we are after is interesting, fun, useful content – little chunks of goodness that you think will help teach a certain concept – that we can plug in without modification or perhaps tweak for purpose. Ta!

Ray avatar

Yeah. Good point: keep the working group SMALL.

toby avatar

Is the first thing it says about python “Python 3 is a bit weird and not many libraries support it, install 2.7 instead (or 2.5 if you want to use Google App engine)”

John Green avatar

Python 2.7 is pretty standard these days. Default on most linux distro’s
Python 2.5 for google apps, but 2.7 should work for 99% on gae

Python 3.0 was a bad release, should be avoided according to the python developers. They advice to go straight to 3.1, which is awesome.

My brownies will go to the 3.1 choice.

Raspberry Filling avatar

A lot of the Python listings were originally written using 2.7 and changing them to 3.1 took minutes. Remember the manual isn’t for hardened programmers but for those very new to computing. I say, “Job done” if the readers are starting to be concerned about version numbers. :)

FirstPlaceFranz avatar

Im kind of amazed raspi uses python3. 2.7 is the main versions in use. 2.7 is definitively the most easy to find good tutorials on and in turn easiest to learn.

Petr Svoboda avatar

Good that Raspi is not holding back. Raspi will promote the use of Python 3. If everyone was using mainstream stuff just because *the most people use it*, nothing would ever progress!!!

SteveOll avatar

I use a data aquisition device (Labjack) for Mechatronics that uses a special Python function module to access the devices’ functions that only works with Python 2.6/2.7. I intended to get the Raspberry PI to use with that device so. I am hoping that the distro being used can allow me to revert to Python 2.6/2.7 so I can still use the device.

JamesH avatar

That should be perfectly possible!

Stephen von Takach avatar

What happened to supporting KidsRuby?
It used to be mentioned quite a bit, now it looks like Ruby is being ignored and it is by far the greatest language ever invented. I may be a little biased :)

User1 avatar

Right. Ruby should be included. Logical and natural language to learn. Fast results. +1(000) SvT (should be included in image)
So much more out there. Matz even got recently FSF award:

saif avatar

How about something simple like Turtle to start off with for ultra beginners to com,plete the spectrum this covers? Basic seems old hat these days…so nobody seems to want a BBC BASIC emulator…

Trevor Simmons avatar

it’s a bit old though here is a start: had the same algorithm though different syntax (I personally like the one written in assembly though I am bias ;) )

Edwin avatar

Liz, many schools systems have adopted methods used at Khan Academy. This should be a instrumental tool for education. Please review this link below.

liz avatar

We know Khan Academy very well – but thanks for the link (and I hope some of those reading who aren’t familiar with it will take a look).

lobster avatar

There is the official manual, I love it already . . . and for the mavericks we have Puppy Hacker School

Here is a bit of Python fruit

## Random fruit response
# Lobster March 3 2012

import random

verb = [‘erratic’, ‘unbelievable’, ‘unfortunate’, ‘inconsequential’]
fruit = [‘raspberry’, ‘pomegranate’, ‘banana’, ‘grape’, ‘loganberry’]
print “You are an” , random.choice (verb) , random.choice (fruit)

Dusty avatar

While i realize the point of this was to teach Python and not English, you might want to run that through a quick ‘s/verb/adjective/’ to at least not hurt the latter. Nice job choosing adjectives that all begin with vowel sounds so as to uniformly require the preceding ‘an’, however =D

Raspberry Filling avatar

Great. These little snippets remind me of the random poetry programs from many years ago. I did start creating an example like this but dropped it.

Steve Holden avatar

Wish someone had told me about the Python 3 decision. Not I’m going to have to rework my open-sourced teaching notes (sigh).

Henrik Treadup avatar

This is for kids that have never programmed before right?

Having several languages seems like a bad idea to me for several reasons.

It takes a while before you become comfortable enough with a language to be able to do interesting things. I.e. constants, strings, variables, print statement, input/output, assigment, if statement, loop constructs, arithmetic operators. If you have several languages there is a risk that you jump around between them and don’t learn the basic concepts. Being able to create a Hello World program in six languages is less usefull than to know six language constructs in one language.

Also you are fragmenting the kids with this approach. A kid that learns python is not directly going to be able to exchange programs with a kid that knows C or C++. Heck for beginners porting between C and C++ can be a real hassle.

I say pick one language and use that. I would assume that most of the computers that rasberry pi is inspired by had one language that everyone used. (Everyone used Basic right?) This allows things like exchange of code and exchange of knowledge between peers. You can help your friends and they can help you since you all know the same language.

I have no idea which language you should pick. I do however think that it would be better if everyone as a baseline had access to one and only one language. Don’t fragment the market for no good reason.

scep avatar

Python is the official language of the Raspberry Pi and also the flagship language of choice for the manual. But raspberries are not the only fruit. Reasonable steps have been taken to avoid child-fragmentation in the making of this user guide.

Raspberry Filling avatar

That’s right. Python 3.1 will be the main language and the one with which I expect most users to become familiar. The addition of other systems is to extend the value beyond pure programming and into other areas of school’s computing curriculum.

FirstPlaceFranz avatar

If there was only one programming language the RaspberryPi wouldnt be as exciting for different age groups. I know when I first started I used python. But python grew old and I wanted to learn a more common and applicable {A common language for making software.} language. So I became to expand my knowledge. The RaspberryPi needs the mulilanguage, that way it can keep kids of all ages interested in programming.

Bollard avatar

Yay Python 3! Currently trying to get Pygame for my Pi to work with Python 3 :D

adam avatar

Here’s a SUPER simple text editor I wrote. It uses TK, handles some basic file operations, such as opening and saving text files and writes out color preferences to a text file.

Let me know if you can use it.

FirstPlaceFranz avatar

Worked fine for me. Changing text / background colors reminds me of the googd ole days of microsoftPaint

JonB avatar

A Pi in the hand would help greatly – sadly I have to wait like everyone else. I would prefer to be trying my own advice out before committing to print – but sure, I have some ideas, and I’m already a member of CAS.

antiloquax avatar

Glad to see it’s Python 3.

Daniel Waterworth avatar

You’re missing out functional programming entirely?

Ian avatar

I thought that… then I thought, yeah, for good reason!

William H. Bell avatar

It would be great if something like this existed in France. I’m starting to put together some material for the French schools, but do not know of anyone working in this area as yet.

scep avatar

It can just be translated – it’s not UK or school specific.

Jim Manley avatar

I wouldn’t be so sure about that, especially for schools along the Côte d’Azur. You have to schedule the interrupt and downtime between 2 and 6 ~ 8 PM (makes afternoon tea seem positively barbaric, doesn’t it? ;) ). Espresso has to be programmed into the workflow at the appropriate setpoints, a baguette is mandatory equipment, and wine and cheese must be incremented by significant values. Oh, the hell with the computer, let’s just hit the beach! :)

birger avatar

scratch can be started off with turtle style programming using graphical building blocks.

There are also environments for turtle style graphics in python. One example can be found at

MatrixCat avatar

If software to help with geometry is to be included, perhaps consider something to support the exploration of electronics? Something like could be a great tool for those more interested in attaching electronics to the Raspberry Pi rather than just its programming aspects. I found it invaluable in trying out “what if” scenarios, and its collection of built in circuits helps in understanding basic electronic circuits as well as not so basic ones.

nickorossa avatar


Personally I use Yenka for designing basic electronic circuits.
Its aimed at the educational market as well.


fadedknight avatar

I’ve managed to get my kids (9 & 7) interested in Scratch as a result of this site (while we wait for our Pi). Its surprising how easy it is to get a seven year old programming if you start with making a cartoon cat fart on command.

FirstPlaceFranz avatar

When I learned python and PYgame , I learned it here ( ). I definetly learned alot from this tutorial. It was very helpful, and definetly causes you too think outside the box. The author of the blog, included examples and exercises that were really helpful. I would advise you too take a look at this great tutorial.

Raspberry Filling avatar

Looks like a good start for python and pygame. Nice one.

Raspberry Filling avatar

Thanks for the front page Liz. I changed my profile name to Raspberry Filling to avoid confusion; but Commander Coder lives on!

Kashif Ali avatar

So something like setting up Java and a creating a simple app would be useful? and then from there code projects snippets of small projects that have details of what is happening

psergiu avatar

Java ?
Begone, spawn of darkness !
Java is one of the reasons we lost a whole generation of good programmers.

liz avatar

True story: part of Eben’s seduction technique when we were both students was to proudly show me a 3d spinning torus with textures mapped onto it that he’d made run at blistering speed in interpreted Java. (It appears that it worked, too.)

JamesH avatar

Perhaps Eben could have a chat with the guy who wrote Minecraft, because that most certainly doesn’t run at blistering speed in Java.

scep avatar

Funky rendered doughnuts do it for me every time (but then I also found the Newton’s cradle demo on the Archimedes rather titillating).

Kashif Ali avatar

Well thats funny, with my system admin background, I normally use Python, and i just moved to Java :)

CashPoint avatar

For a Java I suggest trying Robocode.
It allows little ones to write a virtual robot (tank with radar and turret) in a few lines of code and battle it out with sample robots out the box or other robots – massive community, very addictive, 5+ year old application so should fit in the RPi – Robocode includes everything needed including a compiler.

Guus avatar

I was about to suggest the same thing. Robocode not only suits an individual, but can also appeals to groups (classes?). It’s easy to get started, but people don’t easily outgrow the framework. Highly recommended.

Duncan Thomson avatar

would have thought the arduino development environment might be a good fit, but maybe it’s too close to what the pi itself can provide? can a raspi host an arduino development system?

liz avatar

No reason why not – we’re actually talking to one of the Arduino guys at the moment about a potential marriage between the two devices for Maker Faire Bay Area. We may not get time to set it up, but that’s currently the only limiting factor.

Reggie avatar

I would also look at alongside the arduino too, as it introduces concepts that are based around using embedded devices alongside every day kit to explore a vast array of computer concepts. Definitely another string to add to the pi’s bow! so kids can quickly and easily start to learn about drivers, interaction between hardware types and how to represent the numbers in a meaningful way on screen :)

Saif avatar

Been to the RaspPi wiki on programming. It seems to be structured rather as a long single page containing little paragraphs on various languages with vague differentiation between the purposes of each language. In trying to do everything, for every level, for every language, it ends up not being a great place to start learning any. But I absolutely agree with you that contributions should not be just cut and pasted or just linked from existing sources…they should be structured to consistent standards, with line by line comments and explanations…as we used to get in old computer mags…

liz avatar

It’s a wiki – if you see something you think needs changing, change it!

Jack avatar

Any chance the manual can be made available to us lot after it’s finished? I’m not doing anything with mine at school but I was always intending on using my RPi to learn coding, so this should be really useful.

scep avatar

The manual will be free to anyone for download.

liz avatar

Definitely – it’ll be available to whoever wants it. (Learning things doesn’t stop when you leave school, after all!)

Colin avatar

Here’s a 64-year old who used to program many years ago in Fortran – now wishes to learn to program in Python and other environments. The starter guide/manual will definitely come in useful!

Joseph S. avatar

What about Sugar from the OLPC project? Have you considered offering it as the default environment? I think there’s a lot of potential there, to have a non-biased environment for teaching programming (and it’s all done in Python already).

If it’d still be Debian, then users can continue to simply use LXDE if they’d rather have that.

James Collier avatar

Why no Lua, it’s tiny, simple and is embeddable. It looks like it’s designed for the Raspberry Pi, add onto that Love2D ( and your onto a winner. Also it’s widely used in many games, so you could program bots in Half Life 2, create addons in World of Warcraft. It’s really really simple, debugging is a lot easier than most other languages I’ve encountered. Metatables are powerful for advanced users. Get rid of the confusion with arrays and dictionaries, with just the table. It just seems like the perfect starting language to me and I would be more than happy to write guides for it.

JamesH avatar

So, install it. Takes a few seconds.

Rosie avatar

I’ve been filming 18 episodes to teach children like me how to program using scratch on the raspberry pi. My dad has helped me by showing me some things and being my camera man. We have filmed 5 episodes so far and will finish filming in a few weeks time. You can watch my second episode here
The videos are to help my firends aged 8 to 13 years learn the things that I can do. There are some instructiosn to print out for each episode.
I have been learning some programming in python from my dad. When I finsih my scratch episodes I will start teaching how to program text adventure games using python.

Raspberry Filling avatar

Videos look great. I hope you continue and I hope you enjoy Python as much as Scratch.

Reggie avatar

I think you’re being slightly restrictive in not allowing externally sourced links, there is no point reinventing the wheel and the best resources out there really should be collated, perhaps not as the main thrust of the manual but as a section in it’s own right, with a review of links and why they should be included? It might be a set of tutorials or it could be a link to a coding bible that everyone uses. I think we should try and present as many resources to people as possible. within reason of course.

Andrew Ardill avatar

I would love to see this on GitHub or some similar place. There is no need to ‘design by committee’ or anything like that, however by opening the document up you enable the community is able to assist you much more easily.

If nothing else, the ability for the community to submit a pull request fixing typos will be well worth it. The only reason not to use a resource like this is if you intend the book to be proprietary (but you are giving it away…)

GilDev avatar

I think it can be good to have some Lua programming in this manual, it’s a lightweight language with a very simple syntax. I have 14 years old and it’s my favorite language between Lua/C/C++/Java !

Comments are closed