[I'm thinking about how to develop computational thinking skills from the early years up. Here are some foundation facts about information and process which might be helpful for teachers to identify what is important].
Computational involves an understanding of how to organise information according to its attributes, and processes for systematically manipulating this information to solve real world problems. There are often multiple ways of solving the same problem, some of which are more efficient than others. Computational thinking involves considering trade-offs such as saving time but using more space, or spending time now to save time later.
Here are some foundation facts about information and how to systematically process it. They do apply to the real world, but really come into their own for dealing with large digital data sets.
- You can classify objects according to attributes such as size, colour, weight.
- Objects have more than one attribute e.g. this ball is both red and round.
- A collection of objects can be arranged into groups, depending on their attributes. e.g. a pile of toys for each colour or a heap of heavy and a heap of light objects.
- In order to decide which category an object belongs to, you need a way of deciding equality of attributes. That is, you need to be able to compare objects to decide whether they are the same on a particular attribute (e.g. they are both red),
- Depending on which attribute you use, a collection can be split into different groupings. A red ball could belong to a group of red objects or a group of round objects, or a smaller group which is the intersection of these.
- Objects can be sorted into an order according to a chosen attribute. For this you need to decide on an ordering operator - a way to decide which is bigger or smaller. For example, a shelf contains a collection of books sorted in alphabetical order.
- There are different ways to sort collections (known as sorting algorithms) and some of these are more efficient than others - that is, some are quicker, some take up less space. It is useful to consider efficiency for sorting very large collections e.g. all the books in a library.
- There is an efficiency trade-off between search and sort. It can be useful to sort objects within an collection because it makes it quicker to find a particular object next time you look for it. On the other hand, if you seldom need to search for objects in your collection it may just be a waste of time to sort it in advance. The scale of the collection matters too - it might not be worth using a complicated sorting algorithm for a small number of objects, but it may be impractical to sort a very large data set without one.