guage creation toolkits, developed by
Anthony Bau for use in Pencil Code, and
also used by Code.org in their App Lab.
It is newer and less mature than OpenBlocks and Blockly, but takes a unique
approach that allows seamless bidirectional transformation between all
blocks and textual code.
Summary
When a programming language is provided as a user interface that welcomes
novice users, rather than as a technical
tool only for experienced developers, we
arrive at a new picture of what the programming environment should provide:
˲ Vocabulary should derive from recognition, not recall;
˲ Cognitive load should be lowered by
chunking code;
˲ Grammar rules and types should be
made visible;
˲ Program chunks should be directly
manipulable;
˲ Low-viscosity editing should also be
possible;
˲Coding environments should be
available without the need for tool installation;
˲Simple concepts should be described with clear words and high-level
abstractions;
˲ Runtime state and behavior should
be visible; and,
˲ Examples should be easy to find
and apply.
In short, for a programming tool to
be usable by new or casual programmers, its design must focus on learnability. Blocks have proven to be effective at solving many of these problems.
Although programming is still not
nearly as widely learned as it should be,
the progress made by blocks language
interfaces can inspire us all to see that
programming can be made more learnable. The art of programming is the
original human-computer interaction,
and it remains an unsolved usability
challenge. We can still do more to make
programming available to all.
References
1. Armoni, M., Meerbaum-Salant, O. and Ben-Ari, M.
From Scratch to ‘real’ programming. Trans.
Computing Education 14, 4 (Feb. 2015).
2. Bau, D., Bau, D.A., Dawson, M., and Pickens, C.S.
Pencil Code: Block code for a text world. In 14th
International Conference on Interaction Design and
Children, (2015), 445–448.
3. Bau, D.A. Droplet, a blocks-based editor for text code.
J. Computing Sciences in Colleges 30, 6 (June 2015),
138–144.
4. Bottoni, P. and Ceriani, M. Using blocks to get more
blocks: Exploring linked data through integration of
queries and result sets in block programming. In IEEE
Blocks and Beyond Workshop, Oct. 2015, 99–102.
5. Brandt, J., Dontcheva, M., Weskamp, M. and Klemmer,
S.R. Example-centric programming: Integrating
Web search into the development environment. In
Proceedings of ACM SIGCHI Conference on Human
Factors in Computing Systems, 2010, 513–522.
6. Brandt, J., Guo, P.J., Lewenstein, J., Dontcheva, M.,
and Klemmer, S. R. Two studies of opportunistic
programming: Interleaving Web foraging, learning,
and writing code. In Proceedings of ACM SIGCHI
Conference on Human Factors in Computing Systems,
2009, 1589–1598.
7. Conway, M., Audia, S., Burnette, T., Cosgrove, D. and
Christiansen, K. Alice: Lessons learned from building
a 3D system for novices. In Proceedings of ACM
SIGCHI Conference on Human Factors in Computing
Systems, 2000, 486–493.
8. Dann, W., Cosgrove, D., Slater, D., Culyba, D. and
Cooper, S. Mediated transfer: Alice 3 to Java. In 43rd
ACM Technical Symposium on Computer Science
Education, 2012, 141–146.
9. Dorn, B. and Guzdial, M. Graphic designers who
program as informal computer science learners.
In Proceedings of 2nd International Workshop on
Computing Education Research, 2006, 127–134.
10. Garlick, R. and Cankaya, E.C. Using Alice in CS1: A
quantitative experiment. In 15th Annual Conference
on Innovation and Technology in Computer Science
Education, 2010, 165–168.
11. Green, T.R.G . Cognitive dimensions of notations.
People and Computers V. A. Sutcliffe and L. Macaulay,
Eds. Cambridge University Press, Cambridge, UK,
1989, 443–460.
12. Guo, P. J. Online Python tutor: Embeddable Web-based program visualization for CS education. In
Proceedings of the 44th ACM Technical Symposium on
Computer Science Education, 2013, 579–584.
13. Homer, M. and Noble, J. Combining tiled and textual
views of code. In Proceedings of the 2014 IEEE
Working Conf. Software Visualization, Sept. 2014, 1–10.
14. Johnson, C. and Bui, P. Blocks in, blocks out: A
language for 3D models. IEEE Blocks and Beyond
Workshop, Oct. 2015, 77–82.
15. Ko, A.J., Myers, B.A. and Aung, H.H. Six learning
barriers in end-user programming systems. In
Proceedings of the IEEE Symp. Visual Languages and
Human Centric Computing, 2004, 199–206.
16. Kölling, M., Brown, N. C.C., and Altadmri, A. Frame-based editing: Easing the transition from blocks to
text-based programming. In Proceedings of the 10th
Workshop in Primary and Secondary Computing
Education, Nov. 2015.
17. Koschitz, D. and Rosenbaum, E. Exploring algorithmic
geometry with ‘Beetle Blocks:’ A graphical
programming language for generating 3D forms. In
Proceedings of the 15th International Conference on
Geometry and Graphics, Aug. 2012, 380–389.
18. Lerner, S., Foster, S. R., and Griswold W.G. Polymorphic
blocks: Formalism-inspired UI for structured
connectors. In Proceedings of the 33rd Annual ACM
Conference on Human Factors in Computing Systems,
2015, 3063–3072.
19. Malan, D.J. and Leitner, H.H. Scratch for budding
computer scientists. ACM SIGCSE Bulletin 39, 1 (Mar.
2007), 223–227.
20. Maloney, J. H. and Smith, R.B. Directness and liveness in
the morphic user interface construction environment.
In Proceedings of the 8th Annual ACM Symposium on
User Interface and Software Technology, 1995, 21–28.
21. Matsuzawa, Y., Ohata, T., Sugiura, M. and Sakai,
S. Language migration in non-CS introductory
programming through mutual language translation
environment. In Proceedings of the 46th ACM
Technical Symposium on Computer Science Education,
2015, 185–190.
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
in Computer Science Education, 2011, 168–172.
23. Miller, G. A. The magical number seven, plus or minus
two: some limits on our capacity for processing
information. Psychological Review 63, 2 (1956), 81.
24. Mönig, J., Ohshima, Y. and Maloney, J. Blocks at your
fingertips: Blurring the line between blocks and text in
GP. IEEE Blocks and Beyond Workshop, 2015, 51–53.
25. Moskal, B., Lurie, D. and Cooper, S. Evaluating the
effectiveness of a new instructional approach. ACM
SIGCSE Bulletin 36, 1 (2004), 75–79.
26. Nikander, J., Korhonen, A., Seppälä, O., Karavirta, V.,
Silvasti, P. and Malmi, L. Visual algorithm simulation
exercise system with automatic assessment: Trakla2.
Info. Education—An International J. 32 (2004), 267–288.
27. Powers, K., Ecott, S. and Hirshfield, L.M. Through the
looking glass: Teaching CS0 with Alice. ACM SIGCSE
Bulletin 39, 1 (Mar. 2007), 213–217.
28. Resnick, M., Maloney, J., Monroy-Hernández, A.,
Rusk, N., Eastmond, E., Brennan, K., Millner, A.,
Rosenbaum, E., Silver, J., Silverman, B., and Kafai, Y.
Scratch: Programming for all. Commun. ACM 52, 11
(Nov. 2009), 60–67.
29. Roque, R. Openblocks: An extendable framework
for graphical block programming systems. Master’s
thesis, MIT, May 2007.
30. Rosson, M.B., Ballin, J. and Nash, H. Everyday
programming: Challenges and opportunities for
informal Web development. In Proceedings of the
2004 IEEE Symposium on Visual Languages and
Human Centric Computing, Sept. 2004, 123–130.
31. Sawadsky, N. and Murphy, G. C. Fishtail: From task
context to source code examples. In Proceedings
of the 1st Workshop on Developing Tools As Plug-ins,
2011, 48–51.
32. Shapiro, R.B. and Ahrens, M. Beyond blocks: Syntax
and semantics. Communications of the ACM 59, 5
(May 2016), 39–41.
33. Sorva, J. and Sirkiä, T. Context-sensitive guidance
in the UUhistle program visualization system.
In Proceedings of the 6th Program Visualization
Workshop, 2011, 77–85.
34. Stefik, A. and Siebert, S. An empirical investigation
into programming language syntax. Trans. Computing
Education 13, 4 (Nov. 2013), 19:1–19:40.
35. Teitelbaum, T. and Reps, T. The Cornell program
synthesizer: A syntax-directed programming
environment. Commun. ACM 24, 9 (Sept. 1981), 563–573.
36. Vasek, M. Representing expressive types in blocks
programming languages. Undergraduate thesis,
Wellesley College, May 2012.
37. Wang Baldonado M.Q., Woodruff, A., and
Kuchinsky, A. Guidelines for using multiple views
in information visualization. In Proceedings of the
Working Conference on Advanced Visual Interfaces,
2000, 110–119.
38. Weintrop, D. and Wilensky, U. To block or not to
block, that is the question: students’ perceptions of
blocks-based programming. In Proceedings of the 14th
International Conference on Interaction Design and
Children, 2015, 199–208.
39. Wolz, U., Leitner, H.H., Malan, D.J., and Maloney J.
Starting with Scratch in CS1. ACM SIGCSE Bulletin
41, 1 (Mar. 2009), 2–3.
40. Zelkowitz, M. Reversible execution. Commun. ACM 16,
9 (Sept. 1973), 566.
David Bau (davidbau@csail.mit.edu) is a Ph. D. student at
MIT’s Computer Science and Artificial Intelligence Lab,
Cambridge, MA.
Jeff Gray (gray@cs.ua.edu) is a professor in the
Department of Computer Science at the University of
Alabama, Tuscaloosa.
Caitlin Kelleher (ckelleher@cse.wustl.edu) is an
assistant professor in the Department of Computer
Science at Washington University, St. Louis, MO.
Josh Sheldon (jsheldon@csail.mit.edu) is Director of
Programs and MI T App inventor at MIT’s Computer
Science and Artificial Intelligence Lab, Cambridge, MA.
Franklyn Turbak (fturbak@cs.wellesley.edu) is an
associate professor in the Department of Computer
Science at Wellesley College, Wellesley, MA.
© 2017 ACM 0001-0782/17/05 $15.00.
Watch the authors discuss
their work in this exclusive
Communications video.
https://cacm.acm.org/videos/
learnable-programming