Saturday, 15 October 2016

Algorithm terminology 1

Algorithms
A precise step by step guide to achieving a specific outcome. We all use algorithms all the time but often don’t recognise them as such. The order we dress and wash could be described as a
getting up algorithm. Posting a letter, dance steps, making a sandwich or preparing a cup of tea are other common algorithms. In fact we all use algorithms every day of our lives. The important task for budding computer scientists is to break the steps of any algorithm up into the smallest possible steps that could be repeated by someone else or a computer. The cross curricular links in this are many and range from instructional writing in literacy to mathematical methods to solve arithmetic sums. To make the point teachers will often need to be pedantic to an almost ridiculous level.

Algorithms & Programming

All working programs are also algorithms. They are a sub set of algorithm design written in a specific programming language that the computer can decipher. But not all algorithms are programs as you can write an algorithm in an ordinary language that a person would be able to follow but a computer wouldn’t. Algorithms tend to be written in a generally readable language. Whilst a computer program may be written in a programming language which might not be generally readable. Some programming languages such as Scratch are more easily readable/ comprehend-able to a non computer programmer, overlapping the domain of the algorithm more closely.

Logical Reasoning
Logical reasoning is the systematic application of rules to problem solving and task completion. These rules could be mathematical, logical, programming, grammatical, engineering, scientific, story construction in fact any body of rules based around a logical system. Logical reasoning is very important in all areas of knowledge of the curriculum but it is especially crucial for Computer Science as much of the design work is done in your head using programming to test these hypothesis. Logical reasoning is mentioned in KS1, 2 & 3 of the new Computing National Curriculum in England. For primary computer science I interpret this to mean that pupils use an appropriate system of rules to plan and evaluate their work. For example in KS1 the national curriculum says use logical reasoning to predict the behaviour of simple programs. A pupil who understood the constraints and rules of a Beebot would know that they only make 90 degree turns and have set distances for each arrow key pressed so will design routes with those parameters in mind. In KS2 the national curriculum says use logical reasoning to explain how some simple algorithms work and to detect and correct errors in algorithms and programs. A pupils who understood the constraints of algorithmic design will be looking to break tasks up into as small steps as possible and order them in a sequence that works. A pupil could only fix an error in Scratch if they understood the computational thinking rules that govern how Scratch works which depending on the bug might be connected to loops, sequence, variables or selection.
If you are looking to understand logical reasoning in greater depth then the following articles might be of interest.
 Wikipedia has a brief explanation of all three types of logical reasoning. Io9has some great animations to explain critical thinking which might be relevant for pupils in upper KS2. Tech Republic has an interesting article on logical thinking for IT professionals. I especially like the animations on the Io9 site and suspect that all schools should be integrating critical thinking skills into the curriculum.

Debugging
Debugging is the art of fixing or correcting algorithms or programming code. Ultimately in all areas of learning we want pupils to become independent and to find solutions to errors themselves. Computer Science is a really good area to promote this type of learning. All computer scientists and programmers make mistakes as a natural part of the creative process. The best computing lessons are those where the expectation to fix errors is placed firmly on the pupils. Pupils need to be alerted to the 
type of errors they might encounter and encouraged to fix these. Praise coupled with reward encourages pupils to successfully correct their work.

Controlling Physical System
In primary programming a physical system is anything that we can attach to a computer other than a screen. The type of physical systems we might easily control in primary computing science are things such as lights, buzzers and motors. We might also use various types of switches and sensors to trigger our control items other than just a keyboard or mouse such as distance sensors or movement sensors. Typically systems associated with traffic have been good sources of simple control such as zebra crossings, traffic lights and level crossings. However the breath of physical systems that are and can be controlled by a computer program are widening all the time.

Decomposing
Decomposing sometimes called factoring is breaking a problem into smaller manageable chunks that can be solved separately. In a software company this allows different teams of people to work on the same overall project at the same time. For junior computer scientists this might be analysing someone elses program to determine the different problems that they have had to solve to complete the whole or it might involve breaking their own programming project into manageable chucks that they are able to create piece by piece.

Sequence
A sequence is a set of actions or events that must be carried out in the same order every time. Along with selection and repetition it is one of the three basic logical structures used by algorithms and programming.

Selection
Selection is about choice. It is the place where an algorithm or program branches in different directions. Choice can be made in many ways including by the user as in a quiz program (if answer is correct say well done else say wrong) or by a sensor as in a burglar alarm (if sensor detects movement say alarm else say no alarm). Along with sequence and repetition it is one of the three basic structures used by algorithms and programming.

Repetition (loop)
Repetition refers to sections of code or algorithmic instructions that are repeated. There are different types of loop. The most basic is where a set of instructions in repeated a set number of times (repeat 4 [fd 100 rt 90]). Another type of loop repeats continuously until an escape clause is met. When loops are combined with variables the sets of instructions can be adapted in every repetition. Along with sequence and selection it is one of the three basic structures used by algorithms and programming.

Variables
Variables are programming structures that can change or be changed. A simple adventure game may have hitpoints as a variable, as the game progresses the number of hitpoints can be adapted by the program depending on the users choices. Variables can contain numbers or text. The programming language keeps a record or what is currently assigned within a variable at all times. So a score variable can be reported to the user at any time whilst the program is being run. When talking about variables with students the box analogy works best. The programmer creates a box called score and the user adds, takes things away or looks in the box. Using a physical box and counters helps students to comprehend what is happening as the program progresses. This 
quiz plan has a good variables example.

Input
Adding data into a program or computer system. A user could input information to steer a sprite or type an answer using a keyboard or mouse. A more modern input might be voice activated or via a touch screen. A sensor could input data into a system such as temperature or distance from an object.

Output
Output is information provided by a program specifically for a user to perceive. It might be text on a screen, a beep through a speaker or a rumble on a hand held controller.
Computational Thinking
Computational thinking is a term used by Jeanette Wing in 2006, a prominent american computer scientist, to describe a collection of skills derived from the study and practise of computer science. She argued that these were important skills and should be taught to everyone. Computer science educationalists have been discussing what skills should be included in this toolkit ever since.
This video outlines that computational thinking = critical thinking skills + power of computing

In America a really useful set of definitions can be found 
here. DT2 also has a site dedicated to computational thinking that you can find here. For an in depth look at computational thinking skills in the primary curriculum see here.
Abstraction
Abstraction is the skill of reducing complexity by hiding irrelevant detail and focussing on the most important element. This is a really useful computational skill as once the irrelevant detail has been stripped away computer scientists can focus on what really needs doing. Imagine I wanted to turn the game matching pairs into a computer game. The most important element is; you win if items are the same. This can be abstracted further into A = B win, A ≠ B lose.
Generalisation
There are more than one interpretation as to what generalisation means to computer scientists. One interpretation is that of adapting a solution that solved one problem to solve another. In our abstraction example earlier we reduced matching pairs to A = B win A ≠ B lose. We could then use generalisation to adapt this solution to produce a program to code a snap game.
Another interpretation is that generalisation involves replacing many things with one. Lets say I am designing many types of bikes but only want to write one program. I would first decide what all bikes have in common, wheels, frame, seat etc. I can then write a program that uses variables and functions when I get to these features.
Models
Uni Cycle
Racer
BMX
Wheel Numbers
1
2
2
Wheel Width
30mm
15mm
45mm
Wheel Diameter
300mm
1000mm
500mm
Seat Width
90mm
60mm
90mm
Sorting
Algorithms designed to sort numbers into order efficiently and quickly. Three common sorting methods are bubble, insertion and selection sort but there are many others.
Lists, tables or arrays
These are programming tools for storing information that can be used by programs.
Procedures Functions
These are self contained sub programmes that can be used by the main program multiple times. Both a function and a procedure can accept inputs. A function is slightly different in that it can feed information back into the main program. A multiplication function might have two number inputs and feed the answer back to the main program.


No comments:

Post a Comment