THE BLOG

The Coding Curriculum - And Why We Need to Look Back to Go Forward

10/08/2016 12:15 | Updated 10 August 2016

The phrase 'back to basics' is widely used when things have gone wrong, become confused, entangled or over complicated. It's a very old saying and a particularly common one too. Very often it is used to instil confidence and trust in getting it right this time.

In the 1970's and 80's some 100 million home computers descended into people's living rooms, bedrooms and garages. Actually as crazy as it sounds many actually originated from garages in the first place.

In the UK we were graced with offerings from Sinclair, Acorn, Amstrad, Dragon and Oric as well as American competitors Commodore, Apple, Tandy and Atari (my personal favourite!). There are of course, many more. This however is not my point.

My point is that all of the above had one key thing in common and that was, when you flicked their on switch, they all displayed something like this:

READY>_

The OS and programming language was called BASIC. More than 100 million home micros were sold during the seventies and eighties.

BASIC was the first thing the user was confronted with and the reason why was obvious. The native language for all computers is machine code or the tokenised version known as assembly language.

2016-08-10-1470824608-5647422-HelloWorldCode.png

This is "Hello World";

Written in assembly language;
.global _start
_start:
MOV R7, #4
MOV R0, #1
MOV R2, #12
LDR R1, =string
SWI 0
MOV R7, #1
SWI 0
.data
string:
.ascii "Hello Worldn"

In real machine code, in hexadecimal it looks something like this;
c73c2a3c2a2b2a5c3c285c2a2b2a5c3c
285c2a2b2a5c3c285c2a2b2a5c3c285c
2a2b2a5c3c285c2a2b2a5c3c285c2a2b
2a5c3c285c2a2b2a5c3c285c2a2b2a5c
3c285c2a2b2a5c3c285c2a2b2a5c3c28
5c2a2b2a5c3c285c2a2b2a5c3c285c2a
2b2a6448656c6c6f2c20576f726c6421

The same in C;
#include
int main(void)
{
printf("Hello World\n");
return 0;
}

Here's an expanded version using Python;
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from random import randint
from time import sleep
import sys
string = "Hello world! "
while True:
attr = str( randint( 30, 48 ) )
outString = '\x1b[%sm%s\x1b[0m' % ( attr, string )
sys.stdout.write( outString )
sys.stdout.flush()
sleep( 1 )

And here's exactly the same program in BASIC;

LOOP
INK = RND (30)
PAPER = RND (30)
PRINT "Hello World! ";
WAIT (1)
REPEAT

In this case we're using FUZE BASIC, a modernised version of classic BASIC comparable to BBC BASIC which was used extensively in education and recognised for being one of the easiest and most powerful versions ever.

The concepts in BASIC are actually exactly the same as all other languages. LOOPs, IF THEN conditional statements, variables, data abstraction, graphics, sound, input & output, external controls and so on. The difference is with formatting and syntax, and this is where the serious problems are highlighted.

When we teach children to read or to play an instrument we don't start with Shakespeare or a twelve string guitar. We don't jump from The Hungary Caterpillar to Shakespeare either, or the triangle to the twelve string. The middle ground is hugely important and arguably, critically so as it is here where children often discover the subjects they are most interested in, that might potentially be career defining.

Applying all this to coding is incredibly relevant as it is not a subject for the masses. In the same way as music, art and drama generally require more than a passing interest to guarantee outstanding results, coding has its own idiosyncrasies that will alienate a percentage of its potential students.

So why are we insisting the first foray into real text based coding should be Python or Java or even C# et al? Why over-complicate a young student's first experience with advanced techniques and processes like the need to import libraries or define encoding techniques and having to adhere to complex formatting.

Going back to BASIC is an obvious solution. More students will learn the fundamentals and gain the confidence likely to switch them on to the idea of coding rather than turning them off completely.

Finally on this subject is the matter of teaching coding from the teacher's perspective. What tools do you use when you too have not been exposed to a programming environment? What will you invest in, what risks will you take, who will you skill up to the task of delivering the computing curriculum? Once again BASIC is more accessible to a wider group and needs little if any training.

2016-08-10-1470824777-3404041-BigBangWarwickCastle.png

Going back to BASIC via FUZE BASIC means there's a ton of content available and plenty of evidence to support it too. John Bercow, Speaker for the House of Commons, recently commented for example attended a FUZE workshop and commented; "I was struck by how much fun the children were having. They were learning, the room was loud, full of energy, excitement and laughter. Every child was engaged and enthralled. I would urge any school looking to enhance its teaching in this field to take a look and get Team FUZE into their school for a workshop".

There's a lot to be said for looking back before going forward but never has a phrase been quite as apt as "Back to BASIC".

Comments

CONVERSATIONS