Wolfram Computation Meets Knowledge

Wolfram Summer School

Alumni

Connor Bain

Educational Innovation

Class of 2017

Bio

Connor is a proud graduate of the University of South Carolina, where he studied computer science, math and music. He is currently a PhD student in computer science and learning sciences, as well as a member of the Center for Connected Learning and Computer-Based Modeling at Northwestern University, where he studies computational thinking in STEM classrooms, computer science pedagogy and introductory programming environments. In addition to his research, Connor oversees the Models Library of the popular agent-based modeling environment NetLogo and has a passion for teaching.

Computational Essay

Sonifying Clave Son—Exploring Musical Rhythm »

Project: Thinking about Thinking with Turtles

Goal of the project:

For many years, Logo and its programmable turtle have served as an entry point to computation for programmers around the world. While modern languages like the Wolfram Language have developed into true “knowledge machines,” current turtle-based languages like NetLogo are still quite powerful when a problem can be described using agent-based thinking. In this project, we hoped to explore what agent-based thinking looks like in the Wolfram Language.

Summary of work:

Much of the work we did is less of a software engineering project (e.g. lots of code) and more of a language design project (e.g. short, readable code). Because this project meant to make extensive use of Dynamic and Manipulate, I spent much of the time examining these and the accompanying ControlType options. My first attempts to create a simple MABM (Multi-Agent Based Modeling) framework (e.g. many-turtled framework) focused on the idea of “porting” various turtle-ideas into Mathematica code. However, this goes very much against the functional paradigm, so we instead tried to make use of a Locator with a Dynamic position as the basis for a turtle (with the added benefit of draggable turtles!). While this served its purpose, it didn’t provide the “abm” kind of Manipulate that we were looking for.

Results and future work:

Much of the work we did is less of a software engineering project (e.g. lots of code) and more of a language design project (e.g. short, readable code). Because this project meant to make extensive use of Dynamic and Manipulate, I spent much of the time examining these and the accompanying ControlType options. My first attempts to create a simple MABM (Multi-Agent Based Modeling) framework (e.g. many-turtled framework) focused on the idea of “porting” various turtle-ideas into Mathematica code. However, this goes very much against the functional paradigm, so we instead tried to make use of a Locator with a Dynamic position as the basis for a turtle (with the added benefit of draggable turtles!). While this served its purpose, it didn’t provide the “abm” kind of Manipulate that we were looking for.

While the decision of how to model a turtle in the Wolfram Language has been prototyped and proven, the implementation we have here left us with serious questions about efficiency and readability. While we tried to provide a modest amount of syntactic sugar, the syntax in declaring the various functions necessary to call abmManipulate leaves something to be desired.