Graph is the Topic for Week 3 of Stephen Downes’ E-Learning 3.0 MOOC. Again, he has provided a good Synopsis – see https://el30.mooc.ca/cgi-bin/page.cgi?module=7. In the last three paragraphs in this synopsis he writes:
In connectivism we have explored the idea of thinking of knowledge as a graph, and of learning as the growth and manipulation of a graph. It helps learners understand that each idea connects to another, and it’s not the individual idea that’s important, but rather how the entire graph grows and develops.
It helps us see how a graph – and hence, knowledge – is not merely a representational system, but is rather a perceptual system, where the graph is not merely the repository, but a growing and dynamic entity shaped by – and shaping – the environment around itself.
Graphs and graph theory demonstrate in a concrete way how everything depends on something else, and helps us place our understanding of ourselves, or knowledge, and our work into a wider context. Hash graphs take this a step further by illustrating fundamental knowledge-creation mechanisms as cloning, forking, versioning and merging.
The task for this week requires creating a graph.
I am not very familiar with graph theory. I know some of the language – vertices and edges – and I have seen graphs, but have not known until now that they are called graphs, e.g. I am familiar with the work of Aras Bozkurt @arasbozkurt. See for example the dynamic graph he has created of Twitter activity on this course – https://twitter.com/arasbozkurt/status/1059543856394485760 That’s the limit of what I know about them, because, to be honest, graphs do not ‘light my fire’!
However, I have completed the task, at a novice’s level, so no need to read on unless you too are a novice, in which case you might be interested. I now know a bit more, and made some interesting discoveries, the most important one being that the graph is only as reliable/trustworthy as the data that is put in.
I will respond to each of the three parts of the task in turn.
- Create a model graph of some aspect of the E-Learning 3.0 course (it doesn’t have to be an actual graph, only a representation of what an actual graph might look like. We’ve already seen, eg., graphs on the relations between people in the course. Could there be other types of graphs?
This is my graph – hand drawn, which takes longer, but was good for making me think.
Before drawing this I first read the reading recommended in the newsletter – A Gentle Introduction to Graph Theory and watched a video that I found on YouTube – Graph Theory – An Introduction.
As yet I have only skimmed the other references in the reading list, but have copied them at the end of this post for future reference.
Below, I will describe the tortured way I went about this task.
I was interested in blog posts, the number of posts each participant (who has submitted their blog feed) has made and the number of comments they have received.
I went to my Feedly RSS reader where I have 20 blog posts in my EL30 category and went through all the blog posts relating to EL30, noting down the name of the blog, the name of the author, the number of posts made, and whether each post had received a comment or not, at the same time identifying who the comment was from. I then labelled each blog from V1 to V20. Having done this I was able to pull out all the blogs that have received comments, and identify in terms of V1 – V20, who these comments were from.
At this point I made a number of observations:
- This graph will not represent the activity on the course, because a number of participants have made posts but not received any comments
- I decided to only include comments from people in the EL30 course, whereas participants who already have an established network and blog, have received comments from people not participating in the course.
- I had to decide whether an invited speaker counts as a course participant for this activity. I decided No.
- I had to decide whether Stephen counts as a participant. I decided Yes.
- For simplicity’s sake I did not record the number of times someone commented on a single post. I counted them all as one comment. My main objective was to see who was commenting on which blogs.
Later I skim read this article – https://medium.freecodecamp.org/i-dont-understand-graph-theory-1c96572a1401 and now think that some of these decisions were wrong, e.g. all participants should be in the graph even if they have not posted, or commented, on a blog.
- In your model, consider how the states of the entities in that graph might vary. Consider not only how nodes might vary (eg., a person might have a different height over time) but also how the edges might vary (eg., a person might have a different strength of relation (calculated how?) with another person over time).
At first, I interpreted this as how nodes might vary from each other and noted:
- This might be a first-time blogger or a newly created blog
- The participant might lack the confidence to comment on other blogs
- The participant might be an introvert
- The participant might have joined the course late
- The participant might be a very experienced blogger
- The participant might already have expertise in the topic
- The participant might already be recognised as having expertise in the topic.
- The participant might have more social power
But on second reading I realised that the question was about how individual nodes might vary over time. Presumably the significance of this is to show that the graph is dynamic rather than static. Of course, the graph I have drawn does not show this. It is static. I would have to draw a series of graphs over time to show it changing. This would then show that each node might vary over time by, for example, changing blogging practice, i.e. writing more or less posts thus increasing or decreasing the likelihood of receiving comments, commenting on other posts more or less (is this a function of the node or of the edge??), creating more than one blog, deleting a blog.
At this point I realised that it is easier to think of each node as a blog rather than as a participant, so the blog might become more or less active, over time, more or less connected over time.
How might the edges vary:
- They can be bidirectional or unidirectional
- They might represent a changing number of comments
- New connections might form over time
- Connections might break down over time
- In your model, consider how knowledge about the changes in states in the graph might be used.
At any one time the graph will show:
- which nodes are interacting, and which are not
- which nodes are commenting on other blogs and which are not
- which are the most active nodes and which the least active
- which nodes post comments but don’t receive them
- which nodes receive comments but don’t post them
To get more out of this it would be necessary to:
- include all participants, even those who at the time of creating this graph are not posting or commenting
- consider how to represent a chain of interactions between the same people, i.e. a comment on a comment
- consider whether to include comments from non-course participants
Obviously all this becomes more obvious and easier with a graph that is automatically updated and changes in front of your eyes.
An outstanding question I have is about the limits you put around a graph. For this graph I only looked at blogs and comments tagged #el30. But supposing there was suddenly no activity from any #el30 participant because they had all moved into new blogs and were now interacting with a different set of connections. How would we know that from this graph?
I’m not at all sure that I’ve completed this task correctly. Given that this is a public post, it would be good if any errors were pointed out so that others can see them.
Resources provided by Stephen Downes
This is a gentle introduction to graph theory. Graphs are data structures in which entities – called ‘nodes’ – are connected to other entities via some sort of a link – called an ‘edge’. In graph theory there are no limits on what can be connected, nor how they can be connected. Defining graphs in specific ways, however, creates the structures that underlie most of the modern web.
Neural Networks are types of graphs. In the past I have stated that in order to be a network, a change of state in one entity in a graph must be capable of producing a change of state in another entity. Neural networks are therefore dynamic and interactive graphs. This resource describes a bunch of different neural networks. Different neural networks have different capabilities, and today are playing an increasingly important role in artificial intelligence.
The diagram in this resource describes some different types of neural networks. Take a look at the specific tasks they perform – neural networks are good at things like classification and recognition, as well as regression (that is, finding a trend or regularity in data). I got this image from this page, which has more resources on neural networks. Web:
Graphs are important types of data structures. Instead of thinking of things in rows and columns (the way we would in a spreadsheet or a database) we think of things as nodes and edges. This page has a very brief description of a graph data structure and then a long list of things that can be done with graphs – cycling, sorting, spanning, searching. This page is meant to explore, not to learn – follow the links, try running some of the code (click on the r’run in IDE button’).
You may have heard of GitHub – the open source software repository that was recently acquired by Microsoft for $7.5 billion. GitHub is important because it allows authors to release related versions of their software, to incorporate and merge contributions from many authors, and to allow people to create their own version (or ‘fork’) any application. To do this, GitHub is structured as a Directed Acyclic Graph, creating a series of relationships among code libraries.