TouchDevelop

Established: July 20, 2011

Create apps everywhere on all your devices! For Windows Phone and the web. In the TouchDevelop programming environment you write scripts by tapping on the screen. You do not need a separate PC or keyboard. Scripts can perform various tasks similar to regular apps. Any TouchDevelop user can install, run, edit, publish scripts. You can share scripts with other people by publishing them to the TouchDevelop script bazaar, or by submitting them as an app to the Windows Store or Windows Phone Store.

Go to www.touchdevelop.com to get started.

Watch Video: Create Apps for Hour of Code™ with TouchDevelop.

The Idea Behind TouchDevelop

The way in which we interact with computing devices is changing: instead of keyboards, advanced touchscreens become more common; mobile devices are often equipped with more sensors, such as location information and acceleration, and are always connected to the cloud.

TouchDevelop is a new programming environment and language built around this new reality. Its typed, structured programming language is built around the idea of only using a touchscreen as the input device to author code. It has built-in primitives which make it easy to access the rich sensor data available on a mobile device. In our vision, the state of the program is automatically distributed between mobile clients and the cloud, with automatic synchronization of data and execution between clients and cloud, liberating the programmer from worrying (or even having to know) about the details.

Get TouchDevelop Now

  • Resources for Educators

    Visit the TouchDevelop teaching website for a comprehensive list of available resources for teachers.

    Classroom Experience

    TouchDevelop has been used in many different classroom settings, including:

    University of Newcastle, Australia, during 2013

    1 semester course on Wireless Development for The Cloud: University of Newcastle students work with Microsoft

    Drew University, Fall 2013

    First Year College Seminar (Fall 2013) by Barry Burd

    Drew University, Spring 2013

    Mobile App Development (Spring 2013) by Barry Burd

    University of Maryland, Spring 2013

    CMSC436: Programming Handheld Systems by Atif Memon, http://www.cs.umd.edu/~atif/Teaching/Spring2013b/

    University of Calgary, Fall 2012

    CPSC 581 Human Computer Interaction II by Saul Greenberg, http://pages.cpsc.ucalgary.ca/~saul/wiki/pmwiki.php/CPSC581/Courses

    Graz Univ. of Technology, Austria, Fall 2012

    Mobile Computing by Wolfgang Slany

    IIIT-Delhi Indraprastha Institute of Information Technology, Delhi, India, Fall 2012

    CSE535, Mobile Computing taught by Vinayak Naik, http://www.iiitd.edu.in/~naik/teaching/mc/#ProjectsInAppStores

    University of Illinois, Urbana Champaign in Fall 2012

    ECE 190, “Introduction to Computing Systems” by Yih-Chun Hu

    University of California in Santa Cruz in April-June 2012

    10-week course (one quarter) with 20 students in Introduction to Computer Science class (1 phone per student)   http://classes.soe.ucsc.edu/cmps010/Spring12/

    Rainier Beach High School in February-April 2012

    13-week course with 1 hour per day with 30 students (1 phone per student)

    University of California in Santa Cruz in March 2012

    2 hours with 80 students in Introduction to Computer Science class (1 phone per student)

    Mill Creek Middle School in December 2011

    2 hours with 90 students in 8th grade (1 phone per 2 students); watch video

    Interlake High School in October 2011

    90 minutes with 30 APCS students – introduction to mobile app development (1 phone per 3 students)

  • Cloud Services for Researchers

    All TouchDevelop scripts are stored and analyzed in the cloud. For research purposes, TouchDevelop exposes a set of web services that allows you to query scripts. Learn more about cloud services for researchers…

    External Research Projects

    How About You?

    Are you running a research project involving TouchDevelop, or are you interesting in starting one? Send us an email. Visit the TouchDevelop teaching website for a comprehensive list of available resources for teaching and research.

  • Release Notes for the TouchDevelop Windows Phone App

    v2.10.0.0 beta (8/28/2012)

    Read the announcement blog post for a walkthrough of the new features in this update.

    This release is only available on Windows Phone devices that run at least Windows Phone 7.5 (Mango).

    New features:

    • tutorial videos
    • code synthesis
    • trace+replay, crash debugging

    v2.9.0.0 beta (6/25/2012)

    Bug fixes

    v2.8.0.0 beta (5/26/2012)

    Read the announcement blog post for a walkthrough of the new features in this update.

    This release is only available on Windows Phone devices that run at least Windows Phone 7.5 (Mango).

    New features:

    • structured datatypes allow you to declare tables, indices, decorators, objects
    • tags organize scripts in the script bazaar
    • create page-based user interfaces with pages and buttons
    • revamped in-app help and api search
    • featured screenshots
    • new samples

    v2.7.0.0 beta (3/21/2012)

    Bug fixes and changes to license terms

    v2.6.0.0 beta (2/21/2012)

    Read the announcement blog post for a walkthrough of the new features in this update.

    This release is only available on Windows Phone devices that run at least Windows Phone 7.5 (Mango).

    What is new:

    • Enhanced user profiles: picture, about-me text, website
    • User scores: compete with other script writers by earning hearts and using features
    • Improved comments: speech-recognition, ♥, profile pictures, consolidated forum
    • Redesigned script editor
    • More events: tap on anything on wall
    • Recycle code with libraries
    • Create libraries
    • New APIs to access devices in your home network
    • New Samples

    v2.5.0.0 beta (12/20/2011)

    Read the announcement blog post for a walkthrough of the new features in this update.

    This release is only available on Windows Phone devices that run at least Windows Phone 7.5 (Mango).

    New features:

    • New tutorial that guides you through the app
    • Pick pictures and sounds from the web
    • Pick colors
    • Better organization of installed scripts
    • Semantic zoom: pinch in action editor
    • General discussion forum in the app
    • Pin any top-level page
    • Many bug fixes

    v2.4.0.0 beta (11/11/2011)

    Read the announcement blog post for an overview.

    This release is only available on Windows Phone devices that run at least Windows Phone 7.5 (Mango).

    New features:

    • Receive push notifications when someone does something related to your scripts; you must opt-in via the Settings menu in the app or on the web
    • Updates: publish a script update (same author, same name), and TouchDevelop will make it easy for everyone to find and get the latest version
    • Discussions: write comments, reply to comments; you will find the new discussions screen in the “rate and review” dialog for each script.
    • Simplified reviews: No more complicated stars and text, you can just do “+♥” or “-♥” to cast your vote.
    • New APIs for live camera access, geo augmented reality and to query more contact information
    • Crowd-sourced IntelliButtons in the calculator: we analyze all published scripts in the cloud, and the app regularly downloads the latest prediction model from the cloud to offer you the operations upfront that you are most likely to use.
    • Many bug fixes

    v2.3.0.0 beta (10/7/2011)

    Read the announcement blog post for an overview.

    This release is only available on Windows Phone devices that run at least Windows Phone 7.5 (Mango).

    New features:

    • “Pin to start” of your script actions to the main phone start screen (as a consequence, the tiles screen within the TouchDevelop has been removed)
    • Support for fast application switching in Mango
    • Boards can now be shown “full” screen
    • New APIs to copy text to the clipboard
    • The “share” APIs now use the Facebook/Twitter/… accounts which you configure in the general phone settings, and not the one you use to sign in to TouchDevelop to maintain your scripts
    • “for each” loops now have a “where” clause to filter elements more easily
    • New APIs to access even more phone sensors and data

    v2.2.0.0 beta (9/13/2011)

    Read the announcement blog post for an overview.

    New and improved features:

    • Tutorial-mode
    • Editor improvements: Swipe between actions and statements, add new statements from calculator, button to go to called action
    • Introduced concept of events
    • Many bug fixes and other small improvements

    v2.1.0.0 beta (8/18/2011)

    Read the announcement blog post for an overview.

    New and improved features:

    • The Script Bazaar to find and install scripts from the cloud has now been folded into the main experience.
    • Many bug fixes and other small improvements.

    v2.0.0.0 beta (8/2/2011)

    Read the announcement blog post for an overview.

    New and improved features:

    • Script sharing in the cloud
      • Share scripts with other people by publishing in the script bazaar
      • Share screenshots, write reviews, compete on leaderboards
      • Automated script backup in the cloud
      • View what other people are doing in the livefeed
      • Find scripts on the web: touchdevelop.com
    • Better scripts
      • Choose custom colors, icons (from billybarker.net)
      • View what capabilities a script uses
      • View the information flow of (published) scripts to decide if you want to install them, and what private information you want to expose
      • Language changes: multiple return values, “is invalid” property for all values, comments
    • Editor improvements
      • Selection of multiple statements
      • Better auto-completion using historical API usage patterns
      • Display expression errors, and fix them with a hammer
    • Interactive Wall
      • Search by text
      • Translate to other languages
    • Many new awesome samples, performance improvements, and bug fixes

    New APIs:

    • bazaar->leaderboard score: Gets the current score for the current script
    • bazaar->open: Opens the bazaar
    • bazaar->open leaderboard: Opens the leaderboard page for the current script
    • bazaar->open review: Opens the review page for the current script
    • bazaar->post leaderboard score: Posts the current game score to the script leaderboard
    • board->create anchor: Create an anchor sprite
    • board->create boundary: Create walls around the board at the given distance
    • board->create spring: Create a spring between the two sprites
    • board->create sprite set: Create a new collection for sprites
    • board->is invalid: Return true if the current instance is useless
    • Boolean->is invalid: Return true if the current instance is useless
    • color->is invalid: Return true if the current instance is useless
    • color->chrome: Gets the chrome color in the current theme (control background)
    • color->subtle: Gets the subtle color in the current theme (light gray)
    • contact->*: New kind representing a contact
    • contact collection->*: New kind representing a contact collection
    • datetime->greater or equal: Replacement for datetime->greater or equals
    • datetime->is invalid: Return true if the current instance is useless
    • json object->is invalid: Return true if the current instance is useless
    • languages->current language: Replacement for languages->current lang
    • languages->detect language: Automatically detects the language of a given text using Bing.
    • link->is invalid: Return true if the current instance is useless
    • link collection->is invalid: Return true if the current instance is useless
    • location collection->is invalid: Return true if the current instance is useless
    • map->add link: Adds a link pushpin on the map (ignored if the location if not set)
    • map->add message: Adds a message pushpin on the map (ignored if the location is not set)
    • map->add picture: Adds a picture pushpin on the map
    • map->add place: Adds a place pushpin on the map (ignored if the location is not set)
    • map->add text: Adds a text pushpin on the map
    • map->is invalid: Return true if the current instance is useless
    • map->view pushpins: Changes the current zoom and center so that all the pushpins are visible. This method has no effect if the map is not posted on a the wall yet.
    • media->search marketplace: Searches the Windows Phone Marketplace (type in applications or music)
    • message->is invalid: Return true if the current instance is useless
    • message->media link: Gets a url to the media
    • message->post to wall: Posts the message to the wall
    • message->set media link: Sets the url to the media
    • message->set source: Sets the source of this message
    • message->set time: Sets the time
    • message collection->is invalid: Return true if the current instance is useless
    • number->is invalid: Return true if the current instance is useless
    • number->to character: Interprets a number as a unicode value and converts it to the single character string
    • number map->is invalid: Return true if the current instance is useless
    • picture album->is invalid: Return true if the current instance is useless
    • picture albums->is invalid: Return true if the current instance is useless
    • pictures->is invalid: Return true if the current instance is useless
    • place->*: New kind representing a place
    • place collection->*: New kind representing a place collection
    • playlist->is invalid: Return true if the current instance is useless
    • playlists->is invalid: Return true if the current instance is useless
    • social->contacts: Retrieves the list of contacts
    • social->create place: Creates a place
    • social->search places nearby: Searches for recent tweets in a social network (twitter, facebook)
    • song->is invalid: Return true if the current instance is useless
    • song album->is invalid: Return true if the current instance is useless
    • song albums->is invalid: Return true if the current instance is useless
    • songs->is invalid: Return true if the current instance is useless
    • sound->is invalid: Return true if the current instance is useless
    • sprite->color: Returns the sprite color.
    • sprite->is invalid: Return true if the current instance is useless
    • sprite->overlap with: Returns the subset of sprites in the given set that overlap with sprite.
    • sprite set->*: New kind representing a set of sprites
    • string->is invalid: Return true if the current instance is useless
    • string->to upper case: Replaces to upper
    • string->to unicode: Converts a single character string into its unicode number
    • string collection->is invalid: Return true if the current instance is useless
    • textbox->*: New kind representing a mutable text box that can be posted to the wall
    • tile->is invalid: Return true if the current instance is useless
    • time->stop and close: Stops the execution and leaves the wall.
    • wall->clear: Clears the entries
    • wall->create text box: Creates an updatable text box
    • web->search images nearby: Searching images near a location using Bing. Distance in meters, negative to ignore.
    • web->search nearby: Searching the web near a location using Bing. Distance in meters, negative to ignore.
    • web->search news nearby: Searching news near a location using Bing. Distance in meters, negative to ignore.
    • web->search phone numbers: Search phone numbers near a location using Bing. Distance in meters, negative to ignore.
    • xml object->is invalid: Return true if the current instance is useless

    Removed APIs:

    • board->share: was useless
    • datetime->greater or equals: replaced by greater or equal
    • languages->current lang: replaced by current language
    • map->add pushpin: replaced by add link, add message, add picture, add place, add text
    • string->to upper: replaced by to upper case

    v1.2.0.1 beta (5/27/2011)

    Read the announcement blog post for an overview.

    • New fast game and physics engine (“board”)
    • Improved tiles on app home screen
      • Pinning of individual actions as tiles
      • Separation of tiles and scripts
    • Post on your Facebook wall directly from your script
    • Global variables (“data”)
    • Run all actions directly; enter arguments on wall if needed
    • Improvements in code editor
      • Selection of subexpressions
      • Extraction of subexpressions (a refactoring that introduces a new local variable)
      • Copy & paste of entire actions
      • Undo
    • Tutorial videos
    • Many new samples, performance improvements, and transition animations, and bug fixes

    New APIs:

    • media->create board: Create a board
    • board->*: Game and physics engine
    • sprite->*: Sprites on boards
    • social->create message: Create a message
    • social->search: Searches your favorite social networks
    • message->*: Messages
    • *->share: Easy sharing of text, images, etc. on your favorite social network
    • math->mod: Function to compute modulus
    • string->to location: Parses a string representing a geo coordinate
    • tile->set panorama: Marks a tile as a wide tile
    • wall->*: Directly interact with wall
    • web->rss: Fetch rss stream from web
    • web->xml: Fetch xml document from web
    • xml->*: Easily access xml elements

    API changes:

    old API new API
    math-pi math->π
    media->choose picture,media->has chosen picture,media->chosen picture media->choose picture(immediately returns chosen picture)

    phone->choose phone number,

    phone->has chosen phone number,

    phone->chosen phone number

    phone->choose phone number(immediately returns chosen number)

    senses->take camera picture,

    senses->has taken camera picture,

    senses->taken camera picture

    senses->take camera picture(immediately returns taken picture)

    social->choose email,

    social->has chosen email,

    social->chosen email

    social->choose email(immediately returns email)
    phone->message box wall->prompt
    phone->number box wall->ask number
    phone->string box wall->ask string
    phone->screenshot wall->screenshot
    picture->show picture->post to wall

    v1.1.0.0 beta (5/2/2011)

    Read the announcement blog post for an overview.

    • Many bug fixes
    • Better auto-completion in expression editor
    • Access to accelerometer, location, maps, translation services, web search, tile customization, charting, and more.
    • Take screenshots of your actions (if you want to show other people your code), and the execution wall; look for the “send screenshot to library” button under the “…” in the application bar.
    • API changes (see below). If you update an existing installation, all your existing scripts get renamed to “v1.0 …”. Since we changed APIs, your old scripts might have errors which you have to edit and fix yourself.

    New APIs:

    • senses->acceleration quick/smooth/stable: Access to accelerometer
    • locations->*: Access to GPS/geo-coordinates
    • maps->*: Access to Bing maps
    • languages->*: Access to Bing- and Hawaii-based translation services
    • web->search *: Searching the web with Bing
    • tile->*: Configuration of script tile properties
    • math->create number map: charting functionality

    API changes:

    old API new API
    engine->assert time->fail if not
    engine->stop time->stop
    phone->sleep time->sleep
    phone->now time->now
    json->get field json->field
    json->get boolean json->boolean
    json->get number json->number
    json->get string json->string
    senses->snap camera picture senses->take camera picture
    senses->has camerea picture senses->has taken camera picture
    senses->camera picture senses->taken camera picture
    web->deep zoom link web->link deep zoom
    web->hyperlink web->link url
    web->image link web->link image

    v1.0.0.0 beta #0 (4/9/2011)

    Read the announcement blog post for an overview.

    • v2.10.0.0, 8/28/2012
    • v2.9.0.0, 6/25/2012
    • v2.8.0.0, 5/26/2012
    • v2.7.0.0, 3/21/2012
    • v2.6.0.0, 2/21/2012
    • v2.5.0.0, 12/20/2011
    • v2.4.0.0, 11/11/2011
    • v2.3.0.0, 10/7/2011
    • v2.2.0.0, 9/13/2011
    • v2.1.0.0, 8/18/2011
    • v2.0.0.0, 8/2/2011
    • v1.2.0.1, 5/27/2011
    • v1.1.0.0, 5/2/2011
    • v1.0.0.0, 4/9/2011
  • External Collaborators

    Nigel HorspoolUniversity of Victoria

    (Former) Interns

    (Former) Visiting Researchers

  • You might also like:

    Associated research groups: