# AgentCubes

AgentCubes is an educational programming language for children to create 3D and 2D online games and simulations. The main application of AgentCubes is as computational thinking tool teaching children computational thinking through game and simulation design based on the Scalable Game Design curriculum.
Similar to a spreadsheet, an agentcube is a grid-based organization. An agentcube is a four dimensional organization consisting of rows, columns, layers cubes containing stacks of programmable agents. This grid-based organization is useful to create a wide array of applications ranging from 1980-style arcade games such as Pac-Man, over 3D games to simple agent-based model. Agents can be given user created 3D shapes, they can compute formulae, move in the grid, change appearance, play sounds, animate themselves, and send messages to each other.
AgentCubes was developed with support by the National Science Foundation. Research explored if K-12 students could pick up computation thinking patterns designing games and, if later, these students could leverage these computational thinking patterns to transfer skills to make STEM simulations.

## History

AgentCubes is inspired by AgentSheets which introduced modern drag and drop blocks programming in 1995. Most notably, AgentCubes transitioned from 2D to 3D design including highly accessible 3D modelling technology called Inflatable Icons. Historically, both AgentSheets and AgentCubes are rooted in an early prototype of parallel programming for children running on a Connection Machine 2, a massively parallel supercomputer. The notion of massively parallel computing carried over to AgentCubes but leaving out the need for supercomputing hardware.
* AgentCubes Desktop (2006). The first AgentCubes implementation was a MacOS/Windows desktop application
* AgentCubes Online (2012). AgentCubes online shares the same user interface but is complete rewrite based on web technologies such as HTML5, JavaScript and WebGL
AgentCubes Online has been used in large National Science Foundation teacher professional development scale up projects nationally in the US and through the support of private foundation in countries such as Mexico, and Switzerland. In 2017 1 million projects were created. AgentCubes online is now available in English, Spanish, German, Italian and French.

## Computational Thinking Tool

With the goal to shape computational thinkers and not necessarily programmers AgentCubes, and AgentSheets before it, have the goal to be computational thinking tools and not programming tools. Computational thinking tools make Computer Science education practical in K-12 by combining Programming Support Tools with Creativity Support Tools:
* Programming Support Tools: Beyond just supporting syntactic challenges addressed by drag and drop blocks programming, programming support tools also address semantic and pragmatic challenges. AgentCubes, for instance, supports pragmatic challenges and aid the debugging process by supporting the study of what programs mean in particular situations
* Creativity Support Tools: Research with indicated a close connection between the motivation to program of students and the ability to create their own designs. AgentCubes extended this notion by including tools that would make 3D modelling accessible and even include the ability to 3D print objects created.
Programming in AgentCubes is based on an IF/THEN parallel conditional rule formalism. Lists of conditions and actions can be assembled into rules. Rules, can be wrapped up as methods with names which can be invoked by other rules. In the spirit of computational thinking tools it is typically possible to implement games and simulations with a small number of rules. For instance, a complete Pac-Man-like game including sophisticated AI allowing the ghost to collaboratively track down pac-man can be written in just 10 rule. Similar rule-based tools are ToonTalk, or Microsoft's Kodu.