Showing posts with label Computational Thinking. Show all posts
Showing posts with label Computational Thinking. Show all posts

Friday, 11 September 2015

How to teach programming logic with an app bundle

In recent times, there has been a large interest in helping children across the world develop skills related to programming. While some countries refer to it slightly differently, the concept and content remains very similar.

Computing has made its way into national curriculums, brought about lots of initiatives across the world and has also had a lot of attention in the media – it is now seen as a vital skill for young people to be learning.

While there are many great apps across different technologies for introducing students to actually writing code themselves, the question is, what is the best way to learn the ‘computational thinking’ and 'programming logic' side of coding?

For this very reason, we created some unique apps to help deliver this. They have been out for a while as individual apps but we have now made them into bundles; so you get three for the price of two.

There is one for age 8-11 year olds and one for age 11-14 year olds:

8-11 year olds: www.bit.ly/DMcomputing1

Teaching programming logic with iPad apps - 8 to 11 year olds

11-14 year olds: www.bit.ly/DMcomputing2

Teaching programming logic with iPad apps - 11 to 14 year olds

Let us know how you've approached this topic in your class with a comment, we're really interested in hearing your ideas.


Thursday, 2 April 2015

What’s the password?!

It can be tricky thinking of engaging ways to help explain some topics on the new computing curriculum. One idea is to find a 'real life' problem and reflect it in that; so when it came to designing a task for the topic of ‘using logic reasoning to explain algorithms’, I was debating what would be best to use.


It was during this ‘thinking period’ that I tried to enter my kitchen at home, to be met with "what's the password?" My seven year old daughter does this quite often: she loves the idea of passwords. Soon after, I was allowed in when I guessed one of the usuals (the word 'purple') and I thought of the idea for our new task.

With so many login details that we as adults even struggle to remember, creating strong yet memorable passwords is important for us as well. Bob and his family were created - a family of four who struggle to remember passwords, so Bob, the father, creates an easy-to-use algorithm for his family which they can all use, yet it produces different passwords depending on what's in each 'variable'. 

It’s a ‘current’ topic and a problem of many, but also a simple and effective way of explaining how an algorithm works. It also made for a mystery which adds to the digital literacy section of the curriculum – keeping personal information private!

I personally use an algorithm for creating passwords, and it's worked great for me so far, so what's good for me is good for Bob! The main thing is it creates a memorable and strong password for any website based on a combination of input variables and some rules. These are simple inputs such as their names, a secret number and a website name. It will help with explaining a number of concepts in one go.

One of the slips
By introducing all this through a story about a person coming up with a way to help his wife and kids generate and remember passwords, it is possible to include all these ideas into a nice story thread that will not intimidate KS2 students. This can also be used to explain how the same algorithm generates different outputs based on different initialization values and input variables. It can also challenge students to come up with their own password generation algorithms.

Students need to understand that algorithms are not limited to computer programs and this task provides a good example of one that they can use any time – such as to stop unauthorized people going into kitchens.

You can find out more about this mystery by clicking here. To try it (£1.49), search 'Digital Mysteries Algorithm' on the App Store or click here. To download a trial of the Windows PC/laptop software click here.

Thursday, 27 November 2014

How can KS3 use the logic behind coding without coding?

There are many useful coding tools which are doing wonders in classrooms. The question is though, what’s the best way for KS3 to learn the ‘computational thinking’ side of coding; part of the new computing curriculum?

It could be argued it’s to introduce students by using ‘real-life’ topics which they can relate to and get excited by. Small groups of students can discuss and debate certain situations, exploring what they may or may not do. The important thing to note is that these topics don’t even need to be directly coding-related.

Take, for example, each group being asked to ‘help’ a team of game developers decide whether they should make their new athletics game browser-based or for a console. They’re given short snippets of information on the dilemma such as how certain languages don’t allow for amazing 3D graphics, whereas others may make multiplayer easier.

Much of the decision depends on what features they see as most important, but also facts on actual programming languages. Students become engaged because they’ll be discussing their own personal opinions, imagining themselves ‘in’ the position of the gamer but also the developer too. While doing this, they’re being introduced to the kind of real-life decisions coders make every day.

This mystery in particular introduces programming languages at a higher level than specific details of languages, but gets across the point that in many cases, as a coder, compromises must be made.

There are two other computing mysteries for KS3 students to solve, and all come with three levels of difficulty. As a summary, one is a ‘whodunit’ which introduces students to Boolean Logic and the other asks groups to think of a solution to sorting out lots of new books.

If you’d like to try these tasks out at your school (plus have access to a Mystery Creator), we have a special Christmas offer.

Buy Digital Mysteries before Christmas and we’ll give you 50% off our usual price (12 month subscription). You and your students can get started shortly after you order, yet your official 12 months won’t begin until the New Year.

For £200, have your whole class using these tasks, as well as access to over 30 other KS3/4 mysteries in various subjects. To find out more, click here.

Sunday, 1 June 2014

Computational Thinking

There is more to computer science than programming

The new Computing At Schools (CAS) curriculum puts ‘Computational Thinking’ as a main feature of the program of study. At first, I didn’t pay special attention to the term; I thought as long as it’s something related to programmers and computer scientists, then I must have been doing it for years now anyway, so there’s no need for me to worry about what exactly it means.

With me now being a big supporter of CAS though, I thought I should get a proper understanding of what ‘Computational Thinking’ accurately refers to. After looking at quite a lot of definitions and explanations from different sources, I believe I now have a reasonable understanding of it, but I’ve also realized that this understanding wasn’t gained from one single source but actually by a combination of many.

The top five sources I found useful and that I’ve used in the description below (directly or indirectly), are:

I have two goals for writing this post:
1. To try and provide a simpler description of the term (ideally to spare you having to go through all the sources that I have)

2.  To almost test my own understanding of what information I’ve read, by writing a summary of it – one I can go back to if needed

The term ‘computational thinking’ was first coined by Jeannette M. Wing in 2006.  In a later article of hers (computational-thinking-what-and-why) she referred to the following definition:
Computation thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent1” (an information processing agent can be a human, a machine or a combination of both).

It is reworking what we see as a difficult problem into one we know how to solve. When faced with such a problem, computational thinking addresses the question ‘what is computable?"

From the sources above combined with my own experience, I’ve compiled a list of some of the actions used during computational thinking. The first, in many cases, is ‘decomposition’ which involves breaking up a big task into smaller sub-tasks to make it easier to understand and manage. The following activities are usually applied to these sub-tasks:

Pattern recognition: Using collected data to identify patterns or anomalies.
Example
Being able to read others’ hand writing is done by identifying the general pattern of the letters and comparing them with the example patterns of each letter that we have in our head. Those that we can’t recognize are anomalies in this case. We also identify patterns in people’s behaviour depending on different stimulus and build our future interactions with them accordingly.

Abstraction and pattern generalization: Filtering out unnecessary information for a certain context and keeping only what is generalizable.

Example
: ) is an ‘abstraction’ of a smiling face. Only the very general features of a smiling face are kept (a curved mouth and two eyes). Everything else about the face is left out, yet everybody knows that a colon and a right bracket is a smiley face.

In some cases, multiple layers of abstraction are used to bridge the gap between what is considered useable/understandable by humans and what a machine can use. All ‘easy-to-use’ computer programming languages  use it to turn the 1s and 0s that the hardware deals with into a human readable presentation.

Algorithm design:
developing a step-by-step strategy for solving a problem (one that others can follow without thinking). It’s particularly useful when a  task needs to be repeated multiple times or when a task needs to be carried out by others (including machines)

Example
Preparing a cooking recipe for a friend

Prefetching and caching in anticipation of future use.

Example

Putting things into a school bag or travel bag is ‘prefetching’ for future use. Keeping a tool next to you in case it is needed or to avoid fetching it again is ‘caching’ with the aim of saving time.

Making trade-offs between time, storage space, processing power and complexity.
Example

Should you, very quickly, put the things you need for a trip in a big bag, or spend time to pack things very efficiently into a smaller bag (time vs storage)

Approximation: considering if approximating the current problem into a simpler one (either by simplifying the problem itself, or the information available) will still give us good enough results.
Example
If I need to roughly estimate the cost of a shopping list in a shop, do I need to use the exact prices up to the penny when adding numbers, or can I just approximate to the nearest pound (or in the unlikely case of a very expensive shopping list, to the nearest ten or even a hundred pound!)

Performance modelling

Example
Which line should you stand in at the supermarket, or which route should you choose when travelling to a certain destination?

Apart from the activities above, there are certain approaches to solving problems used quite often in programming that we benefit from in real life without knowing that these are well defined techniques with jargon names such as a ‘binary search tree’. You’ve probably used ‘binary search tree’ without knowing that it has a name and here's an example for it:

A computational thinking example: Guess a number

A few days ago, I was playing ‘guess the number’ with my 7 year old daughter. One of us thinks of a number between 1 and 100 and the other has to guess it. After a few tries, she noticed that I normally guess her ‘secret’ number faster than she guesses mine. So she asked me how I did this. What I was actually doing was using a ‘binary search tree’ technique to guess the number. I explained to her in the simplest way I could think of that she should always give a guess that is the number ‘roughly’ in the middle of the remaining range and she is guaranteed to guess the number in no more than 7 guesses (obviously without explaining why).
I compared this to her random guessing technique and told her that in this case, that may require many more attempts (100 in the very worst case). She obviously experimented with several examples before taking my word for it.

This is a very simple use of computational thinking to show off in front of a 7 year old: “I can guarantee you I’ll guess your secret number in no more than 7 attempts, or to make it more interesting, a number between 1 and a 1000, in no more than 10 guesses”.

Suppose the range is 1-100 and the selected number is 17 (the following scenario is a worst case scenario):

1- Is the number 50? (No - smaller)
2- Is the number 25? (No - smaller)
3- Is the number 12? (No - larger)
4- Is the number 18? (No - smaller)
5- Is the number 15? (No - larger)
6- Is the number 16? (No – larger)
7- The number is 17

Another practical example of computational thinking is using sorting to speed-up search. If you are the person in front of the CD player at a karaoke party with a 100 CDs, finding the required songs will be much faster if these CDs are sorted alphabetically than if they are in a random pile. When the CDs are sorted, your brain is doing some form of binary search to quickly find the right one without you even realizing it. Combining sorting and binary search is one of the most widely used searching techniques in computing.

Back to the term

According to Wing, Computational thinking is not an optional skill, but a fundamental one that everybody should learn, to function in our modern society. It complements and combines mathematical and engineering thinking.

Computational thinking is not just about computer software, but also the concepts we use to solve problems in our daily lives.

1- Jan Cuny, Larry Snyder and Jeannette M. Wing, "Demystifying Computational Thinking for Non-Computer Scientists," work in progress, 2010.