FontysICT-sem1

Computational thinking

What is Computational Thinking?

We look at some examples:

If you want to vacuum a staircase, it is best to work from top to bottom. If you are painting a floor (see Donald Duck), make sure you end at a door. Before you do anything, think about the order and consequences of actions.

Suppose I plan a trip with friends by public transport to an event in another city. I can break that down into:

To solve a big “problem,” it is helpful to solve the problem in smaller problems.

You can see that computational thinking also plays ‘outside the computer’.

Training

Below are some assignments that challenge your so-called computational thinking.

Binary 1

The digital world is made up of zeros and ones, ‘0’ and ‘1’ is all a computer knows. Oh yes, yes. This assignment introduces binary counting:

Binary 2

Can you count to 31 on one hand? Type ‘count to 31 on one hand’ into your favorite search engine. Then how far could you count to 31 if you use two?

Guess number: higher lower

Project Euler Challenge 79

Project Euler challenges are often problems that are best solved with a computer. However, Euler79 can also be solved without the help of a laptop: on whiteboard, for example!

You might find other Euler-challenges for which you can come up with a flow chart for a possible solution, for example.

Creating an Algorithm / Flow Chart

fig:flowchart

When you build software, you often design an algorithm that solves a problem.
You can describe this algorithm in different ways. For orientation, we want you to make flow charts. Write these on white board (possibly on paper) and submit a picture of them.

A good exercise in creating an algorithm is the assignment ‘algo01’. The document first explains something about ‘flow charts’, then you will create an algorithm for tic-tac-toe:

For people who have never programmed, tic-tac-toe is a great choice, but if you already have experience, or are very good: 4 in a row, checkers, chess, rubik’s cube are possible alternatives! (If you choose 1 of these you might not get it completely finished) Maybe you can come up with something else yourself that gives you more of a challenge: Please consult with your teacher.

Interest calculation

Given a starting balance (say 234 euros), an interest rate and a number (say n) of years. Create a flow chart for a program that calculates how much the balance will be after ‘n’ years.

Divisibility

Create an algorithm that determines the smallest number greater than 1000 that is divisible by 37.

More generally: Create an algorithm that determines the smallest number greater than a given value (the ‘threshhold’) and that is divisible by a divisor to be given.

Arbor 1

Create a flow chart for an algorithm that determines whether a number is prime.

Arbor 2

Create a flow chart for a program that lists all prime numbers between 1000 and 2000.

Flash card

A flash card program is a program that helps you learning (for example) French words.

Flash Cards were traditionally made on paper or cardboard. The front might then have the Dutch word on it, for example, and the back might have the French word on it.

Simple form: take any card, show it, have user enter a word, answer whether that is the correct translation, and repeat that a number of times!

It gets a little more challenging if your algorithm keeps track of how many questions have already been asked, how many of them were answered correctly, and what percentage that is.

As you work on this you will come across questions. answer them as you think is right. Talk about them with others around you where necessary to arrive at good decisions.

Pedigree

Given a piece of the family tree. Of the persons in the family tree is given whether they are male or female and who their (biological) father and mother are.

Tables

A standard exercise for programmers is to show the tables, so something like:

1 x 7 = 7
2 x 7 = 14
3 x 7 = 21
and so on.

Make a flow chart for this.

Calculation game.

Program makes up 2 random numbers, user must calculate and enter the product. Program indicates whether this is right or wrong. Create a flow chart for this.

Anagram 1

Determine if 2 strings are anagrams of each other. Create a flow chart for this.

Anagram 2

Generate all anagrams of a given string. Create a flow chart for this. If you don’t know what an anagram is: surely you know a way to find out?

Coffee machine

Think about what a coffee machine does. It waits for coins, registers your choice, then makes what you chose. Make a flow chart for this.

The non-coffee machine

In everyday life, you deal with more devices. Can you think of one with an interesting “behavior”? Make a flow chart for it. For example: printer, scanner, copier.

Make up your own assignment

Maybe you can make up your own with and/or

Resources