Learnable programming: Blocks and beyond

David Bau, Jeff Gray, Caitlin Kelleher, Josh Sheldon, Franklyn Turbak

Research output: Contribution to journalReview articlepeer-review

228 Scopus citations

Abstract

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.

Original languageEnglish
Pages (from-to)72-80
Number of pages9
JournalCommunications of the ACM
Volume60
Issue number6
DOIs
StatePublished - Jun 2017

Fingerprint

Dive into the research topics of 'Learnable programming: Blocks and beyond'. Together they form a unique fingerprint.

Cite this