I recently took part in a Microsoft Partners in Learning Virtual University series on TouchDevelop delivered by Jonathan ‘Peli’ de Halleux who works for Microsoft Research in Redmond, WA. The series was part of a PIL Appathon Competition for educators around Europe, the final stage of which will be a 24 hour Appathon in London just before BETT in January 2013. I had no idea what to expect from the series and had no idea about what TouchDevelop was. The series was excellent and I know have a firm understanding of the fundamentals of TouchDevelop and how to create simple apps using it. It was also a fantastic experience to be part of a community of learners from around Europe sharing experiences during online sessions and via PIL network forums.
I currently teach games development mainly using XNA with C#; however we have been looking at different tools to introduce students to programming such as Scratch, Kodu and MIT App Inventor, as XNA can be quite a jump for students who have never programming before. We are also keen to get students creating APPs and after learning about TouchDevelop I think it is a great platform to achieve these goals.
The really big difference about TouchDevelop and other dev tools is that it allows you to actually code and test your APP on a mobile device. You can choose to develop on a PC and then package it as an APP, but you can code on any device which has a modern HTML5 browser. So if your device can run IE10 or the latest versions of Safari or Chrome, you will be able to use TouchDevelop to code and test APPs on your device. I have used a variety of platforms successfully with TouchDevelop; on desktop PCs I have used IE10 in Windows 8 and Chrome in Windows 7. I have also used Safari on both the iPhone and iPad and on my Windows 7 phone I have used the dedicated TouchDevelop APP. So although TouchDevelop only creates APPs for the Windows Marketplace on WP7/8 and Windows 8, you can develop and test APPs via the TouchDevelop site on your favourite browser on pretty much any device.
Coding with TouchDevelop on iPhone
Another great part of TouchDevelop is the community aspect to it. The scripts (APPs) you publish are available to the rest of the community to use and play, which means if you don’t know how to do something you can look up someone else’s script doing a similar task and you will quickly find the solution. You can also take other user’s scripts and alter them and credit is still given to the original publisher as it shows how many variations of your scripts are out there. You can also build libraries yourself and then these libraries can be used by other users when creating their own apps and once again you can see how many scripts are using your library. One other great feature of TouchDevelop is the ability to have a high score table which the community can immediately contribute to as soon as you hit the publish button from your script. This is not publishing it as an app on the marketplace it is just making it available for the community to try out and it only takes 2 or 3 lines of code.
TouchInvaders High Score Table
TouchDevelop comes with a variety of libraries which makes most tasks easy to do. I have been working a lot with the game board, which has built in functions for dealing with sprites, collisions, physics and touch events.
Pong created in TouchDevelop
Once I got used to working with the interface and the language I was able to quickly put together some games. I created a touch version of PONG in about 2 to 3 hours, in which you use your finger to control a Bat by sliding your finger up & down to try and defeat an AI controlled Bat. I also created a Space Invaders clone called TouchInvaders which took me roughly about 4 hours to get a working version, although I did go back later and tweak it to add shields and play about with the controls.
TouchInvaders on iPhone
TouchInvaders running on Google Chrome on a Windows7 PC
TouchDevelop is still in its infancy and therefore has a number of minor bugs, but the Microsoft team are constantly working on these and improving it and adding functionality on almost a daily basis. Overall I would say that TouchDevelop has amazing potential and is a good alternative to some of the other tools out there that can be used to teach programming at a beginner’s level, however unlike Scratch it actually allows you to make games I would want to play.