# Charm Software

NOTE: This website is most definitely a work in progress, so much so that I have no idea what it will eventually be. A lot of content (not that there is a lot) is highly incomplete, still being written, and liable to be changed a lot at any time.

Here you’ll find articles on a variety of topics of interest to me. They’ll mostly revolve around mathematics and basic programming, and more particularly will be about the fusion of the two.

I graduated with an MSc in mathematical physics from the University of Nottingham in 2017, and am a self-taught highly-amateur programmer. I like to break the cardinal rule of programming, i.e. I like to reinvent the wheel. I get an odd sense of satisfaction by implementing complex algorithms in the purest, most basic Python I can, only using base packages and then only when really necessary. This is not an efficient way to do anything, but that’s ok. Efficiency is my number one concern in many areas of life, so I need a break from it every now and then! Hopefully at least one person will find it interesting or illuminating.

My first major project will be teaching you how to build a simulated quantum computer in Python, including all the linear algebra, developed from the ground up. This series isn’t intended to teach either Python or linear algebra, so not everything will be thoroughly explained. For instance, I will assume you know what a matrix is, probably how they can be multiplied, and that you know what a for loop is in some language or another.