Touring Turing
1 Alan Turing
Learn It
- In 1936, a few years before the outbreak of World War II, Alan Turing invented the Turing Machine.
- This was a hypothetical device (not one to be actually built) that could read and change symbols on an infinitely long tape, according to a table of rules.
- With this simple idea, Computer Science was born, as the Turing Machine was theoretically capable of performing any calculation that was computable.
- It took a few more years before actual computers were constructed, but even today we can talk about computers and programming languages in terms of their
Turing completeness
. This means that they are able to do exactly what a Turing Machine can do.
2 Python Variables
Learn It
- For this project, we'll be using the Python 3 Programming language.
- You've used Scratch before, which is a Graphical Programming Language. Python does the same sort of thing, but you program using text instead of blocks.
- If you're working on this outside of school, you can download it from the following links.
- Python 3.7.3 for Mac
- Python 3.7.3 for Windows
- If you need Python 3 for Linux - use your package manager
sudo apt-get update && sudo apt-get install python3 idle3
(on Ubuntu for instance) - If you're working in school, then you should find a program called Thonny, inside the computing folder on the desktop.
Try It
- Open up Thonny. You should be presented with a screen that looks a little like this:
- Thonny is an Integrated Development Environment (IDE) for Python, particularly suitable for beginners. You can create, edit and run Python files using it.
- We can write code in the code editor window (the upper window), and when you press the green button with a white triangle in it, it gets executed and the results will be shown in the shell (the lower window).
- You can also input code one line at a time in the shell prompt. When you hit enter, that line of code gets executed right away.
Learn It
- One of Turing's key ideas was an infinitely long tape, upon which symbols could be added, read and changed.
- In modern computers this tape is called RAM, and is made up of very complex circuits.
- Just like in a Turning machine though, we can add data to RAM, read data from RAM and change data in RAM.
Code It
- Let's write some data to RAM using the shell in Thonny.
myName = 'Alice'
- You can obviously use your own name.
- You have now stored your name in RAM. You have done this using a
variable
- For now think of a
variable
is being made up of an identifier (myName
) and a value (Alice
) - Note - Once you have hit
ENTER
you can not delete what has been executed, any more than you can unbreak an egg. If you make a mistake, just type it out again (or the upper arrow key on your keyboard to bring up the last command again, and alter it from there).
Try It
- Turing's original idea called for an infinitely long tape, that we could store an infinite amount of information on.
- RAM is pretty big, even if it's not infinite. A typical Computer might have anywhere between 2Gb and 16Gb or RAM.
- This would be enough space to store between 1000000000 and 4000000000 characters, which is enough for us.
- Try creating some variables for your friend's names. Each one must have it's own unique identifier though
firstFriendName = 'Robert' secondFriendName = 'Charles' thirdFriendName = 'David' fourthFriendName = 'Eve'
Learn It
- We have to be careful with identifiers for our variables.
- Try this and see what happens:
5thFriendName = 'Faith'
- You'll get back a message saying you've used
invalid syntax
. - This is known as a syntax error. It means you haven't conformed to the rules of the language.
- Here are the rules for Python's Variable Identifiers:
- Must not start with a number.
- Must not contain symbols like !, @, #, $, % etc.
- Must not contain spaces (use
_
instead) - Are case sensitive (
myname
,myName
,MyName
andMYNAME
would all be different variable identifiers.)
- There's also a few reserved words you should avoid for identifiers, like
not
andcontinue
, but you'll learn these as you go along.
Code It
- Now we have some variables stored, we'd best learn how to read them, as that was one of the stipulations of the Turing machine's tape.
- You can read the value of a variable just by writing it's name.
myName secondFriendName
Code It
- We also needed to be able to change the variables.
- Let's have a go at that.
firstFriendName = 'Bob' secondFriendName = 'Charlie' thirdFriendName = 'Dave'
- Now use the identifiers to read the values and make sure they have changed.
Badge It - Silver
- Assign variables for all your family. For instance;
mum = 'Alice' dad = 'Bob' cat = 'Eve'
- Demonstrate that you can display the variable values in your
INTERPRETER
3 Python Data Types
Badge It - Gold
- Not all variable values are the same.
- Copy and paste the following into your interpreter - one line at a time
foo = 10 bar = 3.142 baz = 'Hello World!' qux = True
- Now, for each of the variables, you can find out it's type using the
type()
inbuilt function.
type(foo)
- The interpreter will tell you the class of the variable.
<class 'int'>
- This would tell me that the data-type was an
int
, which is short for integer. - Look up each of the data-types for the variables above and then use the web to find out what they each mean (in simple English).
4 Calculations in Python
Try It
- We can use Python to perform calculations.
- For instance, you can type into your
INTERPRETER
6 + 4
- In Python we can use
+
and-
for addition and subtraction,/
and*
for division and multiplication. - There are lots of mathematical
operators
we can use. Here is a table of all of them for reference later on. - In the examples below
a = 10
andb = 20
Operator | Description | Example |
---|---|---|
+ |
Addition - Adds values on either side of the operator | a + b will give 30 |
- |
Subtraction | b - a will give 10 |
* |
Multiplication | a * b will give 200 |
/ |
Division | b / a will give 2 |
% |
Modulus - remainder of a division | b % a will give 0 |
** |
To the power of | a**b will give 10 to the power 20 |
// |
Division and round down | 9//2 is equal to 4 and 9.0//2.0 is equal to 4.0 |
- We can also use brackets, like you would do in maths.
(24+1)*4
Badge It - Platinum
- Use Python to find the answers to the following questions.
- 1929 x 64
- 39483 รท 321
- The remainder when 123 is divided by 2
- 1234 raised to the power of 4
- What is 15% of 50 (remember that % in Python is modulus and not percent)