Charles Thomas

Aspiring Physicist. Studying a Maths and Philosophy degree at Durham and trying to fix payroll at Onfolk. Previously building a better bank at Monzo.

View My GitHub Profile

Basic Quantum Computing - Shor's Algorithm - Phase Estimation

In this series of posts, we’re exploring a famous algorithm called Shor’s Algorithm. In the last post, we talked about using phase estimation to do order finding. In this post, we’re going to explore how phase estimation works. What problem does phase estimation solve? Phase estimation solves the problem of...
Read More

Basic Quantum Computing - Shor's Algorithm - Euclid's Algorithm

In this series of posts, we’re exploring a famous algorithm called Shor’s Algorithm. In the last post, we saw how to use order finding to factorise a number. This relied on being able to quickly compute the gcd of two numbers. Thankfully we can do this fast classically using Euclid’s...
Read More

Basic Quantum Computing - Shor's Algorithm - Using Order Finding

In this series of posts, we’re exploring a famous algorithm called Shor’s Algorithm. In this post, we will split it unto two parts: a quantum part and a classical part and then we will explain the classical part Order Finding Shor’s algorithm can be split into two parts. The first...
Read More

Basic Quantum Computing - Shor's Algorithm Introduction

In this series of posts, we’re going to explore a famous algorithm called Shor’s Algorithm. We’ll break it down piece by piece so anyone can follow along. In this first post, I’ll explain what problem it solves and why we should care about it. What problem does Shor’s Algorithm solve?...
Read More

Basic Quantum Computing - Quantum Key Distribution

In this post, we’re going to take a look at what encryption is and how quantum computing can help with it using quantum key distribution Encryption and Keys Encryption is the art of encoding messages so that other people can’t read them. This is extremely useful in all sorts of...
Read More

Basic Quantum Computing - Teleportation

In super dense coding, we used a qubit to send 2 bits of classical information, quantum teleportation is a way of using classical bits to send a qubit. The Setup Once again, we have Alice and Bob, they meet up and create a pair of qubits in the entangled state:...
Read More

Basic Quantum Computing - Introduction

I first became interested in Quantum Computation when I was 15 but at the time I really struggled to start learning it. On reflection, this wasn’t because it was too hard for me to learn, but rather I didn’t know what order to learn the things in and I didn’t...
Read More

Basic Quantum Computing - Getting started with Qiskit

Now, we’ve learnt a little bit about quantum computing let’s get started by programming one. Python We’re going to be using the Python programming language to start writing quantum programs. So I’m going to assume you know a little bit of Python and have it installed locally. I’m also going...
Read More

Basic Quantum Computing - No Cloning Theorem

Note: This is a rework of an earlier post. You can checkout the original here What is the No Cloning Theorem? In normal computers, we can copy the state of a bit. This is used all of the time. For instance, we might take the output of one operation and...
Read More

Basic Quantum Computing - Super dense coding

Note: This is a rework of an earlier post. You can check out the original here We are finally ready to look at some applications of quantum computation. We’re going to start by looking at super-dense coding which allows us to send 2 classical bits of information by sending one...
Read More

Basic Quantum Computing - Entanglement

You might have heard of quantum entanglement and how spooky it is. But in this post, we’ll dive into what it really is. Two qubit systems Entanglement is a phenomenon that happens between two or more quantum systems. For us, we’ll use qubits. So let’s recap from last time that...
Read More

Basic Quantum Computing - Multi Qubit Systems

Last time, we talked about single qubit gates, but to do anything really interesting we need to make use of multiple qubits. Describing Multi Qubit Systems Before we talk about gates acting on multiple qubits, we need to talk about describing systems of multiple qubits. When we had 1 qubit,...
Read More

Basic Quantum Computing - Single Qubit Systems

We’re finally ready to start getting into some actual quantum computing. In our last post, we introduced the qubit. This was a quantum state of the form: \[a\ket{0} + b\ket{1}\] We said that it evolves in time according to some unitary matrix U. In Quantum Computing, there is the idea...
Read More

Basic Quantum Mechanics For Quantum Computing

We finally know enough mathematics that we can start delving into quantum mechanics. Representing states To get started with quantum mechanics, let’s imagine we have a coin. When we flip a coin, we find that it can either be heads or tails. We say the coin is either in the...
Read More

Basic Mathematics For Quantum Computing - Hermitian Matrices

In this post, we’re going to be discussing what Hermitian matrices are. Transpose of a matrix Let’s start by learning about the transpose of a matrix. The transpose of a matrix is just flipping the matrix so that every row becomes a column and vice versa. For example, if I...
Read More

Basic Mathematics For Quantum Mechanics - Matrices

In this post, we’re going to explore what matrices are and the rules for working with them. For now, these rules might seem a bit arbitrary but we’ll see in a later post that they actually come from a really interesting place. Matrices as grids of numbers A matrix is...
Read More

Basic Mathematics For Quantum Mechanics - Inner Products

What is an inner product? Last time, we talked about vector spaces and we said that they have two binary operations: vector addition and scalar multiplication. We can add a third operation called an inner product to a vector space to turn it into an inner product space. An inner...
Read More

Basic Mathematics For Quantum Mechanics - Complex Numbers

The name complex numbers is misleading since complex numbers are not complex at all - so let’s dive in. What are Imaginary Numbers? In school, you were told that you cannot take the square root of negative numbers, in fact, you can. Let’s start with the square root of -1...
Read More

Basic Mathematics For Quantum Mechanics - Set theory

I wanted to write an easy to follow guide for Quantum Computing so in order to do this I thought I’d build it up piece by piece starting with the mathematical foundations needed. So to start it all off I’ll start by talking about set theory - the building block...
Read More

What I look for as an angel investor?

Over the last year I’ve spent a lot of time thinking about start ups. One day, my co founder asked me what would I look for if I was an angel investor. Sadly, I do not have the money to angel invest myself but it was an interesting thought experiment....
Read More

Diffie Hellman

As I’ve been studying Quantum Computing I came across Diffie Hellman but it took me a while to get my head around it. So I thought I would try to explain it. Symmetric Ciphers To understand Diffie Hellman let’s talk about symmetric ciphers. A symmetric cipher is when we encrypt...
Read More

Why I write?

Recently, I’ve been thinking about why I like writing. I’ve always enjoyed writing. That’s why I started this blog. As a little kid, I used to write stories and songs (although I did get put off the whole thing for a while in high school). But why do I enjoy...
Read More

Measurement in Quantum Mechanics

When we talk about measuring some value we don’t give it a lot of thought. But this changes when you are working with Quantum Mechanics. The results of your measurements probabilistic and you will also change the system itself by the act of measuring it. This makes working with Quantum...
Read More

Basics of Coffee

Making coffee is all about dissolving coffee beans in water and we’ve come up with a myriad of ways to do it. But getting into this hobby can be overwhelming with plenty of confusing terms being thrown around. This post aims to explain the basic terms you’ll hear and how...
Read More

Writing a Turing Machine in Haskell

As I’ve been learning Quantum Computing, I’ve had to learn some Computer Science along the way. One of the concepts I’d heard of but I hadn’t understood until recently was that of a Turing Machine. To understand what a Turing Machine was, I decided to write one in Haskell. Setting...
Read More

Deutsch Jozsa Algorithm

The Deutsch Jozsa Algorithm is a quantum algorithm that solves a problem with few practical applications. It is notable for being one of the earliest demonstrations of a problem that can be solved faster on a quantum computer than on a classical computer. The Problem Imagine we have a black...
Read More

Super dense coding

One interesting application of Quantum Computing is the ability to send information using fewer bits. This is known as superdense coding. Specifically, super dense coding allows us to send 2 classical bits of information by sending one qubit. To see how this works let’s go through an example. The Setup...
Read More

No Cloning Theorem

In normal computers, we can copy the state of a bit. This is used all for the time. For instance, we might take the output of one operation and feed it into several others. When we do this at the circuit level this is called fanout. But, we cannot do...
Read More

Log4j Vulnerability

The other weekend my Twitter blew up talking about a vulnerability in something called Log4j. Based on the number of tweets I saw I assumed it was bad but I had no idea what Log4j was or what had happened. This led me down the rabbit hole of trying to...
Read More

Basics Maths For Quantum Mechanics

I intended to write a blog post on the No Cloning Theorem. But as I was writing it I realised to make it accessible I needed a mathematical primer that I could point people to. So that is what this is: the bare minimum of maths needed to understand basic...
Read More

Why I'm Interested in Quantum Computing

I’ve been interested in Quantum Computing ever since I heard about it when I was 15. Recently, I’ve become more intrigued by it and have decided to invest some time in learning it. But what is it about this field that interests me? Well, the short answer is that I...
Read More

An Introduction To Kafka

Apache Kafka is a very powerful piece of software. But it can very confusing to get started with. The aim of this post is to outline the structure of Kafka and how it might be helpful to you. What is Kafka? Apache Kafka is an events streaming platform. This means...
Read More

DNA Sequencing & Graph Theory

DNA sequencing has been a technological revolution. It has many application from medicine to forensics. It also has some clever mathematics behind. In this article I aim to explore the basics of the application of graph theory to DNA sequencing. What is DNA sequencing? DNA is the building block of...
Read More

The Link Between Mathematics and Software Engineering

Mathematics and software engineering have a tumultuous relationship. Some people think you need to be a great mathematician to be a great software engineer. Others believe you don’t need to know any sophisticated maths to be an amazing engineer. There is some truth to both sides to this argument and...
Read More

Musing on Microservices

Microservices are commonplace among technology companies of all sizes and in this post, I hope to explore some of the pros and cons of them and what you should consider when deciding if they are a good solution for the problems you’re solving. Let’s start by quickly addressing a common...
Read More

Coherentism and Memory

One of the most common features of most theories of knowledge is that our beliefs must have some justification to count as knowledge. To explore why want justification let us as part of our theory of knowledge let us consider the Justified True Belief (JTB) theory of knowledge which states...
Read More

Thoughts On Coherentism

Knowledge has been defined in the past as justified true belief, formally, that means for subject S to know proposition P then: P must be true S must believe P S must have justification for their belief in P However, this definition relies on the notion of objective truth which...
Read More

Batches In Cassandra

Batches in Cassandra are an often misunderstood topic and this will hopefully serve as a guide to beginners to help them make sense of them. In order to understand batches you first have to get your head around partitions. In Cassandra, data is distributed across several computers; to work out...
Read More

Teaching Myself A Physics Degree

I have come up with a slightly bonkers plan (partially inspired by this article). So here’s a blog post explaining what I’m doing and why I’m doing. Motivation Having just finished high school, I was faced with the dilemma, of what to do next: university or the world of work....
Read More

Hello

Hello, this is the start of my new blog. I am a software developer and a student in my final year of High School. Here I will be documenting any interesting things I learn, whether in school or out of it.
Read More