Jump to: navigation, search
.xo BundleModel.xo

see more templates or propose new

This page introduces the System Dynamics activity called Model. Model allows children and adults to easily sketch and simulate system dynamics models. It is designed with a focus on ease of use & discoverability, collaboration, and sharing of results.

Activity status

The activity bundle linked to from here is not yet complete. At this point you can draw stocks, flows and auxiliary variables, but can't yet enter equations or simulate models. With this said, any feedback on the usability is appreciated!


This is how the modelling canvas looks for stock and flow drawings.

Model is being developed around the following principles:

  • modeling is collaborative
through collaboration learners interact as teachers and students, helping develop systems thinking skills. Model will support real-time collaboration for students in the same room or across the internet.
  • the process is important
much of the work of building and simulating models happens outside the stock and flow diagram. Model incorporates this process to help document it and teach best practices.
  • education should be free
Model is free to run, copy, distribute, study, change and improve. I welcome suggestions, ideas, and any improvements or fixes people make.

There are new (June '08) mockups of the Model workflow up for review. Please look at them here and post any questions or comments on the talk page.

Introduction to System Dynamics

"The greatest constant of modern time is change." - John Sterman

System dynamics (SD) is a method for studying the complex systems that make up the world we live in. Systems ranging from sheep herding to national development planning can be explored with SD. What system dynamics brings is a focus on the feedback loops and time delays that produce the behavior of systems, and the visual representation systems. SD modeling involves drawing the structure of the model on the computer followed by filling in the mathematical details. This contrasts with writing a computer program that tries to capture the same behavior while managing computer resources and worrying about reading and writing files. The System Dynamics approach is more transparent and leaves the learner free to worry about the problem and system at hand.

Collaboration is central to learner-centered learning, but current System Dynamics modeling software does not support it. It is through collaboration that learners interact as both teachers and students and it happens whenever people work together on a model. Research has shown that collaboration supports a range of learning styles, encourages interaction with the computer software, and enables group members to explain concepts to each other (Reimann et al. 2007). Until now collaboration learners needed to be in the same room at the same computer, which effectively limited collaboration to the classroom.

Model building is a way to develop a feedback perspective, improve people's mental models, and develop dynamic thinking (Sterman 2000). The relevant question here is: Does the lack of collaboration in model building hinder the development of a feedback perspective in students? Research has shown that collaboration in other parts of the modeling process, including conceptualizing the problem and presenting the results has positive effects (Thomson & Reimann 2007, Singhanayok & Hooper 1998, Reimann et al. 2007). Model is the next step.

More on the field of SD

System dynamics (SD) deals with how things change over time. It is a way to increase our understanding of the world around us that is particularly suited for studying dynamic, non-linear systems. Jay Forrester, the founder of system dynamics had this to say in 1997:

  • System Dynamics uses computer simulation models to reveal how known structures and policies often produce unexpected and troublesome behavior. The computer models are constructed from descriptive information that is usually already known. Such information relates to who is striving to do what, the information that each person has available, time delays in taking action, and what individuals will do under a variety of pressures. The same approach carries over to non-human systems in nature, and physical change...
  • In the more successful schools [with system dynamic programs], system dynamics is combined with a classroom reorganization we call "learner-centered learning." Such a project-oriented approach goes by various names in other proposals for K-12 education, but is especially powerful when combined with system dynamics. Learner-centered learning focuses on solving substantial problems. Teachers are no longer lecturers, no longer the source of all wisdom, not even necessarily authority figures...
  • Students address projects with real world significance for which they have not been given the necessary background and techniques. They start by facing the challenge of learning what they need to know in order to accomplish the project... It is becoming clear that teachers in ordinary K--12 schools can make enough progress in two or three years to achieve major improvements in students' thinking, self reliance, and enthusiasm for learning. - System Dynamics and K-12 Teachers

For a more detailed introduction to the subject, the System Dynamics Society and Wikipedia both have good overviews. In addition to education, it is used around the world, frequently in developing countries, for development planning.

Basics and Other Approaches

While there are many approaches out there for modeling and describing how systems behave, at a basic level you have to specify the mathematical equations that define the structure of the system. All of the system's behavior is generated by this structure. The same problems can be solved by writing code in a programming language (models in systems ecology are frequently written in Fortran), but in SD the modeling is customarily done using a visual model editor where you can define the causal relationships, stocks and flows graphically. This greatly lowers the barriers to learning by removing most of the non-modeling aspects of programming like memory management, file IO, syntax, etc. Don Hopkins started a thread on the Sugar mailing list a year ago on this subject, I've incorporated many of those ideas here. In the SD field today there are several commercial offerings [1][2][3] but no open-source solutions. In addition, the commercial solutions are expensive (usually > $500 dollars per single academic license) and many haven't seen a redesign of their user-interfaces since the turn of the millennium. They have a steep learning curve for adults and are not suited for use by children at all.

use of SD in teaching

Again, to quote Jay Forrester, "Missing from most education is direct treatment of the time dimension. What causes change from the past to the present and the present into the future? How do present decisions determine the future toward which we are moving?" (System Dynamics for Kids) I'll try to briefly give some examples of how SD can be used in a variety of subjects. The examples come from the Creative Learning Exchange (CLE), a great place for learning about and connecting with people involved in developing 'Systems Citizens' in K-12 education.

  • Social Sciences - SD can be extremely effective in helping kids understand the causal and interconnected nature of historic events. There is educational material available for using SD in Civil War lessons, Easter Island, and economics becomes incredibly more accessible using interactive computer simulation models and feedback loop diagrams instead of the traditional static graphs or differential equations.
  • Math - Well SD models are systems of differential equations, but there is a focus on visual interpretation of the structure of the equations. CLE again has a wonderful reference section.
  • Science - Physical systems are easy and fun to model with SD. A cooling cup of coffee demonstrates a stock with negative feedback. Any physical system that you can describe with a differential equation can be turned into a model, which often is a lot easier for people to understand without a background in calculus.
  • Interdisciplinary - SD is fundamentally interdisciplinary. The story of Easter Island is the classic tale of human overpopulation and collapse, and SD models of what happened there can help integrate the anthropological and sustainability aspects of the lesson.

There really are many, many ways you can use system dynamics in a classroom setting, from simply talking about behavior over time to having kids develop their own models of problems that interest them. For any teachers or developers who are interested, I would recommend browsing the Creative Learning Exchange, and posting to their mailing list or the System Dynamics Society list if you would like more info.

Differences from Etoys and Turtle Art

There are currently two activities that provide some kind of visual programming on the XO, Turtle Art and Etoys. Turtle Art provides a snap-together visual programming environment which can draw colorful art. Etoys provides an environment to easily define rules to control user created objects and run them. Both serve their role, but do not fill the niche that SD modeling can offer. You can see below for an example of how a simple system dynamics model looks - they can make the feedback loops of a system much more clear than the list of equations you would get in either Turtle Art or Etoys. Turtle Art and Etoys are very good at describing agents, but are not as expressive at SD for describing the behavior of systems. The three have their place on the XO, and there are great possibilities for integrating a SD approach and Turtle art in the future.

"Model" Activity Details

The Activity will have three main components: a model editor, a model presenter, and tutorials. The model editor will allow kids to easily and visually design models, and the model presenter will allow them to annotate and animate them to show to their peers, families and teachers. The tutorials will be created in the model presenter and packaged with the activity, illustrating the basics of system dynamics and how to use Model. The goal will be to have a functional activity early on, and incrementally add features through the rest of the summer. This way if any unforeseen troubles crop up or push deadlines back, there will be a product No Matter What. I should say I plan on continuing the project into the fall and beyond, but its always best to be on the safe side.

Model Editor

The models created will look similar to the following mockup, but may span several pages (or 'sketches') when they become too big to fit on one screen. I'll be using the human interface guidelines, and will have a toolbox at the top. Modeling will eventually be a collaborative activity, several people can work on editing a model at once and models would be saved in the Journal as usual. I've been spending my time recently on actively developing the simulation engine, so while I have many ideas for the Editor, I'm also wide open to suggestions.

Rabbit Model mockup

The modeling pallet will be where users can click to add stocks (like population), flows (the thick lines in and out of stocks), variables (that define the rates of flows, and others), and influence (the blue arrows, showing where variables and stocks are referenced) to the model. Children will also be able to add shadow variables, variables that are defined in other parts of the sketch or on other sketches. It will look similar to the following:

Undo Redo Copy Paste Stock Rate Variable Influence Shadow

There are two big things that I would like to see for equation editing: tokens for referencing other variables and something like interactive latex formatting for the equation field. With something like the tokens you can use in Cocoa on OSX (NSTokenView), it would ease the problem of typing in long variable names, they could be autocompleted or dragged in, and only valid identifiers would show up as tokens. This could be created as a subclass of GtkEntry or GtkEntryCompletion. As for the interactive equation formatting, I'm envisioning something like what is available in Grapher, again on OSX. These two components aren't core functionality, and will be worked on after the editor, presenter, and tutorial are complete, time allowing.

Presentation Creator

System dynamics can bring large insights to common problems for the people creating the models. As kids do, they will want to share what they've learned. I want to make that as easy and fun as possible. This could include graphs of the behavior over time, annotations, and basic shapes to highlight parts of the screen. One idea is to be able to reveal a part of their model at a time, to explain each part of the structure on its own and show others how they made it. Kids could also have their model run, and reveal the behavior on the graphs over several seconds, or even have simple animations (like arrows changing width). There are so many possibilities with this, getting a good framework in place to expand on is probably most important.

Simulation engine

I have a simulation engine that can run models today. It numerically approximates the solution to a set of equations with respect to time through the Euler method; I will eventually add additional integration techniques. By the summer it will be packaged as a shared library with the ability to edit models, execute them, and provide the data and results. It's written in a sane subset of C++, and I'll be creating Python bindings for it. Eventually I would like to expand this to be able to access and operate on geospatial GIS data (hard), as well as the execution of Turtle Art models (not hard), but that will probably happen in the fall at the earliest.

About Me

Please check out my user page for information about me, Bobby, the main developer.

Activity Summary

Icon: Sugar icon::Image:Model-icon.png
Genre: Activity genre::Math and Science
Activity group: ,|x|Activity group::x}}
Short description: Short description::Model allows you to do System Dynamics modeling on the XO. System dynamics helps you think about and solve problems involving things changing over time.
Maintainers: ,|x|Contact person::x}}
Repository URL: Source code::
Available languages: ,|x|Available languages::x}}
Available languages (codes): ,|x|Language code::x}}
Pootle URL:
Related projects: Related projects,|x|Related projects::x}}
Contributors: ,|x|Team member::x}}
URL from which to download the latest .xo bundle Activity bundle::
Last tested version number: Activity version::8
The releases with which this version of the activity has been tested. ,|x|Software release::x}}
Development status: Devel status::3. Alpha
Ready for testing (development has progressed to the point where testers should try it out): ,|x|Ready for testing::x}}
smoke tested :
test plan available :
test plan executed :
developer response to testing :