Professional Documents
Culture Documents
DOI:10.1145/ 3015455
interface innovations, domain-specific
New blocks frameworks open doors applications of blocks, and ways to
make blocks languages more effective
to greater experimentation for novices and accessible for diverse coders.
and professionals alike. This article explores how blocks im-
pact the learnability of programming.
BY DAVID BAU, JEFF GRAY, CAITLIN KELLEHER, We begin by reviewing studies on the
JOSH SHELDON, AND FRANKLYN TURBAK effectiveness of blocks languages.
Then we discuss the key features of
Learnable
blocks languages and how they relate
to learning. Finally, we look at appli-
cations of blocks in new domains and
discuss tools for creating your own
Programming:
blocks language.
Watching beginners create their
first programs with blocks can be si-
multaneously inspiring and unsettling.
Blocks
Empowered by blocks, novices will rap-
idly build complex, often-delightful
creations. But just as quickly, they fill
their screen with clumsy and intricate
and Beyond
code.22 A seasoned programmer in-
specting a beginner’s disordered as-
sembly might worry that snapping to-
gether 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 pro-
gramming easy to learn. But program-
ming education can have two distinct
endpoints: Development of expertise
to support professional programming,
A GL OB AL PU SH to broaden participation in computer and the ability to accomplish other
goals by creating programs.
science has led to an explosion of interest in blocks-
based programming. Visual blocks are used by
key insights
numerous programming tools (see the sidebar).
˽˽ Blocks programming environments have
Millions of students receive their first exposure to emerged as a popular way to introduce
programming via these tools in courses and activities coding and as a stepping stone to
traditional text-based languages, but they
like Code.org’s Hour of Code. Blocks allow beginners can also be used to write “real code.”
to compose programs without struggling with the ˽˽ Blocks environments improve learnability
for novices by favoring recognition
frustrations of syntax (Figure 1). over recall; reducing cognitive load by
chunking computational patterns into
There is increasing interest in developing and blocks; and using direct manipulation
of blocks to prevent errors and enhance
studying blocks languages. At VL/HCC 2015, a small understanding of program structure.
workshop session called Blocks and Beyonda ballooned ˽˽ Learnability is also enhanced by key
features beyond blocks, including online
to a large event, with 51 submissions and 36 presenters. environments, high-level abstractions,
Researchers shared work in new blocks languages, visible state, and easy-to-find examples.
˽˽ Tookits are available to enable you to
a http://cs.wellesley.edu/blocks-and-beyond enhance your own block language.
more quickly, understood loops bet- averaged 10% or more better perfor- these features have identified potential
ter, and were more engaged and con- mance on every section of the same Java challenges to learning with blocks.10,27
fident than their peers who had not. final exam, including expression evalu- Switching from a blocks language to text
However, in the final test, a signifi- ation, control structures, arrays, and can involve both a change in syntax and
cant difference was seen in only one working with class definitions. semantics, and Shapiro and Ahrens pro-
of three cognitive dimensions. In a That result is remarkable because pose teaching the transitions separate-
study at two colleges,25 students with one might assume that spending more ly, by introducing syntax before general-
little or no previous programming time programming with blocks meant izing semantics.32 Additional research
experience and weak math prepara- less time to learn Java. The study used is needed to identify the circumstances
tion completed a CS0 programing a version of Alice that generated Java under which blocks are effective.
JU N E 2 0 1 7 | VO L. 6 0 | N O. 6 | C OM M U N IC AT ION S OF T HE ACM 73
review articles
Figure 1. Snap! is an example of a blocks-based programming environment. Users drag (Figure 2b). Yet, the basic idiom is the
blocks from a palette of programming elements (left) into workspace (center), where same as Scratch: explorable palettes
blocks can be assembled into programs. Snap! also provides an output window (top-right) organized by function.
and a sprite picker (bottom-right).
Remembering the order, type,
and valid values of operands is also
daunting for newcomers. Many block
languages address this by supplying
blocks with default operand values,
drop-down menus and specialized
editors to specify operands, and extra
words to indicate operand meanings
(Figure 3a).
Chunking information with blocks.
Programming languages present a high
cognitive load to a student who is learn-
ing a new syntax. For example, consider
the for loop in JavaScript syntax:
ample, Code.org reveals finer-grained Figure 2. The sound palette in Scratch (a) and a voice synthesis palette in App Inventor (b).
for structure in more advanced por- Palettes simplify the selection of programming elements by exploiting the ease of recogni-
tions of the same course, as illustrated tion over recall. Palettes organize concepts by topic, not name, and they remain open when
used, allowing the user to discover and tinker with blocks based on their function.
at the bottom of Figure 4.
The use of blocks to chunk code
aids readability even for simple com-
mands, because blocks can forgo the
punctuation that text code uses to de-
note structure and use explanatory
words instead. For example, as illus-
trated in Figure 3b, a simple call in Py-
thon requires reading delimiters and
knowing argument order, whereas the
equivalent block in Scratch reads natu-
rally, using appropriate abstractions
(for example, a piano keyboard).
By organizing code as visible
chunks, blocks help new programmers
concentrate on what the code means
rather than the notation that is used to
write it.
Direct manipulation of visible struc-
ture. The visual form of blocks alleviates
the burden of assembling syntactically
correct units by typing one character at
a time. But there are other advantages
of directly manipulating program frag-
ments that have visual constraints.
One benefit is the blocks can help
prevent errors by making the grammar
of the program visible. Blocks can be Figure 3. Blocks show structure visually (a. Scratch) instead of using punctuation.
They can aid learnability using plain language, default values, and value pickers.
seen as a form of syntax-directed editing
with constrained direct manipulation.
In 1981, creators of an early structure-
editing tool noted, “Programs are not
text; they are hierarchical compositions
of computational structures and should
be edited, executed, and debugged in an playNoteFor(60, 0.5)
environment that consistently acknowl-
edges and reinforces this viewpoint.”35
Block shapes help beginners un- (a) Scratch (b) Python
derstand which grammatical phrases
(expressions vs. commands vs. dec-
larations) are legal in what contexts. Figure 4. Three ways of reading a for loop in chunks. A naive reading of code (top)
interprets the code as 17 chunks, but an expert reading of code (middle) interprets the
In Scratch, commands connect verti- most common form of loop as a single chunk, with a second chunk for the loop limit 50. An
cally with nubs and notches, whereas alternative (bottom) reading interprets three clauses as chunks. Code.org uses the middle
expressions are smooth shapes that rendering when introducing loops to high-school students for the first time, and switches
fit into smooth holes. Constraints on to the bottom rendering when students are familiar with for loops.
drag-and-drop prevent the two types
from being confused (Figure 5). Stu-
dents report that the puzzle shapes are
helpful for assembling programs.38
Visualization of types by shape
can be applied to richer type systems:
OpenBlocks provides 14 connector
shapes to represent different types,29
and researchers have created experi-
mental block languages with dynami-
cally generated shapes to represent
compositional type systems.18,36
JU N E 2 0 1 7 | VO L. 6 0 | N O. 6 | C OM M U N IC AT ION S OF T HE ACM 75
review articles
tion of the fault that caused a later ob- languages can have a higher viscosity text-style entry and bidirectional mode
served failure.40 TRAKLA2,26 UUhistle33 than text code because they make small switching.
and Online Python Tutor12 provide this changes more difficult.11 Text-style entry of blocks. Some new
capability for Java and Python. Beyond viscosity, blocks environ- blocks environments, such as Green-
Examples and reuse. The activity of ments can have several other usabil- foot’s frame-based Stride editor16 and
programming has changed with the ity disadvantages compared to textual GP,24 are designed to be used by pro-
availability of large repositories con- programming languages: grammers to create large programs,
taining examples of shared code. ˲˲ Low density: Blocks take more so efficient editing is an important
Programmers of all levels report find- space on the screen than equivalent design goal.
ing and adapting examples as a core text code. Both Stride and GP improve effi-
programming activity.6,9 In response, ˲˲ Search and navigation: It can be ciency by providing text-based editing
professional programming and end- challenging to find and navigate to the shortcuts within a blocks-oriented in-
user programming environments are relevant part of a blocks program in a terface. To allow users to circumvent
beginning to incorporate example sup- 2D workspace, only part of which may the step of finding a block on the pal-
port.5,31 Novices, too, want to learn via be visible. ette, these systems let programmers
examples, but may struggle to do so.30 ˲˲ Source control: collaboration and enter blocks through an in-line auto-
Blocks-based languages like Scratch version control systems are difficult to complete mechanism. Blocks can still
and Looking Glass use online sharing use without a text representation. be chosen from a palette, but a knowl-
and remixing programs to provide ex- The newest generation of blocks edgeable programmer can insert them
ample access. But there is a trade-off programming tools includes features by typing. The Stride editor also intro-
between the simplicity of reuse and designed to resolve the tension be- duces a hybrid approach to editing
the robustness of reused code. For ex- tween usability advantages of text vs. code, differentiating between low-level
ample, Scratch simplifies sharing of blocks. There are two approaches: and high-level structure (Figure 6). For
code examples for novices by providing
a “backpack” for collecting program Figure 5. Block shapes show and enforce rules composition. Scratch commands compose
vertically, and expressions fit into holes. Here, a Boolean expression (diamond shape) is
snippets and assets that can be shared being dropped into a matching hole for a loop test condition.
and dragged into a new project. How-
ever, the backpack does not necessarily
guarantee the code will run correctly in
a new project.
In contrast, Looking Glass uses
a more complex process for reuse
in which users select the beginning
and end of behavior they want to use.
Coupled with execution history infor-
mation, this can ensure the selected
code will function within the context
of a new program. A Play & Explore fea-
ture allows users to connect program
output to the line or lines of code that
caused it, helping users to understand Figure 6. Greenfoot’s Stride editor combines text-style editing for expression-level details
and begin to modify reused code. with drag-and-drop blocks for higher-level program structure.
JU N E 2 0 1 7 | VO L. 6 0 | N O. 6 | C OM M U N IC AT ION S OF T HE ACM 77
review articles
Figure 7. Pencil Code provides bidirectional switching between blocks and text. Mode expression-level code, it hides syntac-
switching allows users to learn with blocks and edit quickly with text. tic structure and allows traditional text
editing, providing high-density display
and lower viscosity. Visible tree struc-
ture and drag-and-drop manipulation
are used for higher-level code such as
control flow and class declarations.
Bidirectional Mode Switching. Some
blocks environments provide a bidi-
rectional transformation between a
traditional text language and a blocks
representation of that language. These
include Pencil Code (CoffeeScript)2
(Figure 7), Code.org’s App Labb (Java-
Script), BlockEditor (Java),21 and Tiled
Grace (Grace).13 Alice and Blockly pro-
Figure 8. Blocks programming in MadeUp. 3D printing is an area of rapid innovation, and vide non-editable views of text code.
blocks make it possible to use new 3D modeling languages without a steep learning curve.
The hypothesis that motivates the de-
sign of dual-mode tools is that users may
benefit from the learnability of blocks in
one mode, while they learn syntax and get
the efficiency of text in the other mode.
This goal requires the views be linked.
For text to be safe for users who may want
to return blocks, it must be possible to
switch between modes.
In dual-mode editors, the text code
is the primary representation of the
program, and blocks are a projected
user interface view derived by pars-
ing. This approach allows the editor to
fully represent text information such
as spacing, but it also means the edi-
tor must allow syntax errors that would
not have been possible in blocks.
Error-recovery heuristics convert sim-
ple text syntax errors to special error
blocks, but complex errors can prevent
mode switching.
Comparing approaches. There is a
Figure 9. The SPARQL playground is a blocks-based query execution tool that provides trade-off between the two approaches
blocks for constructing queries of RDF data. Query results (bottom) are also provided as
blocks, and they can be dragged to build into other queries.
to unifying blocks and text. While the
dual-mode editors provide direct sup-
port for learning traditional text syntax
such as JavaScript or Java, they also im-
pose the cognitive overhead of work-
ing with syntax errors that can only be
introduced in text mode. Visualiza-
tion research on multiple coordinated
views suggests the benefits of provid-
ing more than one view need to be bal-
anced against the cognitive overhead
imposed by switching between views.37
Single mode structure editors have
the advantage of a conceptual model
free of syntax errors, because the pri-
mary object being edited is the ab-
stract syntax tree. However, to main-
b https://code.org/educate/applab
tain consistency, many kinds of textual for querying RDF; it includes sev-
Blocks-Based
edits must be prevented, and other eral constructs for working with RDF
edits may require special tree-editing triples that distinguish it from other
commands. These constraints raise
editing viscosity, and they may pres-
query languages such as SQL. How-
ever, potential users of SPARQL face Educational
ent additional cognitive barriers. In-
terfaces that effectively bridge the gap
between blocks and text are an active
two hurdles: First, programmers must
learn the vocabulary and syntax of
SPARQL, with its specialized operators
Tools
On the Web:
area of research. and constructs. Second, querying RDF ˲˲ Scratch (https://scratch.mit.edu):
requires not just knowledge of the lan- In-browser animation and game
Applying Blocks: Two Examples guage, but also knowledge of instance creation, with support for extensions
˲˲ Code.org (http://code.org): A
Let us take a look at experimental and schema data.
variety of tools including puzzle
blocks languages in two specific do- To address both problems, Paolo
programming exercises with tutorial
mains that are unfamiliar to most pro- Bottoni and Miguel Ceriani have cre- videos
grammers. ated a blocks language they call the ˲˲ Snap! (http://snap.berkeley.
Programming 3D printers. Tradition- SPARQL Playground.4 Rather than help- edu): Enhanced language inspired
ally, 3D printing models are drawn ing users learn about sequential pro- by Scratch that includes first class
interactively by direct manipulation grams, their blocks language helps functions
˲˲ App Inventor (http://appinventor.
using CAD software. Writing custom users select, filter, and join data using
mit.edu): Creation of Android apps
code to create a model is a powerful al- SPARQL primitives.
using in-browser blocks IDE
ternative approach, but coding for 3D The SPARQL Playground is interest- ˲˲ Pencil Code (https://pencilcode.
fabrication has traditionally been the ing for a second reason: all query results net): Creates Coffee- Script Web
province of a few expert programmers. in the playground are also returned as apps, transforming between text and
Now, the falling cost and rising avail- draggable blocks (Figure 9). This fea- blocks
ability of 3D printers has made it pos- ture allows users to save instance data ˲˲ StarLogo Nova (http://www.slnova.
sible for non-specialists to write their on the programming workspace to be org): Multi-agent simulations and
games in a 3D rendered world
own custom 3D modeling code. incorporated into new queries. With ˲˲ Blockly Games (https://blockly-
Two recently developed languages the SPARQL Playground, it is easy to games.appspot.com/): A set of
bring programming for 3D printing to begin with general queries to explore puzzles to solve with programming
novice users: BeetleBlocks17 and Ma- the types of data available, and then use blocks
deup.14 Although the two systems have these discoveries to make refinements. ˲˲ GameBlox (https://gameblox.org):
different languages, there are several Game creation that includes clonable
agents, physics, and more
commonalities: both are Web-based in- Making New Blocks Languages
terfaces with a live 3D rendering of the It is now possible to create your own Downloadable:
shape being created, and both provide domain-specific blocks environment ˲˲ AgentSheets / AgentCubes (http://
a blocks language to simplify learning. using a blocks-based language tool- www.agentsheets.com): Pioneering
Beetle-Blocks follows the principles of kit. Blocks language authors should blocks environments for creating
rule-based games and simulations
turtle graphics: a beetle moves a “pen” be aware of at least three toolkits: ˲˲ Alice (http://www.alice.org):
that can be turned on and off, and 3D Blockly,c Droplet,3 and OpenBlocks.29 Pioneering blocks environment for
shapes can be created out of iterated The original blocks metalanguage is creating 3D virtual worlds; support
strokes. MadeUp (Figure 8) takes a MIT OpenBlocks. Created in 2007 by for exporting to Java
more abstract approach, allowing users Ricarose Roque as the basis of StarLo- ˲˲ Looking Glass (https://
to trace out both paths and parametric go TNG, it allows a large degree of geo- lookingglass.wustl.edu): 3D
surfaces. Special functions can rotate metric customization. OpenBlocks animated story creation; supports
independent learning
or extrude the paths to create solids. has also been used in App Inventor ˲˲ Kodu (http://www.kodugamelab.
The two languages offer differ- Classic and BlockEditor. One draw- com): Rule-based programming of
ent levels of power and abstraction. back of OpenBlocks is that it requires games for xBox and PC
Which language is the right one to users to download and install the Java
On mobile:
use? This domain is an excellent ex- JDK. The challenge of installation is ˲˲ Scratch Jr (http://www.scratchjr.
ample of the advantage of the learn- addressed by Blockly, an HTML-based org): Programming of animated
ability of blocks. Both blocks languag- block language toolkit by Neil Fraser scenes aimed at preliterate children
es have a very shallow learning curve, of Google. Blockly is currently the most ˲˲ Pocket Code (http://www.catrobat.
and it is easy to try both. popular blocks language toolkit: it is the org): Blocks programming for small
Querying the Semantic Web. The fre- tool behind App Inventor, the SPARQL form factor of mobile devices
˲˲ Tynker (https://www.tynker.com):
quent need to query large datasets is playground, and MadeUp, as well as the
Polished commercial platform for
another domain where learnability Code.org Hour of Code puzzles. Future
game and animation creation
is essential. Consider the problem of versions of Scratch will also use Blockly. ˲˲ Hopscotch (https://www.
querying Resource Description Frame- Droplet is the newest of the blocks lan- gethopscotch.com): Creating games
work (RDF) data from the Semantic and animations on iPhone and iPad
Web. SPARQL is the standard language c https:developers.google.com/blockly
JU N E 2 0 1 7 | VO L. 6 0 | N O. 6 | C OM M U N IC AT ION S OF T HE ACM 79
review articles
guage creation toolkits, developed by blocks: Exploring linked data through integration of Silvasti, P. and Malmi, L. Visual algorithm simulation
queries and result sets in block programming. In IEEE exercise system with automatic assessment: Trakla2.
Anthony Bau for use in Pencil Code, and Blocks and Beyond Workshop, Oct. 2015, 99–102. Info. Education—An International J. 32 (2004), 267–288.
also used by Code.org in their App Lab. 5. Brandt, J., Dontcheva, M., Weskamp, M. and Klemmer, 27. Powers, K., Ecott, S. and Hirshfield, L.M. Through the
S.R. Example-centric programming: Integrating looking glass: Teaching CS0 with Alice. ACM SIGCSE
It is newer and less mature than Open- Web search into the development environment. In Bulletin 39, 1 (Mar. 2007), 213–217.
Blocks and Blockly, but takes a unique Proceedings of ACM SIGCHI Conference on Human 28. Resnick, M., Maloney, J., Monroy-Hernández, A.,
Factors in Computing Systems, 2010, 513–522. Rusk, N., Eastmond, E., Brennan, K., Millner, A.,
approach that allows seamless bidi- 6. Brandt, J., Guo, P.J., Lewenstein, J., Dontcheva, M., Rosenbaum, E., Silver, J., Silverman, B., and Kafai, Y.
rectional transformation between all and Klemmer, S.R. Two studies of opportunistic Scratch: Programming for all. Commun. ACM 52, 11
programming: Interleaving Web foraging, learning, (Nov. 2009), 60–67.
blocks and textual code. and writing code. In Proceedings of ACM SIGCHI 29. Roque, R. Openblocks: An extendable framework
Conference on Human Factors in Computing Systems, for graphical block programming systems. Master’s
2009, 1589–1598. thesis, MIT, May 2007.
Summary 7. Conway, M., Audia, S., Burnette, T., Cosgrove, D. and 30. Rosson, M.B., Ballin, J. and Nash, H. Everyday
Christiansen, K. Alice: Lessons learned from building programming: Challenges and opportunities for
When a programming language is pro- a 3D system for novices. In Proceedings of ACM informal Web development. In Proceedings of the
vided as a user interface that welcomes SIGCHI Conference on Human Factors in Computing 2004 IEEE Symposium on Visual Languages and
Systems, 2000, 486–493. Human Centric Computing, Sept. 2004, 123–130.
novice users, rather than as a technical 8. Dann, W., Cosgrove, D., Slater, D., Culyba, D. and 31. Sawadsky, N. and Murphy, G.C. Fishtail: From task
tool only for experienced developers, we Cooper, S. Mediated transfer: Alice 3 to Java. In 43rd context to source code examples. In Proceedings
ACM Technical Symposium on Computer Science of the 1st Workshop on Developing Tools As Plug-ins,
arrive at a new picture of what the pro- Education, 2012, 141–146. 2011, 48–51.
gramming environment should provide: 9. Dorn, B. and Guzdial, M. Graphic designers who 32. Shapiro, R.B. and Ahrens, M. Beyond blocks: Syntax
program as informal computer science learners. and semantics. Communications of the ACM 59, 5
˲˲ Vocabulary should derive from rec- In Proceedings of 2nd International Workshop on (May 2016), 39–41.
ognition, not recall; Computing Education Research, 2006, 127–134. 33. Sorva, J. and Sirkiä, T. Context-sensitive guidance
10. Garlick, R. and Cankaya, E.C. Using Alice in CS1: A in the UUhistle program visualization system.
˲˲ Cognitive load should be lowered by quantitative experiment. In 15th Annual Conference In Proceedings of the 6th Program Visualization
chunking code; on Innovation and Technology in Computer Science Workshop, 2011, 77–85.
Education, 2010, 165–168. 34. Stefik, A. and Siebert, S. An empirical investigation
˲˲ Grammar rules and types should be 11. Green, T.R.G . Cognitive dimensions of notations. into programming language syntax. Trans. Computing
made visible; People and Computers V. A. Sutcliffe and L. Macaulay, Education 13, 4 (Nov. 2013), 19:1–19:40.
Eds. Cambridge University Press, Cambridge, UK, 35. Teitelbaum, T. and Reps, T. The Cornell program
˲˲ Program chunks should be directly 1989, 443–460. synthesizer: A syntax-directed programming
12. Guo, P.J. Online Python tutor: Embeddable Web- environment. Commun. ACM 24, 9 (Sept. 1981), 563–573.
manipulable; based program visualization for CS education. In 36. Vasek, M. Representing expressive types in blocks
˲˲ Low-viscosity editing should also be Proceedings of the 44th ACM Technical Symposium on programming languages. Undergraduate thesis,
Computer Science Education, 2013, 579–584. Wellesley College, May 2012.
possible; 13. Homer, M. and Noble, J. Combining tiled and textual 37. Wang Baldonado M.Q., Woodruff, A., and
˲˲ Coding environments should be views of code. In Proceedings of the 2014 IEEE Kuchinsky, A. Guidelines for using multiple views
Working Conf. Software Visualization, Sept. 2014, 1–10. in information visualization. In Proceedings of the
available without the need for tool instal- 14. Johnson, C. and Bui, P. Blocks in, blocks out: A Working Conference on Advanced Visual Interfaces,
lation; language for 3D models. IEEE Blocks and Beyond 2000, 110–119.
Workshop, Oct. 2015, 77–82. 38. Weintrop, D. and Wilensky, U. To block or not to
˲˲ Simple concepts should be de-
15. Ko, A.J., Myers, B.A. and Aung, H.H. Six learning block, that is the question: students’ perceptions of
scribed with clear words and high-level barriers in end-user programming systems. In blocks-based programming. In Proceedings of the 14th
Proceedings of the IEEE Symp. Visual Languages and International Conference on Interaction Design and
abstractions; Human Centric Computing, 2004, 199–206. Children, 2015, 199–208.
˲˲ Runtime state and behavior should 16. Kölling, M., Brown, N.C.C., and Altadmri, A. Frame- 39. Wolz, U., Leitner, H.H., Malan, D.J., and Maloney J.
based editing: Easing the transition from blocks to Starting with Scratch in CS1. ACM SIGCSE Bulletin
be visible; and, text-based programming. In Proceedings of the 10th 41, 1 (Mar. 2009), 2–3.
˲˲ Examples should be easy to find Workshop in Primary and Secondary Computing 40. Zelkowitz, M. Reversible execution. Commun. ACM 16,
Education, Nov. 2015. 9 (Sept. 1973), 566.
and apply. 17. Koschitz, D. and Rosenbaum, E. Exploring algorithmic
In short, for a programming tool to geometry with ‘Beetle Blocks:’ A graphical
programming language for generating 3D forms. In David Bau (davidbau@csail.mit.edu) is a Ph.D. student at
be usable by new or casual program- Proceedings of the 15th International Conference on MIT’s Computer Science and Artificial Intelligence Lab,
Geometry and Graphics, Aug. 2012, 380–389. Cambridge, MA.
mers, its design must focus on learn- 18. Lerner, S., Foster, S.R., and Griswold W.G. Polymorphic
ability. Blocks have proven to be effec- blocks: Formalism-inspired UI for structured Jeff Gray (gray@cs.ua.edu) is a professor in the
connectors. In Proceedings of the 33rd Annual ACM Department of Computer Science at the University of
tive at solving many of these problems. Conference on Human Factors in Computing Systems, Alabama, Tuscaloosa.
Although programming is still not 2015, 3063–3072.
Caitlin Kelleher (ckelleher@cse.wustl.edu) is an
19. Malan, D.J. and Leitner, H.H. Scratch for budding
nearly as widely learned as it should be, computer scientists. ACM SIGCSE Bulletin 39, 1 (Mar. assistant professor in the Department of Computer
Science at Washington University, St. Louis, MO.
the progress made by blocks language 2007), 223–227.
20. Maloney, J.H. and Smith, R.B. Directness and liveness in
interfaces can inspire us all to see that the morphic user interface construction environment.
Josh Sheldon (jsheldon@csail.mit.edu) is Director of
Programs and MIT App inventor at MIT’s Computer
programming can be made more learn- In Proceedings of the 8th Annual ACM Symposium on Science and Artificial Intelligence Lab, Cambridge, MA.
User Interface and Software Technology, 1995, 21–28.
able. The art of programming is the 21. Matsuzawa, Y., Ohata, T., Sugiura, M. and Sakai, Franklyn Turbak (fturbak@cs.wellesley.edu) is an
original human-computer interaction, S. Language migration in non-CS introductory associate professor in the Department of Computer
programming through mutual language translation Science at Wellesley College, Wellesley, MA.
and it remains an unsolved usability environment. In Proceedings of the 46th ACM
challenge. We can still do more to make Technical Symposium on Computer Science Education, © 2017 ACM 0001-0782/17/05 $15.00.
2015, 185–190.
programming available to all. 22. Meerbaum-Salant, O., Armoni, M. and Ben-Ari, M. Habits
of programming in Scratch. In Proceedings of the 16th
Annual Joint Conference on Innovation and Technology
References in Computer Science Education, 2011, 168–172.
1. Armoni, M., Meerbaum-Salant, O. and Ben-Ari, M. 23. Miller, G.A. The magical number seven, plus or minus
From Scratch to ‘real’ programming. Trans. two: some limits on our capacity for processing
Computing Education 14, 4 (Feb. 2015). information. Psychological Review 63, 2 (1956), 81.
2. Bau, D., Bau, D.A., Dawson, M., and Pickens, C.S. 24. Mönig, J., Ohshima, Y. and Maloney, J. Blocks at your
Pencil Code: Block code for a text world. In 14th fingertips: Blurring the line between blocks and text in
International Conference on Interaction Design and GP. IEEE Blocks and Beyond Workshop, 2015, 51–53.
Children, (2015), 445–448. 25. Moskal, B., Lurie, D. and Cooper, S. Evaluating the Watch the authors discuss
3. Bau, D.A. Droplet, a blocks-based editor for text code. effectiveness of a new instructional approach. ACM their work in this exclusive
J. Computing Sciences in Colleges 30, 6 (June 2015), SIGCSE Bulletin 36, 1 (2004), 75–79. Communications video.
138–144. 26. Nikander, J., Korhonen, A., Seppälä, O., Karavirta, V., https://cacm.acm.org/videos/
4. Bottoni, P. and Ceriani, M. Using blocks to get more learnable-programming