RPi Education

The Manual
The manual was completed in late 2012 by members of the Computing At School working group. It was made available via the Raspberry Pi foundation on the 2nd January 2013.

It is aimed at the project's target audience, children, so that they can take their "First steps in Computing and Computer Science".

Originally contributions to the educational manual could be placed here in the Manual contribution page.

Now there is a thread on the Raspberry Pi Forum for errata, corrections and omissions.


 * Raspberry Pi Educational Manual January 2013

Your Projects
'''Doing a project at school or have a Raspberry Pi Club? Add it in this section to allow others to follow your progress!'''

Please add details of your group and what plans you have for the RPi or provide a link to your homepage.

Swansea ITeC
We're running a 'Raspberry PITeC' project unded by an RSC Wales Technology for Learning Small Grant program to engage our Traineeship learners in more hands on IT. We're keeping a blog of the process - Social Pi - which staff and learners will contribute to and as part of the grant process will be releasing all resources we create, which will probably involve a Moodle course, back into the community. We're also maintaining a Diigo list of useful resources we find along the way.

Puppy hacker School
For smarter kids of all ages, teachers, self-tutored and the fast learner. Based on doacracy principles of learning by doing Puppy Hacker School is open for learning on your existing hardware, using Puppy Linux. Whilst awaiting your first punnet of raspberries, get cracking. All bones welcome.

Computer History Museum, Silicon Valley
The Computer History Museum in the heart of Silicon Valley in Mountain View, California, has an educational program which provides resources to educators and students from pre-school up through graduate school levels. Museum staff and volunteers provide tours of the museum's exhibits that contain the largest collection of computing artifacts in the world, from the abacus through massively-parallel supercomputers. Modern computing fundamentals are introduced, from how individual transistor circuits hold binary values, through data processing, input/output, short and long-term storage, and a wide variety of software, from the earliest punched card programs to current operating systems and programming languages. We will be coordinating hosting Raspberry Pi user groups in the area after boards start being delivered, and will provide assistance to educators and students in setting up their R-Pi systems and learning how to perform software development, from games to whatever anyone wants. We will also participate in developing educational documentation in the eLinux.org R-Pi wiki and contributing to the Computing At School (CAS) initiative.

Manchester Grammar School Computing Society, The
A new co-curricular club for Y9 boys aimed squarely at the new "UK Computing in Schools" initiative. Details of what we're doing are on the MGS Computing Society page.

Winsford E-Act Academy Programming Club
This is an after-school club set up to encourage students to learn programming and more about how computers work. There's a blog site to support the club at teampython. We are very excited about the Raspberry Pi and can't wait to get our hands on one. For the time being, we are learning Python 3 with Pygame. To get the students used to using Linux, we are using a remaster of Puppy that's available here: RacyPy2. Anyone who wants to join in online or share ideas is very welcome!

Trinity School Computer Club
Plans for setting up the club based on headless RPi is shown in the RPI_Trinity_Computer_Club page.

Kent - School of Computing, The University of
Many of both the students and staff at the School of Computing have been following the Raspberry Pi for a long time and are eagerly waiting to get started on projects using them. We are also strong supporters of the Foundation's objective in getting more young people interested in "real" computing rather than just playing games or web browsing.

Manchester - School of Computer Science, University of
Pi Projects at Manchester. We've got a competition for the best Raspberry Pi Project starting soon, and are getting activities together for schools and youth groups.

We want to use the Raspberry Pi with a simple hardware board and set of downloadable activities to use it to encourage young people (or anyone else) get into embedded computing. We're currently looking at piface for the interface board and trying to come up with little activities to do. We've got some ideas but would love some more if anyone else wants to get involved.

We already run Linux workshops for schools and the National UK Schools Animation Competition, which uses Scratch.

Programming languages
Items in bold specifically support the Raspberry Pi device


 * http://www.kidsruby.com/ - Have fun and make games, or hack your homework using Ruby! Just tell your parents or teachers you're learning Ruby programming... ;)
 * Lazarus, the cross-platform IDE for Free Pascal, a 32 and 64 bit professional Pascal compiler
 * http://scratch.mit.edu/ - Graphical OO-based visual programming environment.
 * http://www.alice.org/ - Similar to scratch AFAICT
 * http://python.org/ - The original 'designed for teaching' language of the 90s
 * http://lua.org/ - Small, extensible and fits in your head
 * BBC BASIC - The original 'designed for teaching' language of the 80s - A large number of implementations are listed here: http://www.bbcbasic.co.uk/bbcbasic.html
 * Object Pascal (aka Delphi) - a modernized version of the Pascal language, with OOP and much much more. A fantastic language that is easy to learn, read and write. It is also a very versatile language that can be used for Desktop apps, Daemon/Services, Embedded system and Web development. See Free Pascal on RPi.
 * http://basic256.org/index_en - Another BASIC variant with integrated IDE and simple graphics.
 * C/C++ via GCC + CMake build system for advanced use.
 * Alice (http://en.wikipedia.org/wiki/A…..(software)) – event-driven object-oriented programming via drag-and-drop programming. A variant with an even stronger storytelling approach is Story Telling Alice.
 * Baltie (http://www.sgpsys.com/) – graphics-oriented programming to execute commands, conjure pictures, exercise logical thinking, etc., via play and imagination.
 * CiMPLE (http://www.uptosomething.in/we…..log/?p=531) – visual programming language for the Indian iPitara robotic kit with a strong resemblance to the C programming language.
 * E-Slate (http://e-slate.cti.gr) – exploratory learning environment workbench and pre-fabricated, interoperable computational objects. Software Microworlds are easily constructed by plugging components in various configurations, and the behavior of both components and Microworlds can be programmed in a Logo-based scripting language implemented in Java.
 * E-Toys (http://www.squeakland.org/) - an educational tool based on Squeak Smalltalk for teaching children powerful ideas via a media-rich authoring environment and visual programming system.
 * Fluxus (http://linux.softpedia.com/progDownload/fluxus-Download-15847.html) - reads live audio, OSC network messages, keyboard, or mouse input for simple game development, and a physics engine is included for real-time simulations of rigid-body dynamics. The built-in Scheme code editor runs on top of the renderer, allowing editing of scripts while they are running.  Fluxus supports procedural modeling and animation, texturing, and basic material properties.
 * Frink (http://futureboy.us/frinkdocs) - a full-featured programming language for physical computations which runs on the Java Virtual Machine and has both a terminal-like interface as well as a standard program editor.
 * GA Viewer (http://www.geometricalgebra.net/gaviewer_download.html) - open source Linux graphical calculator for Geometric Algebra (GA) for physical applications, a mathematical lingua franca uniting and replacing vectors, quaternions, differential forms, complex analysis, many linear algebra and tensor applications, and homogenous and conformal systems. It condenses the full, relativistic form of Maxwell`s equations into just four symbols and also works well in every other area of physics, including quantum mechanics.
 * Guido van Robot (http://en.wikipedia.org/wiki/G….._van_Robot) – robot control program similar to Logo or Karel, with a minimal Python syntax. A variant that includes the full Python syntax and a canonical set of lessons called RUR-PLE also exists.
 * Hackety Hack (http://en.wikipedia.org/wiki/H…..ckety_Hack) – Ruby-based environment aiming to make learning programming easy for teenagers.
 * Karel, Karel++, and Karel J. Robot (http://en.wikipedia.org/wiki/K….._language)) – for absolute beginners, used to control a simple robot in a city consisting of a rectangular grid of streets. Karel is its own programming language, Karel++ is a version of Karel implemented in C++, and Karel J. Robot is a version of Karel implemented in Java. NCLab offers free Karel programming (albeit with a modified syntax closer to Python) through a web browser.
 * Kodu (http://en.wikipedia.org/wiki/Kodu) – entirely icon-based Microsoft Research project for younger children and especially girls. Programs are composed of pages, which are divided into rules, which are further divided into conditions and actions, and conditions are evaluated simultaneously. Designed for game development and provides specialized primitives derived from gaming scenarios. Programs are expressed in physical terms, using concepts like vision, hearing, and time to control character behavior. Available as a free Windows download in public beta and academic forms, and as a low-cost Xbox 360 Live download.
 * Laby (http://www.pps.jussieu.fr/~gimenez/laby) – teaches various programming languages (OCaml, Python, Lua, Ruby, C, Java, Prolog and Perl) via ants and spider webs.
 * Learn to Program BASIC (circa 1998) – BASIC interpreter with an interactive course intended to teach the language to middle school students. Game-specific additions to the BASIC language include 2D sprite support. Programs written in "LTPB" could be executed on computers without the software by means of a freely-distributable "runner".
 * Lego Mindstorms (http://en.wikipedia.org/wiki/L…..Mindstorms) – Lego sets combining programmable bricks with electric motors, sensors, Lego bricks, and Lego Technic pieces (such as gears, axles, and beams). Mindstorm programs can be implemented in Logo, BASIC, Java derivatives, Smalltalk, and C.
 * LegoSheets – a programming language for the Lego Mindstorms based on AgentSheets which had a less steep learning curve than Brick Logo.
 * Mama (http://en.wikipedia.org/wiki/M….._(software)) – object oriented programming language for young students in a subset of their local human language, both left-to-right (LTR) and right-to-left (RTL) syntaxes. A variant of Mama was built on top of Alice for scripting of 3-D stage objects for building 3D animations and games.
 * OfLiveCoding (http://code.google.com/p/oflivecoding/) - allows modification of a Javascript program at runtime, allowing real-time views of how the modifications affect the behavior and flow of the executed code.
 * Phrogram (http://en.wikipedia.org/wiki/Phrogram) – second-gen Kid"s Programming Language is a commercial easy-to-learn programming language and integrated development environment (IDE) that emphasizes graphics and sounds, is a simplified structured language, offers component-based development features such as classes and methods, and is modeled on Eclipse and Visual Studio .NET IDEs to help transition to them.
 * Processing (http://processing.org) - an open-source programming language and environment for creating images, animations, and interactions to teach fundamentals of computer programming within a visual context. Interactive programs creating 2-D, 3-D, or PDF output, supports OpenGL accelerated 3-D, projects run online or as double-clickable applications, and over 100 libraries extend the software into sound, video, computer vision, and more.
 * ProcessingJS (http://processingjs.org/) - Javascript version of Processing allowing code to be run within a web browser.
 * Pynguin (http://code.google.com/p/pynguin) – Python Turtle Graphics editor, interactive console, and graphics display area implemented in Python and the PyQt toolkit (in contrast to the wxPython of PythonTurtle). Meant to be an easy environment for introducing programming concepts to beginning programmers.
 * PythonTurtle (http://en.wikipedia.org/wiki/P…..thonTurtle) – LOGO-like turtle graphics implemented in wxPython. There is also Python standard Turtle graphics module (based on TK), and Python Turtle Demo examples for using Python and turtlegraphics in an educational setting.
 * RoboMind (http://en.wikipedia.org/wiki/RoboMind) – educational programming environment that lets beginners program a robot via popular programming techniques, some robotics, and artificial intelligence principles. The robot can be programmed in Arabic, Chinese, Dutch, German, English and Swedish.
 * Stagecast Creator (http://en.wikipedia.org/wiki/S…..st_Creator) – visual programming system based on programming by demonstration via movement of icons on the screen, and it generates rules for the objects (characters). Users can create two-dimensional simulations that model a concept, multi-level games, interactive stories, etc.

Communities
 WISE Summit - 1,000 top decision-makers, thought-leaders, practitioners and education stakeholders from over 100 countries share best practices  WISE Prize for Education - recognizes an individual or a team for a world-class contribution to education  WISE Awards - identify and spotlight each year six of the most innovative projects in education from around the world  WISE Publications - "Innovation in Education: Lessons from Pioneers around the World"  Learners' Voice - encourages students aged 18 - 25 to make their voices heard as full delegates, participating in sessions, conducting video interviews, blogging and tweeting on a year-round basis  Online Collaborative Web Platform - interactive knowledge base that offers a wide range of tools  MyWISE - social networking that enables the WISE community to connect and share knowledge and best practices on a continuing basis  Learning World - weekly TV magazine program on education developed in partnership with Euronews broadcast 16 times a week to 155 countries in 11 languages  WISE Haiti Task Force - brings together innovators and successful projects that can contribute to rebuilding Haiti's education system</li>  WISE Program for Education Leadership - helps prepare newly appointed education leaders from the developing world</li> </ul></ul>
 * http://madlab.org.uk/about/ - The Manchester Digital Laboratory
 * The Science, Technology, Engineering and Mathematics Network, UK - This covers all the red tape that is necessary when working with children, as well as networking with other like-minded volunteers to share ideas.
 * Raspberry Projects - Site dedicated to blogging plans as well as showing off completed projects.
 * SchoolForge.net - SchoolForge's mission is to unify independent organizations that advocate, use, and develop open educational resources.
 * WISE-Quatar.org - The World Innovation Summit for Education (WISE) is an international platform for creative thinking, debate and action to raise the status of education through year-round programs to transform education by highlighting its leading role in global development, and by fostering innovative thinking and practices. Efforts include:<ul><ul>

Software suites

 * http://gcompris.net/-en- - GCompris is a high quality educational software suite comprising of numerous activities for children aged 2 to 10. Confirmed working on alpha boards.
 * http://www.sugarlabs.org/ - The Sugar Sweet, a desktop environment used on the XO One Laptop Per Child.
 * OpenSUSE Linux for Education (LiFE) - an open-source Linux operating system with educational software.
 * PuppyLinux.org/wikka/Education - Puppy Linux lightweight, open-source, educational distribution including OpenOffice, TuxType2, TuxMath, GCompris and SuperTux.

Libraries/applications

 * http://wiringpi.com - Raspberry Pi WiringPi GPIO library. Uses Arduino Wiring-like functions and is available in C, Python and Ruby.
 * http://arstechnica.com/gaming/news/2006/02/games-perl.ars - Developing games with Perl and SDL
 * http://www.pygame.org/ - Simple SDL wrapper for Python.
 * http://docs.python.org/library/idle.html - The Python IDE that comes with Python.
 * http://love2d.org/ - Something akin to pygame for Lua.
 * https://github.com/ntoll/RaspberryPy - An interactive set of programming lessons for Python, written in Python. To be built at PyconUK (http://pyconuk.org) during the sprints. :-)
 * http://www.khronos.org/openvg/ - OpenVG vector graphics library. Natively supported by GPU(?)
 * Hackety Hack - an open source application that teaches coding in a simple manner.
 * fpGUI Toolkit - an open source, custom drawn, cross-platform GUI toolkit implemented in 100% Object Pascal, and fully tested on the RPi. Thanks to the Free Pascal Compiler this toolkit can be used for Desktop and Embedded development work, with a single set of source code.

General resources

 * ComputerScienceForFun.org - Computer Science for Fun
 * ComputingAtSchool.org.uk - Computing at School Working Group
 * LiteratePrograms.org- An MIT project to develop programs which are self describing.
 * HappyNerds.net - External site listing educational programming resources for children.
 * ProjectGuts.org - An extracurricular program in the US teaching programming using LOGO-like language.
 * CodeAcademy.com - Learn how to code - it's interactive, fun, and you can do it with your friends - for free.

Articles/opinion pieces/trade bodies
In the UK:
 * http://royalsociety.org/education/policy/computing-in-schools/ - The Royal Society's Computing in Schools project
 * http://securiously.wordpress.com/2011/09/09/do-we-really-need-to-teach-our-kids-to-code/ - Teaching the skills associated with programming rather than programming as an aim in itself.

General:
 * http://www.edutopia.org/programming-the-new-literacy - Programming is the new literacy
 * http://bengoldacre.posterous.com/three-things-we-have-to-teach-in-schools - Ben Goldacre's list of "Three things we have to teach in schools"


 * http://blog.jgc.org/2011/09/teach-our-kids-to-code.html
 * http://www.osnews.com/story/6282 - An article on the command-line as a good interface for new users.

Direct action

 * http://epetitions.direct.gov.uk/petitions/15081 - A petition to the Department for Education about teaching programming in schools (UK only).

=References=