Sam Woolf

Design and Projects

Physical Programming

Making Computer Programming More Accessible to Children

After spending a few semester teaching engineering concepts in local elementary schools (with STOMP), I became intrigued with the entire learning/teaching process of technical education. In the classroom, our predominant educational medium is Lego NXT Robotics. Some kids pick up the entire process quickly, but time and time again, most problems arose when a child was programming his or her physical car using software program. I wondered whether it would be possible to create a product to smooth the transition from idea to computer program. What if I could create a hands on way to program?

So, I spent a few months working on a research project with the Tufts’ Center for Engineering Education and Outreach (CEEO), and produced a physical way to program, using tangible Sifteo Cubes as the input, instead of mouse clicks and key strokes.

The project was wildly successful. In the end, I built clean, working product, that was highly intuitive. In usability tests, my product was easily and quickly mastered by the users who had never seen Sifteo Cubes, or Lego NXTs previously.

Article on the project here

Technical Specifications

The project boils down to two hardware elements and two software programs. Sifteo Cubes, Lego NXT, a C# program and a NI Labview Program.

I wrote a program in C# controlling the sifteo cubes. This program was the brain of the entire project, waiting for user input from the Sifteo Cubes and then pushing that data to the Lego NXT side. Then, I wrote a separate program using NI Labview, which would recieve the Sifteo user data (commands, order, etc.) through a TCP connection. Finally, through Bluetooth, the Labview program sends the commands to the Lego NXT Robot. The entire process is controlled by a central computer.