This guest blog post is part of the Application Developers Alliance “Developing for Good: Kids Who Code” campaign. With “Kids Who Code,” we are celebrating the trend of youth digital literacy. Find out more about the campaign here. Upcoming “Developing for Good” campaigns include “Productivity,” “Public Safety,” “Energy Efficiency,” and more.
The title ‘Turtles in Space’ is based on my admiration of Seymour Papert’s Turtles which I followed at feynlabs. I co-relate the idea of Turtles to ‘Space’ in my work with Ardusat in teaching kids Computer Science. I also write this article both as a technologist and as a dad of an eleven year old son who is on a high functioning Autistic spectrum. In this article, I outline a goal to create an Open (in Creative commons) modeling system for education that ties Systems modeling to code within a specific context (in this case, space exploration).
Current modeling techniques like UML state diagrams and Agile modeling are designed for business systems. Business systems have to be complete and correct. They are not suited for modeling a process iteratively where initial versions of model may be flawed but will evolve with better understanding.
The insights are based on trials we (Feynlabs) have conducted for two years with schools and teachers in UK and Holland. The aim of this work was to investigate methods to learning of Computer Science through Open, Collaborative processes.
Modeling vs. Coding
Firstly, let me summarize an excellent article which forms a perfect backdrop to this discussion (Coding is not the new literacy). Here is my interpretation of the key ideas:
Ability to capture models of the world: Writing allows us to put our thoughts into words on a page. Similarly, Programming allows us to offload the thinking we have to do in order to execute some process. Teaching people IF statements and FOR loops is easy, but that does not make them more capable. Unlike writing which captures our thoughts, Programming allows us to create and capture models of the world.
Using models to make decisions and predictions: Human beings are good at creating mental models. We use these models to make decisions, predictions and to understand new experiences in terms of previous experiences. Thus human learning models are not static, they are evolving. If we want computers to be able to compute for us, then we have to accurately extract these models from our heads and record them. Thus, coding (ex writing Python) isn't the fundamental skill we need to teach people, Modeling systems is. Modeling is creating a representation of a system (or process) that can be explored or used. This definition encompasses a few skills, but the most important one is specification. In order to represent a system, we have to understand what it is exactly, but our understanding is mired in assumptions. Defining a system or process requires breaking it down into pieces and defining those, which can then be broken down further. It is a process that helps acknowledge and remove ambiguity and it is the most important aspect of teaching people to model.
Incomplete and iterative specifications: The process of creating a model is an act of discovery - we find out what pieces we need as we shape our material. This means we needn't fully specify a system to get started, we can simply craft new pieces as we go. We end up exploring the system as we create it and don't have to get a "complete" model to gain value. (PS: This idea was explored in a book I recently reviewed: The Curiosity cycle by Jonathan Mugan)
Modeling both human interactions and how a computer models tasks: Coding requires us to break our systems down into actions that the computer understands, which represents a fundamental disconnect in intent. Most programs are not trying to specify how things are distributed across cores or how objects should be laid out in memory. We are not trying to model how a computer does something. Instead, we are modeling human interaction, the weather, or spacecraft.
Models can be incomplete or wrong but that’s OK as long as they can be updated: Our models often start out too simplistic or even obviously wrong, but that's perfectly acceptable (and arguably necessary), as we can continue to update them as we go.
Modeling involves four distinct processes: Specification: How to break down parts until you get to ideas and actions you understand. Validation: How to test the model against the real world or against the expectations inside our heads. Debugging: How to break down bugs in a model. A very important lesson is that an invalid model is not failure, it just shows that some part of the system behaves differently than what we modeled. Exploration: How to then play with the model to better understand possible outcomes and to see how it could be used to predict or automate some system.
Space Clouds: Modeling Problems in Terms of a Specific Context
To recap, the overall goal is to create:
A open modeling system for education
That ties Systems modeling to code
Within a specific context (in this case, space exploration)
As discussed above, such a system should have the following characteristics:
Ability to capture models of the world
Using models to make decisions and predictions
Incomplete and iterative specifications
Modeling both human interactions and how a Computer models tasks
Models can be incomplete or wrong but that’s OK as long as they can be updated
Modeling involves four distinct processes: Specification, Validation, Debugging and Exploration
In addition, we want to incorporate the following:
Co-relate systems models to code. The topmost level would be based on a physical process (ex a temperature sensing in a satellite), which would then be tied to the Computing process including Code. So, the idea is to create a simplified diagram where we are able to model computer science processes across HW/SW/algorithms across the stack. The model would thus tie the concepts, practice and code together.
Use Context specific learning i.e. the Concept/Context pedagogy.
Create an Open system
Create an expandable system within the specific domain. For instance, for Space exploration, the model should be able to include 3D printing of a model satellite, Apps, Drones, High altitude balloons and Cubesat satellites. All of these are manifestations of the same concept from a learning standpoint.
The modeling platform should be visual.
The modeling methodology should be Inter-disciplinary because most problems are complex and span multiple domains.
Permit ‘back of envelope’ modeling.
There are two inspirations for this model:
The Turtles and
Turtles in space
I have been a fan of Seymour Papert’s Turtles based on my work at feynlabs. Turtles in Python (Python Turtles) and in general (Turtle Graphics) are a great way of learning to code. Object Oriented paradigms (like Turtles) are an easy way to start learning Programming (as opposed to Procedural Paradigms) because they help to tie back to the problem/context easily. The Turtles concept also downplays the more complex aspects of OO programming such as Inheritance and Polymorphism.
A concept map is a way of representing relationships between ideas, images, or words in the same way that a sentence diagram represents the grammar of a sentence, a road map represents the locations of highways and towns, and a circuit diagram represents the workings of an electrical appliance (Wikipedia). While similar to mindmaps, concept maps show the big picture of the entire ecosystem. In contrast, mind maps are based on a single theme. Concept maps were developed by Joseph D. Novak and his research team at Cornell University in the 1970s as a means of representing the emerging science knowledge of students. Concept maps are based on the learning movement called constructivism. In particular, constructivists hold that learners actively construct knowledge. Novak's work is based on the cognitive theories of David Ausubel (assimilation theory), who stressed the importance of prior knowledge in being able to learn new concepts.
Space Cloud: an Open Model for Exploration
So, how could we put it all together?
Our aim is to create an open modelling system for education that ties Systems modelling to code within a specific context (in this case, space exploration).
We can think of the Space Clouds as a unifying Data layer/software objects/class having the following characteristics:
The ability to model varying space objects (Satellites, Drones, Planets, Space missions etc).
Like an Object (such as the Turtle Object) – each of these are Objects have behaviour and data
Each lesson starts with describing (modelling) the objects involved in the ‘world’ – ex in a high altitude balloon – jet stream could be defined as part of the space cloud. This is a very easy paradigm to understand for a Child. Depending on the problem – the Objects could be Planets, Satellites, missions (Orion, Rosetta).
The modelling process is based on Concept maps and is designed to work with incomplete models.
The modelling process has a palette which comprises common objects in Space but also computing objects. So a process can be modelled visually from two dimensions i.e. both as people see it and computers see it.
Space clouds is Programming language agnostic but the conceptual model ties to actual code.
In this article, I advocated an Open system. The overall goal is to create an Open modeling system for education that ties Process modeling to code within a specific context (in this case, space exploration). I hope to develop this system in creative commons for Space exploration working with Ardusat. There are many complex learning problems we can model such as weather prediction using Ardusat. In future posts, I hope to develop this method further in Creative Commons.
Also, if you are based in London, we are launching a new workshop in partnership with Ardusat. The workshops emphasize Computer Science, especially through problem-solving skills and creativity, within the context of space exploration. The workshop will launch at Fab Lab London this Spring. More details HERE
If you wish to know more and collaborate in this venture, please email me at email@example.com
Image source Valiant turtle – wikipedia
About the author: Ajit Jaokar is the founder of futuretext (www.futuretext.com). His current research is based on Data Science for IoT. He teaches at Oxford University and UPM(Technical University of Madrid) on the same themes. Ajit is committed his social start-up feynlabs (www.feynlabs.com) which teaches Computer Science to kids.