The BBC Micro:bit Coded by Microsoft Touch Develop
The BBC Micro:bit Coded by Microsoft Touch Develop
ABSTRACT
The chance to influence the lives of a million children comes once
in a generation. With the partnership between the BBC and several
technology companies, a small device, the BBC micro:bit will be
given to a million children in the UK in 2016. Moreover, using the
micro:bit will be part of the curriculum. This demo describes the
BBC micro:bit together with its software platform, based on
Microsoft's Touch Develop. The demo will illustrate the
architecture of the micro:bit and the software engineering hurdles
that had to be overcome to enable it to be used by children.
Evaluation of studies of the software platform are available and
early anecdotal evidence of the hardware. A video about the
micro:bit is available at aka.ms/bbcmicrobit.
Figure 1 The BBC micro:bit front and back
CCS Concepts
1. code.org which initially took up the challenge of getting the
• Hardware~Sensor devices and platforms • Applied K-12 students to code using a variety of online tools, and
computing~E-learning • Software and its engineering~Compilers subsequently has started training teachers in the USA. [7]
2. CAS (Computing at School) in the UK is an established
Keywords community of mainly teachers who create curriculum for
K-12 education; BBC micro:bit; Touch Develop, devices, cloud formal computer science courses nationally [3].
There is evidence that students and children are enticed by activities
1. INTRODUCTION where they can see, touch and change “the computer”, in addition
Computer scientists are continually looking at new ways to engage
to seeing code on a screen, as in .NET Gadgeteer [4]. The growth
and retain the interest of young students in the K-12 years. In recent
of interest in Arduino, Raspberry Pi and other small computers has
years, there have been several waves of new initiatives to get and
been considerable in the developer world. However, rolling these
keep children aged 8-13 (middle school) engaged in computer
out in schools presents the two challenges of cost and training.
science, for example: coding [6], computational thinking [10],
Gadgets, internet of things, and the maker culture are all attractive
games [11], robots [12] and storytelling [2] All of these are
goals, but they need to be at a cost that schools can meet with a low
successful when led by dedicated and qualified teachers.
barrier for entry in terms of skills required by teachers.
If a device can be made small enough to be cheaply distributed to
On the other hand, any initiative for large scale roll out of a new
millions of children, and if the accompanying software is engaging,
wave of computing should acknowledge that children learn and
intuitive and progressive, then there is a chance of making a leap in
grown up very fast, so that a progression of tools within the same
capturing the minds of an entire generation. The challenge is how
basic platform is highly desirable.
to scale out an experiment to influence an entire country of
students, or even globally. Two significant success at the coding Taking up these challenge, a multi-partner initiative led by the
level have been: BBC, the UK Department of Education, and including Microsoft,
is providing a million small devices called the BBC micro:bit, to
middle schoolers in the UK in 2016.
Permission to make digital or hard copies of all or part of this work for This demo describes the device, the programming environment,
personal or classroom use is granted without fee provided that copies are design considerations, and early evaluation. As the first paper on
not made or distributed for profit or commercial advantage and that copies the BBC micro:bit, it also serves as a landmark and reference for
bear this notice and the full citation on the first page. Copyrights for interested academics and teachers to join the movement.
components of this work owned by others than ACM must be honored. Specifically, the demo addresses the software engineering of
Abstracting with credit is permitted. To copy otherwise, or republish, to Microsoft's Touch Develop platform, and how it was adapted to
post on servers or to redistribute to lists, requires prior specific permission work on a very small device. There is also an accompanying video1.
and/or a fee. Request permissions from [email protected].
ICSE '16 Companion, May 14-22, 2016, Austin, TX, USA
© 2016 ACM. ISBN 978-1-4503-4205-6/16/05…$15.00
2. THE BBC micro:bit
DOI: http://dx.doi.org/10.1145/2889160.2889179 The BBC micro:bit2 is a pocket-sized, codeable computer, designed
to allow children to get creative with technology. The BBC
1 http://www.aka.ms/bbcmicrobit 2 https://www.microsoft.co.uk
1
announced the micro:bit on July 7, 2015, teachers were trained to binary language of the ARM-based micro:bit. The first compiler
from August 2015, and devices were made available to schools allows a student to convert a Block Editor script into a Touch
from February 2016. Develop script with a single press of a button (Figure 2).
The micro:bit measures 4cm by 5cm and is available in a range of
colours. Its design is intended to make it fun and easy to use.
Something simple can be coded in seconds – like lighting up its
LEDs to display a pattern – with little prior knowledge of
computing. The emphasis is on imagination and creativity.
The micro:bit is powered by an ARM Cortex-M0 Processor3 and
has 256K non-volatile flash (for program and static data) and 16K
volatile RAM (for stack, heap). It connects to other devices,
sensors, kits and objects, and is intended as a companion rather than
a competitor to devices such as Arduino, Galileo, Kano, littleBits
and Raspberry Pi, acting as a spring-board to more complex
learning. Key features of the micro:bit include:
• 25 red LEDs to light up, flash messages, create games and
invent digital stories
• Two programmable buttons to provide input;
• An on-board motion detector or ‘accelerometer’ to detect Figure 2. The Block Editor
forces acting on the device.
• A built-in compass or ‘magnetometer’ to sense direction. 3.2 Compile and Flash
• Bluetooth Smart Technology to connect other micro:bits and Figure 3 shows the flow of compilation for the micro:bit. When a
devices, kits, phones, tablets, cameras and so on; student has her Block Editor or Touch Develop script (Step 1)
• I2C/SPI capabilities to work with any other sensor or display; ready, she can connect her micro:bit to a computer via a USB cable,
• Five Input and Output (I/O) rings to connect the micro:bit so it appears as a mounted drive. Compilation from Touch Develop
to devices or sensors using crocodile clips or 4mm banana to the micro:bit proceeds all within the confines of the web browser.
plug to power devices such as robots and motors. The student is prompted to save the ARM binary program to a file
(Step 2) which she then simply drags to the micro:bit mounted
3. PROGRAMMING THE micro:bit drive, which flashes the micro:bit device (Step 3) with the new
To bring the BBC micro:bit to life, Microsoft developed an program.
enhanced version of their popular Touch Develop4 web application In more detail, the Touch Develop script is first compiled to ARM
and hosting service. All micro:bits share a dedicated website on Thumb assembly code, which is then translated into machine code.
Microsoft Azure and users can choose from a range of online code The machine code is then injected into a pre-compiled runtime file
editors available from most modern web browsers. (which conveniently uses a text-based hex format). The runtime file
Microsoft supplied two languages/editors – Touch Develop, a comes with metadata specifying the addresses of runtime functions,
semi-structured text-based language, and the Block Editor, a which helps with linking. The in-browser assembler handles not
graphical coding language. The Touch Develop web app supports only the 12 or so instructions that the compiler generates, but also
all the code editors built for the micro:bit, runs the micro:bit the remaining 100 or so, which allows users to write inline
simulator, and compiles programs to ARM machine code. assembly in their Touch Develop scripts if they so desire.
Advanced users can use C++ to directly program against the run-
time system and interface with not-yet-supported hardware sensors.
3.3 The Simulator
Before a student compiles her script for the micro:bit, she can run
3.1 Languages, Editors, Compilers it using the Touch Develop micro:bit simulator, all within the
We extended Touch Develop to support a progression of languages confines of a web browser. The simulator has support for the LED
with accompanying browser-based editors. The Block Editor screen, buttons, as well as compass, accelerometer, and digital I/O
provides an introduction to structured programming via blocks that pins. To run a student's Touch Develop script in the web browser,
can be snapped together (Figure 2). Unlike other similar offerings Touch Develop compiles it into JavaScript, the scripting language
[5] [9], Touch Develop’s Block Editor is strongly-typed and the built into all web browsers.
programs convert seamlessly to a next level of complexity in The working of the simulator can be seen in the following popular
learning [8]. example of Rock-Paper-Scissors (Figure 4). The code in Touch
Touch Develop’s classic mode shown in Figure 4 features a Develop is shown on the left and a picture of the device on the right.
statically-typed scripting language with syntax-directed editor. The The micro:bit accelerometer is simulated with either the
language subset contains: while and for loops; if-then-else accelerometer of the phone or tablet or the mouse pointer of a
conditional statement; functions; local and global variables; desktop computer. The simulator image tilts to visualize the
integer, boolean, string and image types; operations over values of simulated forces. The example also illustrates how succinct
the above types; user-defined event handlers and libraries. programs are in Touch Develop. In particular, output to the LED
display can be easily created on the simulator, as is shown in Figure
Browser-based compilers from the Block Editor to Touch Develop 2 and illustrated in the fourth program line. It is not necessary to
and then to ARM assembly and machine code automate the reference individual LEDs by number on a grid.
transition from a visual language to a text-based language, and then
3 http://www.arm.com/products/processors/cortex-m/cortex-m0.php 4 http://www.touchdevelop.com
2
Figure 3 The compilation flow for the micro:bit
3.4 The Libraries • "de-bouncing" the buttons, that is, making sure only one
Onboard, the micro:bit is programmed in C++. The C++ micro:bit "button pressed" event is generated, even though the physical
library provides access to the hardware functions of the micro:bit, button may bounce off briefly;
as well as a set of helper functions, such as displaying a • setting up a lightweight thread scheduler;
number/image/string on the LED screen. The Touch Develop • abstracting away the specific communication protocols of the
micro:bit library mirrors the functions of the C++ library. When a on-board accelerometer, thermometer and magnetometer.
Touch Develop script is compiled, the calls to Touch Develop
TouchDevelop is strongly typed, which is good, because well-typed
micro:bit functions are replaced with calls to the corresponding
TouchDevelop programs generate well-typed C++ programs, hence
C++ functions. The C++ run-time system exposes hardware
alleviating the need for a dynamic type mechanism. Given the
features; and takes care of mundane tasks, such as:
underlying constraints and the small amount of memory, dynamic
• blinking the LEDs several times per second, in order to ensure types would likely put a low limit on the size of programs one can
that the battery is not drained within a few hours; write.
• managing an event bus where clients can listen for, and
dispatch events;
3
TouchDevelop, in its traditional JavaScript code generation The software platform for the micro:bit has some similarities to
scheme, is garbage-collected. We did not implement a garbage Pocket Code [9] and App Inventor [5]. The advantages of Touch
collector for the micro:bit; rather, we rely on reference-counting. Develop are its progression for lifelong coding, as discussed in
We claim that this is "good enough" for an embedded device; by Section 3.1, and its platform independence. Considerable thought
the time users generate cyclic data structures, they will likely be went into a seamless linking of the software to the hardware,
advanced enough to switch to C++ and handle memory themselves. providing a unified experience, which is essential for children and
Users can define records with fields in TouchDevelop ("objects"); teachers who are new to coding.
we map these to ref-counted C++ structs. Users can write event
handlers that capture local variables; we use C++11's lambda-
7. ACKNOWLEDGMENTS
Nikolai Tillmann was the inspiration behind the Touch Develop
capture for that purpose.
system. Steve Hodges has guided the design of the hardware. Joe
4. DESIGN CONSIDERATIONS Finney and his team at the University of Lancaster have provided
In dealing with schools and children, many compromises had to be the runtime system for the micro:bit. Clare Riley has been the
made to ensure ease of use, hardware safety, and privacy in the indefatigable force behind the project from its start.
cloud, authorization and sheer roll out of devices at scale. These
topics will be covered in another paper.
8. REFERENCES
[1] Thomas Ball, Sebastian Burckhardt, Jonathan de Halleux,
Providing young students with an understandable programming Michał Moskal, Jonathan Protzenko, and Nikolai Tillmann,
model was a challenge, and it took us several iterations to come up Beyond Open Source: The TouchDevelop Cloud-based
with the current semantics. For instance, students can use a busy- Integrated Development Environment, MOBILESoft, 83 -
loop, active-polling programming model that is easier to 93, 2015.
understand and reason about, but does not scale well to larger [2] Quinn Burke and Yasmin B. Kafai. 2012. The writers'
programs. The alternative is an evented, reactive-based workshop for youth programmers: digital storytelling with
programming model that relies on cooperative threading. Naturally, scratch in middle school classrooms. SIGCSE Technical
this latter model comes with its own set of problems, such as Symposium, 433-438, 2012.
making sure students' code yields often enough or defining clear
[3] CAS: http://www.computingatschool.org.uk/
semantics for handling button events. We mitigate these difficulties
using a variety of mechanisms, such as warnings in the simulator if [4] Steve Hodges, James Scott, Sue Sentance, Colin Miller,
a loop has been visited a great number of times. Nicolas Villar, Scarlet Schwiderski-Grosche, Kerry Hammil,
and Steven Johnston. 2013. .NET gadgeteer: a new platform
5. EVALUATION for K-12 computer science education. SIGCSE Technical
We have been collecting and evaluating data on Touch Develop Symposium, 391-396, 2013.
since 2011 [1] based on over half a million users and over 150,000 [5] J. Liu, C.-H. Lin, P. Potter, E. P. Hasson, Z. D. Barnett, and
scripts. The median size for scripts was found to be 24 lines, but up M. Singleton, Going mobile with App Inventor for Android:
to 100 lines was common. The target audience of the micro:bit is a one-week computing workshop for K-12 teachers, SIGCSE
children who will write short scripts, making heavy use of libraries Technical Symposium, 433–438, 2013.
to accomplish complex tasks. With the more customized libraries [6] Orni Meerbaum-Salant , Michal Armoni , Mordechai (Moti)
(as described in Section 3.4) we estimate that micro:bit users will Ben-Ari, Learning computer science concepts with Scratch,
create satisfying apps in less than 50 lines. Computer Science Education , Vol. 23, Iss. 3, pp239-264,
We are entering the test phase of the hardware and transfer 2013
technology. Our prime success metrics will include ease of use and [7] Hadi Partovi. 2015. A comprehensive effort to expand access
robustness, which we can only measure once the micro:bits are in and diversity in computer science. ACM Inroads 6, (3) 67-
the field. To date, we have trained 600 teachers in the UK prior to 72, 2015
the launch and are working through the feedback. [8] J. Protzenko, Pushing Blocks All The Way To C++, In
Blocks and Beyond Workshop, Atlanta, Georgia, 2015
6. RELATED WORK
We can compare the micro:bit to other coding gadgets such as the [9] W. Slany, A mobile visual programming system for Android
Arduino and the Raspberry Pi according to processing capacity, smartphones and tablets, VL/HCC, 265–266, 2012
output, input and software. Firstly, the micro:bit is self-contained [10] Amber Settle, Baker Franke, Ruth Hansen, Frances Spaltro,
with sufficient onboard sensors and buttons for input, as well as Cynthia Jurisson, Colin Rennert-May, and Brian Wildeman.
LEDs acting as output. Even though it can be connected to external 2012. Infusing computational thinking into the middle- and
devices, it works perfectly on its own, lowering the barrier to entry high-school curriculum. ITiCSE, 22-27, 2012
into programming. [11] Linda Werner, Shannon Campe, and Jill Denner. Children
The micro:bit features a ARM Cortex-M0 processor which is more learning computer science concepts via Alice game-
powerful than the AVR in the Arduino, meaning that any valid C++ programming. SIGCSE Technical Symposium, 427-432,
program can run unmodified on the micro:bit using the proper GCC 2012.
toolchain. However, the micro:bit is less powerful than a Raspberry [12] Teruya Yamanishi*, Kazutomi Sugihara, Kazumasa Ohkuma
Pi, which is a complete computer that runs a full-fledged operating and Katsuji Uosaki, Programming instruction using a micro
system, while the micro:bit runs one program at a time. Typical robot as a teaching tool, Computer Applications and
micro:bit programs link to the run-time system, which provides Engineering Education, 23, (1), 109–116, 2
various drivers for the display, buttons and extension ports, as well
systems support for memory allocation and cooperative threading.