Development with Qiskit

IBMQ Quantum Computing

I think people have a lot of misconceptions about quantum computers. In fact, I'm certain of it, but the only reason I say that is because I used to be in that group of people. It's easy to label it as being synonymous with a supercomputer, or some Sci-Fi end-all solution to having better technology. That's not entirely inaccurate. There are certainly benefits to having quantum computers over classical computers, but we're likely not going to stray away from hybrid systems any time soon because classical models are still essential for what we need. In reality, quantum computers are only better at very specific things. What's fun is when those specific things tie into basic fundamental parts of what we use everyday. It's all based around optimization.

Qiskit is an open source SDK for working with quantum computers at the level of pulses, circuits, and application modules (as described on their website). It's designed to be a toolbox complete with an api, simulator, analyzer, and many more features that makes it perfect for simplifying the software development aspect of quantum computing. It has a built-in architecture for constructing logical gates based off the pathways you build through code.

Although versions of the kit are available for JavaScript and Swift (which have since been halted), the primary version of Qiskit is available for Python. All that's necessary to set it up is to install a few modules and set up an API key with IBMQ, although it doesn't hurt to set up a project in Jupyter Notebook or Jupyter Labs. Python makes the programming experience with Qiskit extremely easy; however, one of the things I struggled with early on was the concepts and why quantum gates worked the way they did. IT became a lot more complex than I thought it was going to, but I enjoyed it a lot.

The first thing I struggled with was visualizing bits as qubits. Conceptually, it was impossible, but eventually I was presented with a mathematical model that simplified it in terms of functionality.

Essentially, any given qubit can be represented as a two dimensional 2x1 matrix; where the indices represent the value of that state. This model allows qubits to better be represented in how they actually work, as they don't function like classical bits (on/off). They have an infinite range of states they can exist in between on and off, being more on or more off, and this is easy to visualize mathematically through matrices. This model also makes gates easier to represent, as passing a qubit through a gate is the same as multiplying two matrices, with the qubit(s) on the left and the logical gate on the right.

If this sounds confusing, that's completely normal, but there are plenty of books that can help represent these topics in a way that's easy to digest. Two books I would suggest, for development and mathematical representation respectively, would be "Practical Quantum Computing for Developers" by Vladimir Silva and "Quantum Computing for Everyone" by Chris Bernhardt. If by chance you finish the first book and you still want to learn more, I highly suggest reading "Quantum Computing Without Magic" by Zdzislaw Meglicki. It's about a decade older than the other two, but I wouldn't say it's outdated. It very elegantly covers the mathematical model surrounding quantum computing, but I suggest you don't start with this book unless you have a strong background in mathematics. It can be a handful to look at without reading the previous two books, and even then it can feel a little overwhelming, but some Google searches here and there can help mitigate that.

I should also mention that Silva is the same person who wrote books on Android game development, so I find just about anything written by him to be entertaining.

I feel like having a background in quantum computing will be very good for me. It's likely going to play a part in most of our futures, and it's not terribly difficult once you get past the learning curve. Algorithmic development can still be a pain, but I imagine we'll have breakthroughs in simplifying those as well once we get past our issues with quantum decoherence, which is one of the main reasons we aren't carrying around these things in our pockets or using them to hack into RSA-encrypted data. Qubits are finicky, and don't like staying in a quantum state for long. Breaking that barrier will be tough if it's possible, but any way we can hack our way around it is a step in the right direction.

Some of the most fun I had during this project wasn't even really programming. My friend, Skylar, is a math major who I used to be roomates with in the dorms at Ball State, and we would have fun sitting down and solving quantum gate problems by hand on my whiteboard. I feel like I got lost in the mathematical side of this project, which doesn't happen often, but every once in a while I think I fall in love with a very niche part of a project.

I'll finish this section off with a video from Microsoft Research on Quantum Computing for Computer Scientists. I found this very helpful when I was first introducing myself to the mathematical concepts of quantum computing. Even for someone that isn't too involved in the topic, you may find this video entertaining. A lot of good questions are asked here and they're followed by good answers.

Previous
Next
Home