Programming Machine (PM)

Oya Kosebay

If computer programs are virtual machines, is there a way to see and interact with an object-oriented programming language, like Processing, in a tangible way using physical objects?

http://www.programmingmachine.com



Programming Machine (PM) is a physical system designed to help people learn creative programming languages, such as Processing. It explores complementary ways to explain and exercise some of the core, and highly abstract, notions of visual programming, such as variables, loops, functions and arrays. Rather than entering lines of code into an editor, with PM, students manipulate physical objects on a gridded surface connected to a computer. As they attach new pieces they can control the state of the object and the results of their actions are immediately displayed on the screen. PM is inspired by Constructionist Theory, which states that learning happens most effectively when people are actively making tangible objects in the real world.

Background
My research has begun with an investigation of historical and current attempts, to present programming more tangibly, through the manipulation of concrete objects, such as LOGO, LEGO Mindstorms, Cubelets and Cherp and many more research paper that came out of MIT Media Lab.


I continued with Learning Theories such as Constructivist Theory by Jean Piaget and Constructionist Theory by Seymour Papert. Next, I interviewed expert programmers and programming teachers to better understand how they have learned and taught object-oriented programming and what suggestions they have for more spatial and tangible approaches. At the same time, I dived further into Processing and it's roots to better understand the embedded concepts, learn how to create better applications and ultimately design more effective learning materials for PM. I also investigated mechanical systems and conducted weekly form studies to create a series of physical prototypes for user testing.

Audience
I am targeting adults who are spatial thinkers and learners trying to learn programming.

User Scenario
Programming Machine is a physical system that is made of 3 important pieces. 1) A reactive surface that is attached to your computer acting as your computer screen. 2) Shape creator dodecahedrons that you can place on the surface in order to create a shape on your computer's screen. 3) add-on variable prisms that allows you to add color, size, location, any other information or behavior that you would like to add to your shape on the screen.

The system is accompanied by learning exercises to help spatial learners make connections between the written code and created sketch in Processing.

Implementation
I started with paper circuits to visualize my concept. I knew early on that I wanted to use physical computing for this project . I wanted to link physical objects to Processing by using serial communication. I managed to control color and size of a shape in Processing by using potentiometers. For example for R, G, B values of a shape I used 3 potentiometers mapped from 0 to 255 in a way that would allow the user to intuitively play with the color of the shape just by turning these 3 knobs that are actually Red, Green and Blue. I tested with paper dodecahedrons and prisms to create first prototypes. After seing how the prisms are going to be attached to the dodecahedrons in paper model I designed the pieces in Rhino to be 3D printed. In the meantime I kept reading the Learning Processing book religiously to take notes and come up with different ways to explain programming concepts.

Conclusion
Just to avoid coding required so much coding and I became a better coder during this thesis term. I wanted to experiment as many things as possible and fail in order to find a good way to build the system. I believe I achieve just that. I am still at the beginning stages of this much bigger physical system to learn programming and I am looking forward to continue building pieces and creating exercises that goes along with it. It's been challenging but I am happy with the outcome.