Pencil Code gave a popular workshop at the CSTA 2015 conference in Texas a few days ago. In an email afterwards, one attendee commented "Incredible updates to Pencil Code including an HTML web publishing option.... session was packed - there were people sitting on the floor!"

At CSTA we got a chance to work with teachers from around the country, as well as groups like CodeHS and Codesters who are developing really interesting new tools and educational material.

Our CSTA presentation is available here. At the session, teachers got to work with Pencil Code hands-on, and that presentation includes links to the materials we used.

One question came up: "Why is it called Pencil Code?"

Our project is named after the pencil because we are inspired by the history of that writing instrument. We think of the pencil as a classroom tool, something simple enough for a young child.

But it was not always this way. The original graphite pencil was an expensive technical implement, a square stick of carbon sawn from a graphite mine in England. Rare and fragile, it was used by draftsmen and architects who valued its precise, dry dark line.

Centuries of innovation made the pencil more accessible: through the ingenuity of many inventors, the pencil has acquired a round wooden case, cheap and consistent clay-hardened lead, the attached rubber eraser, and pencil sharpeners. It is this history of innovation which has allowed the pencil to displace the inkwell and pen as the first writing tool for students. And yet the pencil remains a favorite instrument for adult writers, architects and mathematicians.

Can the technical tools used by computer scientists evolve like the pencil?

Pencil Code tries to begin to answer that question. It is designed to be flexible and simple enough to loved by both beginners and pros.

When using Pencil Code, advanced coders are comfortable typing in Javascript, Coffeescript, and HTML: standard languages that pros use every day. But beginners can edit those same languages with drag-and-drop, manipulating color-coded blocks. Pencil Code bridges the worlds by allowing users to transform their programs between blocks and text freely.

Like a pencil, Pencil Code is designed to be a low-threshold high-ceiling tool. Our turtle library is an extension of jQuery, a design that is convenient for both beginners and pros. We include socket.io, which makes it possible to solve the very advanced problem of realtime communications with a very beginner-friendly six lines of code.

A lot of work remains to be done to try to match the power and simplicity of a pencil. This year, contributors have created instructional cards and improved ergaonomics for beginners; and we are working on adding more advanced facilities such as python, libraries like p5, and databases.

We have an online Slack group where contributors and edcuators gather. If you would like to use Pencil Code in your classroom or contribute to the open-source project, please join us, and add your name at teach.pencilcode.net.

David Bau