What is an Algorithm?

What is an algorithm?

It’s a reasonably straightforward question isn’t it? But one that yields quite a few debates. I’ve written the following answer to ‘what is an algorithm?’ question based around the STEM computing classes with children.

First it helps I find it helps if you pretend you’re asking one of these to solve a problem; if you don’t tell them everything they get into a real mess!

Robot algorithm

 

An Algorithm is a precise set of instructions to solve a  problem*

For me, that gets to the heart of the definition: solving a problem in a precise manner.

The problem being solved could be as simple as calculating the number of times ‘as’ appears in this sentence or as complicated as finding the quickest route for a journey across rush hour London.

What’s interesting about algorithms and not obvious from their definition is that once created, executed and observed they can often be refactored/reused to solve other problems that require the same generic process to solve.

For example, I’ve lost count of the times I’ve written a function to solve a specific problem then subsequently refined and abstracted it slightly to solve a much broader range of problems, often implemented using polymorphism. This elasticity, once you recognise it, is for me, the root of writing maintainable code. e.g. In the example above, rather than searching for a specific word, you would refine the algorithm to search for any word. This is obviously beyond the stated curriculum but a nice example of a way to illustrate a seemingly abstract part of the curriculum.

I’ve been asked about efficacy a few times as part of the definition and my view is that its not part of the definition. Efficacy is important for Computing Science but it’s not part of the definition.

* As some children are pretty young, under 7,  we don’t talk about Turing machines. But I know a few people favour this addition to the definition and describe it as something that could be simulated by a Turing complete machine. Although I do wonder if we could somehow simplify and adapt this into the design and discussion of Turing machines…

Microsoft to discount xbox and train 160,000 primary school teachers for new Computing curriculum

Microsoft to discount xbox and train 160,000 primary school teachers for new Computing curriculum

Microsoft to train 160,000 Teachers
Microsoft to train 160,000 Teachers

Microsoft is implementing a new training program designed to help primary school teachers prepare for the introduction of Computing onto the curriculum in September 2014.

The ‘First Class Computing’ program will help 160,000 non-specialist primary school teachers learn the necessary skills to be able to teach Computing in schools and delivers this through a series of road shows and the introduction of new materials to ensure teachers are ready.
“We welcomed the news of the new Computing curriculum alongside others in the industry because it is absolutely critical for the future success of our young people. The challenge now is to ensure that primary teachers are equipped to deliver it by September,” says Steve Beswick, Senior Director of Education, Microsoft UK.

Read more:
http://www.itproportal.com/2014/01/20/microsoft-training-160000-primary-school-teachers-computing-ahead-curriculum-change/

Google Engineer Says Vietnamese 11th Graders Know Enough Computer Science to Pass Their Interview Process

Screenshot 2013-11-09 09.48.39
Zac aged 4 gets to grips with a Raspberry Pi

Great article over on good.is featuring Google Engineer Neil Fraser

“By grade 4,” writes Google engineer Neil Fraser, Vietnamese students, “start programming in Logo. Starting with sequences of commands, then progressing to loops.” And “By grade 5 they are writing procedures containing loops calling procedures containing loops,” he says.

Fraser also says 5th graders in Vietnam are so skilled, they can do the same programming 11th graders in the U.S. can do, which means that the 11th graders in Vietnam significantly outpace their American peers. Indeed, they’re skilled enough, says Fraser, to succeed in Google’s interview process.

Full article here: http://www.good.is/posts/google-engineer-says-vietnamese-11th-graders-know-enough-computer-science-to-pass-their-interview-process

Raspberry Pi – The Girls Takeover the Pi Shop (in pictures!)

Today I took our group of 20 girls to see how the Raspberry Pi is made at the Sony Pencoed facility in South Wales. Which, luckily for us is literally down the road. Must to say that Sony and the team that showed us around were absolutely fantastic!

Quick stat: They make 30,000 Pi’s a week – and when demand is high have gone up to 60,000!

Ian the Sony guide
Ian the Sony guide

This was the youngest group of visitors they’d had and were really excited to see such an enthusiastic all girl group. After the past 5 weeks of working with them, it was a real treat to hear them talking about CPU’s, Memory and Programs as I pointed out bits of circuitry to them!

I’ll let the pictures do the rest of the talking:

Computing is not Programming

There’s a fair amount of “teaching kids to code is a [great|terrible] idea” style articles around at the moment. For example the Telegraph recently ran a piece titled “The Government wants to teach all children how to code. Here’s why it’s a stupid idea

It’s a bit Clarkson by numbers, which I think was the point, but there are valid points in there and it got me thinking about both sides of the argument. This a good thing.

We are picking up where we left off in the 1980’s in the way we introduce technology to our children – see Nesta’s Legacy of the BBC Micro report. It makes sense to continually evaluate it and make sure it’s right for them and not just right for election campaigns.

The specific aspect that’s feeding the articles comes from the misapplication, or misinterpretation, of Computing for Programming. It’s easy to see why as code is the “stuff” that makes a Computer do something. There’s a good parallel here with being able to read and write musical notation and its composition.

Code is often not the only end product of a lot of design, thinking and problem solving. The valuable end product is often not the code but the data it subsequently produces and increasingly in large volumes aka big data. Being able to understand, manipulate and secure it is important and that’s not the same thing as programming. This is why it’s important to see that being able to write code is really useful but:

Computing is not programming.

Programming is a part of Computing but there’s a lot more to the area of Computing than just instructing a machine with code. It’s also about other aspects such security, privacy, Internet architecture, distributed service and how this affects our social, commercial and global communication.

Computing, as far as we’re concerned as parents and consumers, is largely about the application and use of technology to make things easier for us e.g. receiving an email/photo to the other side of the world in seconds rather than waiting days for a letter, ordering consumables, etc

Academically, Computing exists to solve problems that are too large or too time consuming for our poor old monkey brains to handle – which is usually anything to do with large amounts of data and numbers. e.g. forecasting weather, analysing massive amounts of data from the Large Hadron collisions at CERN, or helping architects develop safer structures through modelling.

Computing is not Programming - Monkey Tools
Computing is not Programming – Monkey Tools

Speaking of monkey brains ,this is really the point of why it’s important Computing as subject needs to be taught from a young age in schools:

Humans are tool users and the Computer is the most advanced and useful tool we have.

We are all taught from a young age to use a fork and knife, but not all of us will be surgeons. I know, it’s a trite example (and I’m certainly not saying programmers are the surgeons of Computing – that’s UI designers for me 😉 but you get the jist, Computing is learning to use a tool and it’s not just about coding.

Here’s a real example:

I worked as a Software Engineer at Reuters in a small R&D team that programmed the Reuters Business Briefing products for web. When I say a small team, although there were only 3 programmers the real team was much larger. Working with us was a team of branding experts, User Interface designers, SQA testers, System Administrators, enterprise network architects, operations deployment engineers and product managers.

If you read back that roll call that worked to deliver what became an award winning product, the number of people writing code was pretty small.

The majority of the jobs on a technical project were clearly not programming. Though, if you talk to the majority of programmers they’d tell you that they’re doing most of the work. But we’re slightly biased!

This is where the educational aspect of Computing beyond coding can have a real impact. There are many great, interesting, important, jobs building products that don’t involve any coding. But what they all need is a solid understanding of Computing.

Why? Because if the research is correct, the next 7 years will see a massive amount of opportunity for our children if they’ve got the correct skills.

Computing Jobs By 2020
Computing Jobs By 2020

We Don’t Need Everyone To Code

We don’t need everyone to code. But we do need people to understand how Computers work and how to use them effectively.

For example, We need people who understand how to search for patterns in the noise of millions of database records, efficiently. How to configure and performance tune a web server so it can serve photographs of people enjoying themselves. And definitely make sure servers aren’t full of security holes – which are usually left open by sloppy programmers.

Code is often not the final destination in Computing.

The valuable end product is often not the code but the data it subsequently produces and increasingly in large volumes aka big data. Being able to understand, manipulate and secure it is important and that’s not always the same thing as programming.

Knife and Fork
Knife and Fork

We are all taught from a young age to use a fork and knife, but not all of us will be surgeons.

I know, it’s a lazy extrapolation (and I’m certainly not saying programmers are the surgeons of Computing – that’s UI designers for me 😉 but you get the jist.

Computing is learning to use a tool and it’s not just about coding.

Here’s a real example:

I worked as a Software Engineer at Reuters in a small R&D team that programmed the Reuters Business Briefing products for web. When I say a small team, although there were only 3 programmers the real team was much larger. Working with us was a team of branding experts, User Interface designers, SQA testers, System Administrators, enterprise network architects, operations deployment engineers and product managers.

If you read back that roll call that worked to deliver what became an award winning product, the number of people writing code was pretty small.

The majority of the jobs on a technical project were clearly not programming. Though, if you talk to the majority of programmers they’d tell you that they’re doing most of the work. But we’re slightly biased!

This is where the educational aspect of Computing beyond coding can have a real impact. There are many great, interesting, important, jobs building products that don’t involve any coding. But what they all need is a solid understanding of Computing.

Why? Because if the research is correct, the next 7 years will see a massive amount of opportunity for our children if they’ve got the correct skills.

Computing Jobs By 2020
Computing Jobs By 2020

Hackable Games, MicroTowns and the Craft Computer at GameCity

Hackable Games, MicroTowns and the Craft Computer at GameCity.

MicroTowns
MicroTowns

Very Exciting!

We’ll be running kids coding workshops at the forthcoming GameCity 8 in Nottingham from October 23rd to 26th.

But even more exciting, we’ll be showing of our Hackable game MicroTowns for the very first time. I know! I can barely type for the all the hoopla.

What’s a hackable game you ask?

A hackable game is one that allows you to hack on the ‘code’ of the game while you’re playing it or running it.

Aimed at children at Key Stage 1 and 2 (KS1 / KS2) ages we’ll be making Craft Computers to learn about the main components inside and some Computing fundamentals such as files and programs.

After they’ve mastered their hardware we’ll let them loose on our MicroTowns prototype which will teach them the basics of Computational thinking and programming.

MicroTown Logo
MicroTown Logo

The schedule, locations, times, nitty gritty, 411 and the lowdown are all here:

MicroTowns and the Craft Computer at GameCity

For the Craft Computer sessons we’ll be using a craft based approach, lots of card, glue and colouring in to teach your little computer whizz-kids the fundamentals. We’ve been running it for the past four weeks in a local primary school with a girls only group and the results are pretty astonishing. Best of all, they love it 🙂

Here’s a pic of them yesterday with their Craft Computer cubes

Mynydd Cynffig Infants - Craft Computer Club
Mynydd Cynffig Infants – Craft Computer Club
The Craft Computer Cube
The Craft Computer Cube

Wales ICT Independent Review from Leighton Andrews’ Steering Committee

Independent ICT Review Wordle
Independent ICT Review Wordle

Last year Leighton Andrews’ Steering Committee set out to report on how to reform the ICT education in Wales. Their goal was to ensure every child in Wales is equipped to take advantage of our heavily technology centric world.

The recommendations in the report are visionary, bold, relevant and importantly they’re achievable.

Here’s the full report as a PDF Wales Independent ICT Review PDF

[wpdm_package id=2]

Wales Steering Committee Report on ICT Curriculum Review

In October 2012, Leighton Andrews, then Welsh AM Education Minister, setup an independent steering committee to report on how to improve ICT education in Wales. Included in the review scope were the following themes:

  • ‘ICT’ in schools needs to be re-branded, re-engineered and made relevant to now and to the future;
  • Digital literacy is the start and not the end point – learners need to be taught to create as well as to consume;
  • Computer science should be introduced at primary school and developed over the course of the curriculum so that learners can progress into a career pathway in the sector.
  • Skills, such as creative problem-solving, should be reflected in the curriculum;
  • Revised qualifications need to be developed in partnership with schools, Higher Education and industry.

The report was published on October 4th 2013.

You can download the full Steering Committee Report as a PDF here Wales Independent ICT Review PDF

[wpdm_package id=2]

Estonian President Explains His Country’s Tech Boom And Why America Is Falling Behind

if you want to transform a society, you have to start with the young people, and give them the kind of education that will allow them to handle the future,”

President Toomas Hendrik Ilves
President Toomas Hendrik Ilves

Business Insider has a great story about the President of Estonia’s speech at a New York conference in which he outlined the two reasons for his country’s current technology boom:

  1. Teaching children to code
  2. A government infrastructure that embraces technology

Read the full article on Business Insider: http://www.businessinsider.com/estonias-tech-success-comes-down-to-2-factors-2013-9#ixzz2gg4RnS00