It’s not just games: how learning to code could change the education system

It’s not just games: how learning to code could change the education system

computational-thinking-word-cloud

Great post over at Penny Arcade, ignited by Obama’s recent fireside talk on Google Hangout, where he echoes the sentiment of computing biased educationalists everywhere:

“I want to make sure [young people] know how to actually produce stuff using computers, and not just consume stuff,” – U.S. President Obama

Les Miller, Professor of Computer Science at Iowa State University inparticular goes into some real detail particularly about how the issue is not just shoehorning programming into the curriculum (in fact that’s likely to be pretty useless). It’s really, as I’ve been arguing recently, about developing the problem solving toolset that you develop as a computer scientist; ie. computational thinking

“This is why using games as an example is so powerful: If you tell students that they’ll learn how to create a video game, they won’t focus on the math, or the skills they have to learn to get there. They’re going to focus on what they need to do to make the games. If the goal is exciting enough, the steps to get there cease to be serious barriers.” – Les Miller, Professor of Computer Science at Iowa State University

Read it here

The National Curriculum for Computing – Key Stages 1& 2 (& for grown ups too)

The National Curriculum for Computing – Key Stages 1& 2

Below is a section from The National Curriculum in England Framework document for consultation which contains the outline for Computing for Key Stages 1 and 2 (ages 5-11). It will be taught across Key Stages 1-4 (ages 5-16, Primary to GCSE) but I wanted to focus on KS 1&2 as I think it is a great starting point for teaching adults too – something I’ve recently volunteered to do with a group of local business owners.

Note the use of the  phrase “All Pupils”. This can potentially create a new generation of computer literate school leavers across all disciplines. For example, we could see

  • Lawyers who are able to read code when looking at Software Quality or I.P. disputes
  • Entrepreneurs able to build their own prototypes
  • Artists able to create new forms of digital media
  • Business professionals able to hack on API’s and “big data” to perform their own analysis
  • … All without “having to ask the techy”, it’s quite a vision…

So here’s what our 5-11 year olds will be learning (so why not join in!):

Key Stage 1 (age 5-7)
All Pupils should be taught to:

  • understand what algorithms are, how they are implemented as programs on digital devices, and that programs execute by following a sequence of instructions
  • write and test simple programs
  • use logical reasoning to predict the behaviour of simple programs
  • organise, store, manipulate and retrieve data in a range of digital formats
  • communicate safely and respectfully online, keeping personal information private, and recognise common uses of information technology beyond school.

Key Stage 2 (age 7-11)

All Pupils should be taught to:

  • design and write programs that accomplish specific goals, including controlling or simulating physical systems; solve problems by decomposing them into smaller parts
  • use sequence, selection, and repetition in programs; work with variables and various forms of input and output; generate appropriate inputs and predicted outputs to test programs
  • use logical reasoning to explain how a simple algorithm works and to detect and correct errors in algorithms and programs
  • understand computer networks including the internet; how they can provide multiple services, such as the world-wide web; and the opportunities they offer for communication and collaboration
  • describe how internet search engines find and store data; use search engines effectively; be discerning in evaluating digital content; respect individuals and intellectual property; use technology responsibly, securely and safely
  • select, use and combine a variety of software (including internet services) on a range of digital devices to accomplish given goals, including collecting, analysing, evaluating and presenting data and information.

Computing At School Hub Meeting: Notes from a developers perspective

Yesterday I attended a Hub Meeting of Computing At Schools (South East Wales area which is led by the brilliant Lucy Bunce). I thought I’d write up my notes as they might help other developers thinking about getting involved.

The Computing At School Working Group (CAS) is a grass roots organisation that aims to promote the teaching of Computing at school

As we went around the well subscribed group and introduced ourselves I quickly realised I was the only non-teacher.

That was observation number 1:

We need to link more people in industry to help teachers. They are doing a terrific job of promoting, advocating and teaching computing but they are under-resourced. Industry stands to reap the rewards of a new generation of computing literate school leavers. STEMnet are doing a great job here but we can do more. If you’re a developer and are not connected to a school and would like to help, have a look at CodeClub, or Computing At Schools – STEMnet will help you with your CRB check too.

Industry experts can have a role here to help with the teachers CPD aspects too. I’m pretty sure that lots of industry devs would be open to helping teachers keep their knowledge up to date with industry (and vice versa). If you’re a dev who’s interested please drop me a line, I’d like to explore this, I’m on twitter @danfbridge

The second observation was that most if not all attendees were from Secondary Schools (but it could likely be the meeting’s not a reflective sample). I know that programming is being taught at some Primary schools as I’ve swapped some great emails with Nicola Schofield who’s been teaching programming via Scratch at St Teresas and Merton Park Primary schools. On this subject, I had a good chat with Jason Davies who is the PGCE Secondary DT & ICT Programme Director at Cardiff Metropolitan University. He was wonderfully enthusiastic about the subject and students on his course are being connected to Primary schools.

For me, primary school is where the real opportunity lies. It’s there that a new generation can be given the materials to construct the tools needed for modern problem solving, mathematics and computing as a horizontal foundation.

Computing is a subject that has multiple foundations ranging from maths and logic to philosophy, art and language. Therefore it is a good vehicle to help dismantle the unhelpful boundaries that lead children to dangerous conclusions such as “I’m no good at maths”. I learned more mathematics from computing than I did from maths, in fact I believe Papert argues that Primary School mathematics is really a branch of number theory that could easily be part of a computing syllabus.

My last observation was the gender bias. There were around 16 or so in the room but only 4 women – two of which had organised the evening. I don’t know if that’s a general trend across computing teachers but I can tell you it’s a definite trend commercially. Somehow, we have to present this material in way that reverses this unhealthy bias.

Computing is undergoing a radical reform in the way it is perceived in regard to other subjects in education; it’s fast becoming a core subject. It’s an incredibly exciting time for the subject and those who work within it, both academically and commercially.

My sense is that, as ever, the teachers won’t have enough time and resources so if you have some spare, get involved.

Ira Glass on Storytelling

Ira Glass on Storytelling

Ever had that feeling that “for the first couple of years of making stuff, what you’re making… isn’t so good?”, let Ira talk you through why that is and why you need to keep going!

(Yes, on the face not really computing or games or education but the more you think about it, it is. To keep someone’s attention, in the end, is often down to storytelling. Read any Richard Dawkins and you’ll find what is the head of a scientist told through the heart of a storyteller)

Ira Glass on Storytelling from David Shiyang Liu on Vimeo.

John Cleese on Creativity

John Cleese on Creativity

Here’s a wonderful talk given by John Cleese on creativity and how to “be” creative. What’s really interesting is that he offers a pretty sound theory that everyone can be creative but you need to be in what he calls an ‘open’ state of mind.

An open state of mind is the state of mind when we are at play and being playful for the sake of play. However, the paradox being that we also need to switch to a ‘closed’ state of mind in order to execute that creativity.

It’s an incredibly inspiring talk and it’s well worth the half hour of your time, particularly if you want to help yourself be more creative and also see if your work environment is helping or hindering that process

John Cleese – a lecture on Creativity from janalleman on Vimeo.

Teaching Children Algorithms : Starting With A Four Year Old

Teaching Children Algorithms

In two months my daughter will be five. This weekend I wanted to teach her two things. The first was to start riding her bike without stabilisers. The second was the word Algorithm, what it means and what one is.

Algorithms - just like riding a bike, sort of.
Algorithms – just like riding a bike, sort of.

The first lesson, riding her bike, is going to take longer than this weekend but she gave it a good crack.

The second, learning about Algorithms was much easier and she got it straight away. I was astonished at how easily she picked up the word and handled it. She can now tell anyone who asks (pretty much me) that Algorithm means ‘instructions to do something’. She even offered her own example Algorithm as I was stuttering around for a suitable one.

Children continue to prove they are mentally as quick if not quicker than I am most of the time. She asked if an algorithm could “paint a square” so we wrote a square algorithm, verbally, during a car journey: draw across, draw down, draw back across then draw up. Granted, it needs some additional accuracy but considering all that was learned and practised in the space of five minutes is incredible.

Her ability to grasp the word, understand it and furnish the word with her own examples gives great credibility to the idea that children at this age can learn to solve problems programmatically. In fact, the hardest part was pronouncing it!

The reason I wanted to start with the word Algorithm was simple. For me, Algorithm is the most powerful word in our Computer Science lexicon. It is the single most important foundation upon which the discipline sits and can build on. That single word can solve millions of problems larger than the mind can often comprehend. It’s a mathematically beautiful concept. The fact a Turing complete machine can run all algorithms is poetry.

Algorithm sounds a bit lofty, a classical sounding word that appears much more complicated that it is. It’s not. Like most mathematics, it’s a simple, economic and elegant idea.

For me it’s the heart of computer science and the part to focus on with children because once they grasp it, everything else is easy.

Sort of.

Successful Software Development is Understanding the Problem Domain: If you don’t fully understand the problem domain, you won’t fully solve it.

I know, it sounds obvious but often we never really spend the amount of time necessary to do it…

Successful Software Development is Understanding the Problem Domain

Over a coffee with Anton and Dave from RantMedia (they recently released Vectrex Regeneration) we got to discussing the complexity of developing software so we reach a point where everyone can build software. The general opinion was that building an app is a non-trivial problem programmatically.

But I started to think it’s not. I think the real challenge is fully understanding the problem domain. Yes, the task of converting that to code is a challenge but as software development tools improve, especially as we move to visual drag and drop style environments, the real challenge is understanding the problem domain.

To understand the problem domain you need three things:

  • The access to those that can detail the problem to you in a complete, end to end manner
  • The time to reflect on it, properly
  • The mental tools to decompose it and then design a solution you can validate with the problem domain owner

As we talked over these things, what struck me was how little quality time the average software engineer gets to understand the problem domain. Moreover, the percentage of the problem domain we don’t know becomes a void that the developer fills with assumptions and half-baked theories which inevitably become bugs. This will be the maintenance nightmare you then inherit which will probably account for the large part of stress in your role as a developer.

Sadly, the amount of time the developer is ‘allowed’ to understand the problem is usually curbed by the organisation they’re part of. For the most part, project management and the drive to achieve sales KPIs can unfortunately mean that most client-work focused organisations are fully loaded toward courting and winning new development work. As soon as new work is won, the sales resource has to move onto the next prospect. The ‘job spec’ is then passed into the development pipeline where the time starved developer has no time to really understand it and it will slowly become a maintenance headache.

So, take the time to understand the problem, the more you do, the better the solution will be and the less time you’ll spend fixing it.

Or to put it another way, you will retain more of your revenue as profit.