A new addition to the IGCSE Computer Science syllabus this year has been the inclusion of cryptocurrency as part of their Internet and it’s uses chapter. This is my third year teaching this specific course and I must admit, the guidance for this portion of the topic felt rather superficial. Given my very limited exposure and understanding of cryptocurrency in general, it took me some time to get my head around what would make most sense for students. Of course, the obvious parts of it was the definitions, terminologies, technology used etc. But I wanted to try and expand this part of the unit to something a bit more real. So, this post is a short summary of sorts of what we have been able to achieve thus far.
Starting with the basics
One of the first things I did was get the students on Edpuzzle and watch/answer questions related to what exactly cryptocurrency is. I found this wonderful little introduction video which went over everything from the barter system in the old ages all the way down to the existence of virtual currency. This activity in some ways set the scene for some of the concepts we would go over in the unit.
The classroom discussions that followed evoked more questions – as was being hoped – than responses. Students were understandably confused about various fundamental things despite this introduction. How real is this type of currency? How exactly does one go about “making money” this way? What does one have to to do specifically to “get involved” in cryptomining? What are the safety issues related to it? The list was long.
We then tried out this interactive “mining simulator” which introduced us to blockchaining. The idea that each “task” or transaction needs to be packaged into a verified and secure “block of information” that is linked to other similar blocks of information was a relatively easy thing for them to process.
The concept of each transaction block having it’s own secure hash value was an intriguing concept. We went over the SHA algorithms and the complex ranges of math they use to create unique, secure and extremely hard to crack hash keys. This provided a good lead on to the possibility that we may actually be able to write a simple Python program to simulate a “hash value” like scenario for inputted text.
What was pretty interesting to talk about as a group was how a traditional banking system was more about this is my account and no one else should know anything about it except me and the bank while crypto world was more about lets make all transactions public within our blockchain and ensure we all know what transactions are taking place since no one is policing us.
To give them additional support and context with the actual processing of mining, I built a small class activity which required them to pretend to be mining nodes in a block chain network whose job it was to help mine coins. To do this I split them up into groups of 3 where each person played the following roles.
- Roller: The person assigned a task which needs to be completed. In our case the task was being able to successfully roll different combinations of numbers on a dice. So rolling a 1 thrice would help you earn 25 BTC. Rolling 1,3,5 would help you earn 50 BTC etc.
- Verifier : The person assigned the job of ensuring the task was successful (the bank in the real world)
- Recorder: The person assigned the job to update the distributed ledger of transactions.
The class then used a shared Google document – with edit rights only given to the recorders while the rest of us were view only – to update entries for each successful block transaction created. They even had to come up with some sort of hash value for each transaction.
The discussions then turned to some of the following points:
- Would the mining have been less/more effective had one/all of the groups been given more dice?
- How much energy did you have to spend to make the task a success? What if the task was more complex? Like only rolling a sequence of 6,5,4,3,2,1 got you 25 BTC?
- What do we think about the trade off between effort required to complete the task vs how much money is actually being generated?
- If we equate the rolling action to energy consumption (electricity, hardware, resources) then what impact does having a machine running 24/7 have on the environment? How does this link to the cost of living crisis happening in the UK (and around the world!) at the moment?
We then moved on to creating a very simple Python program which would accept a string of data, process its ASCII and then the Hex values to then create an extremely weak albeit unique hash value by connecting a timestamp to it. The hash value would be a combined set of different parts of the source along with a timestamp attached to it. This led to discussions about the following:
- How secure is this method? What are its strengths and limits?
- What can be done to increase its strength? Why does this matter?
- What other creative/innovative ways can we think of to make a hashing algorithm truly powerful? etc…
Below is an example of what we were able to create.
Getting real voices into the class
As a good way to bring closure to this topic, I went around the community trying to find out if there was anyone who was actively (or in the past) involved in cryptomining work. To my pleasant surprise I found support from both colleagues and students! I had a senior come in yesterday during the lesson and talk about his experiences with bitcoin mining and the different, less glamorous, aspects of it. I am also reaching out to members outside the community right now to get their voices heard for a hopefully more complete picture of how vulnerable digital currency can be.
Some of the questions students came up with to ask the real life (and full time) miner we will be talking to soon.
Here are some more interesting websites I found related to this topic. I hope to keep adding more links and resources to this blog post as and when I find them.
The best part of this experience has been how much I have learnt about these concepts. I am not money minded at all. So for me to be able to teach a topic surrounding finance was a bit of an uphill challenge. But I am happy that I was able to gather some interesting sources which I am hoping will help students – current and future – get a better perspective on the extremely volatile and fragile nature of this sort of money. Or is that true for any kind of money?