The Pencil Code Team is devoted to advancing computer science education by making programming as simple and as universal as using a pencil.
Our project grew out of an open-source teaching collaboration between Googler David Bau, his son Anthony, and a group of friends.
Each time we taught, we learned what was hard, we watched where the tool got in the way, and we built a better tool the next time. Pencil Code is the 5th iteration.
When the version simplifying CoffeeScript was picked up by David's brother's school for use in many of their classrooms, David realized it filled a need. (David's brother Kevin teaches math at Beaver Country Day, home of the coded curriculum.)
The latest addition was a dual-mode block and text editor (Droplet) created by Anthony Bau. It was inspired by Hal Abelson's observation that perceived differences between blocks and text were a significant problem, a gap that Droplet now bridges beautifully.
Pencil Code is the work of many of devoted students, teachers, open-source contributors, and volunteers. We welcome your participation too: here is our contributor's portal.
David Bau is a professor at Northeastern university. He is director of the Pencil Code Foundation, which he created after leading image search ranking efforts at Google, and before starting a late-career PhD in artificial intelligence at MIT. At Google, David helped lead the teams behind Google Talk (now called Hangouts) and Google Image Search. Prior to his decade at Google, David built Internet Explorer and .NET platform tools at Microsoft and open-source Java enterprise tools at Crossgain and BEA Systems. He is a volunteer teacher with Citizen Schools, and he is coauthor of a textbook on numerical linear algebra. Google uses Pencil Code in its computer science outreach programs.
Xinan Liu, a student at National University of Singapore, contributed the icon-based directory UI, screen shots of student projects, and the browserify-based Pencil Code build.
Saksham Aggarwal, a student at IIIT Hyderabad, contributed the HTML block mode editor and several core improvements to Droplet.
Amanda Boss, an intern at Google and student at Harvard, is developing a timeline interface that will allow students to rewind their programs.
Cali Stenson, an intern at Google and student at Wellesley, is building a UI for visualizing execution traces and changes to variable state.
Dinuka Desilva, a student at Informatics Institute of Technology Sri Lanka, created the filtering UI for long directory views and working on other improvements.
Chris Pirich, an engineer at Code.org, modified Droplet to work well when embedded in the code.org tutorial environment.
Brent Van Minnen, an engineer at Code.org, contributed the ability to drag palette blocks in text mode in Droplet.
Sydney Pickens, a Google technical program manager, curated the block palette, and ran a research study testing efficacy of Pencil Code in classrooms.
Matthew Dawson, a teacher and product manager for Google, created and tested lessons as part of a pilot class and research study for Pencil Code.
David Weintrop, a PhD student at Northwestern, is doing educational research on the transition between blocks and text, using his own customized version of Pencil Code.
Cindy Yang and Ji-Sun Ham, students at the Harvard Graduate School of Education, created a curriculum, videos, and Pencil Cards used in Citizen Schools.
Mandy Hauser, program director for Citizen Schools, is writing and formalizing the Pencil Code curriculum for use in Citizen Schools nationwide.
Caroline Meeks, a charter school teacher at Prospect Hill Academy, is a strategic advisor for Pencil Code, the tool in her classroom and helping to map the CS ed tech space.
Jeremiah Blanchard, a PhD student at University of Florida and program director at Full Sail University, is developing a Python mode for use in his classrooms.
Sharon Lincoln, Chair of the Nonprofit Practice group at Foley Hoag, is providing generous pro bono legal counsel in formation of our 501(c)3.
Siddhartha Sahai, a student at BITS Pilani, is developing a promise-based await extension to Iced CoffeeScript.
Ethan Apter, a Google engineer, coordinated several Citizen Schools classes usign Pencil Code, and is mentoring student contributors.
Yana Malysheva, a Google engineer, is mentoring students and also developing the promise-based await extensions.
D Feher, a Google special projects PM, devised the Pencil Code Gym with music and creative writing modules tor reaching more types of students, and coordinated its implementation and showcasing at Google I/O events.
Bob Cassels, a Google engineer, is contributing a Scheme-inspired arbitrary-precision arithmetic mode for Pencil Code and CoffeeScript.
Anand Ramakrishna, a Microsoft engineer, wrote the node.js backend that serves and stores Pencil Code programs.
Joe Beda, who is ex-Google and ex-Microsoft, contributed the production setup that runs Pencil Code on Google Compute Engine.
Amy Briggs, CS professor at Middlebury, and teaching assistant Tom Dobrow designed and taught a college CS course for nonmajors using Pencil Code.
Pavel Simakov, a Google engineer, contributed the capability to embed and integrate Pencil Code as a widget into other tutorial websites.
Googlers David Saff, and Alison Cichowlas, contributed the Pencil Code Gym implementation, and helped organized youth events using the tool.
Rachel Nicoll, a project manager at the MassTLC Education Foundation, organized and created activities for our first Hour of Code activity in 2014.
Alexander Wei, a Phillips Exeter student, contributed the capability to use tranparent images as nonrectangular sprites.
Weihang Fan, a Phillips Exeter student, identified several bugs that impact beginners, and he fixed autoindenting problems in the ace editor.
James Synge, a Google engineer, created the protractor UI to help debug the turtle, and collaborated on a predecessor to Pencil Code.
Sarah Judd, a curriculum developer with Girls Who Code, and David Miller, a Google engineer who coaches a GWC club, are collaborating to create GWC activities using Pencil Code.
Kim Arcand, a NASA astronomer, and Gus Muench, an AAS astronmer, contributed the Hour of Code activity that lets students program with authentic multiwavelength astronomical image data.
Piper Bau created the first youtube video explaining how to use Pencil Code.
Joshua Greene, Jennifer Hardy, Clayton Weston, Kelly Powers, Elaine Griggs, Kevin Bau, Rob MacDonald, Whitney McKnight, David Case, and Karene Hines are teachers who brought Pencil Code into their classrooms and contributed particularly valuable guidance, experience, and lesson ideas.
Ramakrushna Arugollu, Latisha Silvera, Kevin Egan, Joy Basu (all at John Hancock), Eric Steinlauf, Nikhil Thorat, Emily Bernier, Norris Boyd, Colin McMillin, Jun Lee, Greg Dennis, and Thomas Colthurst (all at Google), taught Citizen Schools and hosted Hackathons using our tools, and helped develop valuable improvements.
Special thanks to Google managers Maggie Johnson, Steve Vinter, Marika Marchegger, Jamie Sue Goodman, and Chris Stephenson, who have all supported David in his quest to contribute to computer science education, and to Code.org managers Hadi Partovi and Sarah Filman, who have supported Anthony in his pioneering work on Droplet. Thanks to Google Summer of Code for financial support for the open-source contributions of three summer students.
You can follow some of the happenings with Pencil Code on our blog.
If you would like to use Pencil Code in your classroom, or if you are developing open-source improvements to the system, please join our discussion group! Add your contact information to teach.pencilcode.net, and we will invite to our group on Slack within about a day.