PB Polymorphic Blocks


Polymorphic Blocks are a novel block-based UI, in which a connector's shape visually represents the structure of the data being passed through the connector. We use Polymorphic Blocks to add visual type information to block-based programming environments like Blockly or Scratch. We also use Polymorphic Blocks to represent logical proofs. In this context, if we erase all symbols, our UI becomes a puzzle game, where solving the puzzle amounts to building a proof. We show through a user study that our Logical Puzzle Game is faster, more fun, and more engaging than an equivalent pen-and-paper interface.

Update 4/26/16: Anthony Morphett from University of Melbourne is using (and extending!) Polymorphic Blocks in a project for teaching mathematics.

Polymorphic Blocks: Formalism-Inspired UI for Structured Connectors (CHI 2015)
    with Stephen R. Foster and William G. Griswold

This first video is a 30 second introduction to Polymorphic Blocks (if you cannot see the video below, here is a link)



The second video is much longer, and should probably be watched after having looked at our CHI paper. This video shows the UI that results from instantiating Polymorphic Blocks to two domains: logical proofs, which leads to a Proof Puzzle Game, and typed programs, which leads to an interface for visually representing types in Blockly (if you cannot see the video below, here is a link)

You can try the Proof Puzzle Game here.

Here are a few things to note:

The instructions in the following shell file should install a local working copy of Polymorphic Blockly.

Here are a few things to note: