What to teach?
No kids today need to learn how to _use_ a computer -- most do that even before they start school. So if ICT teaching has to make any sense, it should be about something else.
Programming is one such thing. But it should not be programming animations or games using some fancy GUI point-and-click interface. That may be a lot of fun, but they don't really learn much from that that they haven't already learned by playing Sims, Minecraft or other games. I agree with the Raspberry Pi people that you need to go down to a lower level where you essentially direct the flow of every bit rather than have most things happening under the hood: You don't learn to read a map by using a GPS navigator, and the same applied here: If the essentials are automated so you only have to select between a set of preprogrammed behaviours, you don't understand what goes on. Sure, the end results can be pretty convincing: With GPS navigation, you can get quickly and surely to your destination, and with Scratch and similar game-builders, you can quickly get coloured icons moving and interacting on the screen. But both decouples you from understanding what navigation or programming is really about.
Hardware-wise Raspberry Pi is much more than needed, and programming it on a low level only gets you so far: Graphics and sound are done by complex and opaque graphics and sound processors, and even Linux gets between you and the machine, so you are not really in touch with the hardware. So you really need to emulate a simpler machine and programming model if you want to teach programming at a level of understanding higher than cut-paste-modify.
So forget about graphics and sound to begin with and start with the basics: Bits and numbers. And then show how you can build more complex data from simpler components and how programming is very much a game of defining data structures and making decisions based on structured decomposition and inspection of data. Don't try to motivate by solving "real world" problems. That just adds the complication of abstracting concrete problems to abstract data, which, while an important issue, is something you should not learn until you are thoroughly familiar with manipulating abstract data. (Abstract in the sense of not having an inherent "meaning").
Programming isn't the only thing to teach in ICT. There are all the non-technical aspects such as ICT in society, ethics, law, and so on. But programming -- especially at a low level -- imparts systematic problem analysis and solving and how to work in uncompromising environments, which are skills that are useful even outside ICT.