A GLOBAL PUSH to broaden participation in computer
science has led to an explosion of interest in blocks-based programming. Visual blocks are used by
numerous programming tools (see the sidebar).
Millions of students receive their first exposure to
programming via these tools in courses and activities
like Code.org’s Hour of Code. Blocks allow beginners
to compose programs without struggling with the
frustrations of syntax (Figure 1).
There is increasing interest in developing and
studying blocks languages. At VL/HCC 2015, a small
workshop session called Blocks and Beyonda ballooned
to a large event, with 51 submissions and 36 presenters.
Researchers shared work in new blocks languages,
interface innovations, domain-specific
applications of blocks, and ways to
make blocks languages more effective
and accessible for diverse coders.
This article explores how blocks impact the learnability of programming.
We begin by reviewing studies on the
effectiveness of blocks languages.
Then we discuss the key features of
blocks languages and how they relate
to learning. Finally, we look at applications of blocks in new domains and
discuss tools for creating your own
Watching beginners create their
first programs with blocks can be simultaneously inspiring and unsettling.
Empowered by blocks, novices will rapidly build complex, often-delightful
creations. But just as quickly, they fill
their screen with clumsy and intricate
22 A seasoned programmer inspecting a beginner’s disordered assembly might worry that snapping together colorful blocks has nothing to
do with “real code.” But what is “real
code,” and why learn it?
What is “real code?” The purpose
of a blocks-based tool is to make programming easy to learn. But programming education can have two distinct
endpoints: Development of expertise
to support professional programming,
and the ability to accomplish other
goals by creating programs.
˽ Blocks programming environments have
emerged as a popular way to introduce
coding and as a stepping stone to
traditional text-based languages, but they
can also be used to write “real code.”
˽ Blocks environments improve learnability
for novices by favoring recognition
over recall; reducing cognitive load by
chunking computational patterns into
blocks; and using direct manipulation
of blocks to prevent errors and enhance
understanding of program structure.
˽ Learnability is also enhanced by key
features beyond blocks, including online
environments, high-level abstractions,
visible state, and easy-to-find examples.
˽ Tookits are available to enable you to
enhance your own block language.
New blocks frameworks open doors
to greater experimentation for novices
and professionals alike.
BY DAVID BAU, JEFF GRAY, CAITLIN KELLEHER,
JOSH SHELDON, AND FRANKLYN TURBAK