The term “quantum computing” can be intimidating. Qubits and quantum gates are still not common terms in programming. In fact, while posting this article to Code Project, I'm unable to even find the right category on the site related to quantum computing topics.
However, in trying to understand quantum computing, I ran into QISKit, which allows developers to explore IBM cloud-enabled quantum processors using Python and Jupyter Notebooks.
QISKit includes three main components: The official QISKit API client, written in Python, a Python QISKit SDK, which includes examples, and The OPENQASM specification, which details the Open Quantum Assembly Language 2.0.
QISKit documentation is another indication that working with the IBM Q Experience is available to those with basic computer science skills. From the QISKit documention:
To use QISKit you’ll need to have installed at least Python 3.5 or later and Jupyter Notebooks (recommended for interacting with the tutorials).
For this reason we recommend installing Anaconda 3 python distribution, which already comes with all these dependencies pre-installed.
if you are a Mac OS X user, you will find Xcode useful: https://developer.apple.com/xcode/
if you are willing to contribute to QISKit or just wanted to extend it, you should install Git too: https://git-scm.com/download/
This makes quantum computing significantly more accessible.
But I wanted to expand my investigation. Is quantum computing going to be used more widely? Is it being taught in computer science classes? I interviewed Francesco Buscemi, associate professor, Department of Mathematical Informatics, Nagoya University, Japan, and one of the supporting organizations and collaborators of QISKit.org. Buscemi’s main focus is doing research in quantum information science and teaching students in computer science about the marvels of quantum theory. He has a PhD in theoretical physics and was originally a trained classical musician.
How does QISKit make quantum computing easier to understand?
Quantum foundations and quantum computing provide a lot of very good food for thought and an antidote to authoritative teaching. But of course the problem is that they (as anything else with the word "quantum" in it) are often perceived as difficult, to say the least. Even worse, I still hear some people downplaying them as useless, scholastic debates, hyping promises that are far from actual results.
The only way I understand the persistence of such stereotypes is the lack of tools to "see" quantum theory in action, and get one's hands "dirty" with it. Indeed, if you think about it, we---human beings---are sort of "optimized" to quickly build an incredibly good intuitive knowledge about anything, even the most alien stuff, but only if we get the chance to touch and play with that directly. Classical computing seems much easier to understand than quantum computing probably because we are used to interacting with (classical) computers on a daily basis, whereas quantum computers are, for the vast majority of people, no more real than interstellar travel or other sci-fi marvels.
But now comes IBM with their very tangible cloud quantum computing platforms and software development kit (QISKit), that allows basically anyone with a little background in Python (by the way, quite high-level a language, so very much human-readable) to create code that can be executed on a real quantum computer.
I can tell you from direct experience that this helps a lot: I witnessed quite a few students who, not having any particular background in physics (let alone quantum theory), of course could not understand how a quantum circuit worked abstractly, but then were able to quickly build up their intuition after they had the chance to program it themselves with QISKit. In just a couple of weeks, the same students perfectly grasped very subtle concepts in quantum foundations like simultaneous measurability or quantum nonlocality. This was just mind-blowing for me.
Why should younger students be interested in quantum computing?
The standard (though a little predictable) answer is that recent advances in quantum technologies have made the dream of quantum computation more realistic than ever, so that it is not unreasonable to believe that we may finally have a working quantum computer available much sooner than we thought at first. Hence, it is high time to incorporate quantum computing in the normal curriculum in computer science, and so on...
However, I firmly believe that if we teachers do our job right, no matter what we are teaching, students should be brought to appreciate the fact that what they study is never "the truth," but a continuously evolving model that we construct to satisfy our innate desire to understand the world. Quantum foundations and quantum computing provide us with a unique opportunity to explore the ultimate boundaries of scientific knowledge, in which such a process of "knowledge evolution" can be fully appreciated. The questions being asked there are so deep that we are not even sure about what to expect as an answer: you must be willing to abandon everything you take for granted, when you are working in quantum foundations.
The final goal of quantum foundations and quantum computing is nothing less than to understand how nature "thinks." Put this way, can you imagine, among so-called "hard sciences," anything more interesting than that? Every student should want a course about quantum foundations and quantum computing in their curriculum!
Do students that study quantum foundations have an advantage over other computer science students?
If you asked me this question only five years ago, when quantum computation was still limited to proof-of-concept experiments performed in a handful of labs worldwide, I would have been more cautious. Now however, looking at the astonishing developments achieved in practical quantum computation, it is easier to bet that quantum computation will be the next "big thing" in technology. No computer scientist should end their studies without being taught, at some point in their classes, about quantum theory and quantum computing.
But that is the standard answer you may have heard too many times. So here is another reason, in my opinion, to study quantum theory, and why quantum foundations in particular, can give a computer science student an advantage. The reason is that, if you study quantum foundations, you learn that the very logic on which (classical) computation is based, however intuitive it may seem, is nothing to be taken for granted: it is purely a man-made artifact, and nature needs not---in fact, does not---obey its rules. In this sense, quantum foundations tells us that classical computation is a model of computation that is artificially limited, just because we were not able to see beyond what is "obvious" to us.
Knowing that there is a lot more to computation than just classical computation can turn out to be an important guiding inspiration for anyone studying or working in computer science.