- Quantum Programming by abstracting ourselves from Quantum Mechanics: Abstraction level 0
- Quantum Programming - Abstraction level 1: Logic Gates
- Quantum Programming - Abstraction level 2: State Machine and Algorithms (this)

We have been on quite the adventure so far. Let's recap our progress.

- We've shown that by encoding information onto n qubits in superposition, we can manipulate the whole system of 2n states by only changing the state of one qubit.
- We represented the state of each qubit as a simple 2D vector.
- We've established that we can change the state of a single qubit (or two) by applying different logic gates to it, similarly to a classical logic gate.
- We can now visualise the superposed state of the qubit (indeed of the whole system) on the Bloch sphere.
- We know how to entangle two qubits, so that their states are correlated.

Now the time has come to start putting it all together. Wouldn't it be nice to actually string some gates together, and see what happens?

Well, in order to see what happens, we might want to be able to visualise the flow of our qubits' states, so we can see how each gate manipulates each qubit at each step.

## Unit circle State machine