# feynmaps – a visual way to represent Computer Science concepts in education in schools

Here is what I have been on with Feynlabs.

We call it feynmaps – because my original motivation was feynman diagrams In theoretical physics, Feynman diagrams are pictorial representations of the mathematical expressions governing the behaviour of subatomic particles. In essence, a visual way to represent complex interactions

In the teaching of Computer Science in schools, I wanted a simple, visual way to unify concepts with practice. If we consider the Pi, Arduino etc (doing) .. often we focus on the doing .. but not on the concept.

So, feynmaps is a simple, visual way to represent Computer science interactions to students, to  include HW/SW and Algorithms holistically and unify practice with concepts

This is work in progress .. so I will post more about it later. But here are some initial ideas:

1)     I am drawing on the ideas and notations from  UML state diagrams(more specially Harel state charts). But UML state diagrams are too complex for learning and they focus on precision and completeness of a specification. At a learning stage – we want flexibility, simplicity and ‘back of the envelope’ mechanism

2)     So, the idea is to create a simplified state diagram where we are able to model computer science processes across HW/SW/algorithms across the stack and tie the concepts, practice and code together

3)     The topmost level would be based on a physical process (ex a
temperature sensor).

4)     The time dimension could be horizontal and the stack dimension could be vertical

5)     We want to focus on minimalism

6)     Note flowcharts are not the same since they don’t cover a change of
state (http://en.wikipedia.org/wiki/State_diagram#State_diagrams_versus_flowcharts)

7)      The main diagram could be simply two end points  node Input objects and output objects – Human, software, sensor, device, algorithm and sets(collections)

8)      The lower layers could focus on implementing the concept across the stack

9)      The code example could be the lowest layer

10)   Schematic example An analogy in UML
The bank ATM but the model also shows also the processes underlying it ie serving customer is the main process but behind it are others that customers do not see but are useful to model and understand as a system

source UML state diagrams

ex temp sensor can be modelled as an interaction using Pi/Arduino etc and then if statements and for statements which use to poll the GPIO pins as a lower level / composite process
So, my proposed approach is to address from two sides

a)  which programatic concepts to model (bottom up)

b)  which processes to model (top down)

and then draw it out -

That will be a start.

I will take a back of napkin approach although it will use UML like visuals (subset of UML)

Its a modest start but by releasing in public domain and open sourcing it effectively feynmaps can evolve over time

I am already collaborating with various schools and educational institutions and comments welcome at ajit.jaokar at futuretext.com

To recap, the idea is to represent any Computer Science process from a teaching perspective in a simple, back of the envelope manner and tie hardware, software, algorithms and code in a visual manner

PS – There is also an analogy with V diagrams – see a good paper on V diagrams (you can download the paper as a free pdf from the link in top left corner)  thanks to Henry Liebling for the suggestion

Comments welcome at ajit.jaokar at futuretext.com