Microsoft Launches Quantum Computing Toolkit

Dec. 13, 2017

By: Michael Feldman

This week Microsoft is releasing a free preview version of its Quantum Development Kit, a suite of software tools and libraries that developers can use to write quantum computing applications.

The toolkit is built around Q#, pronounced Q-sharp, Microsoft’s newly hatched programming language for quantum computing. It is designed to support the unique programming paradigm demanded by quantum computing, which centers on the manipulation of qubits. Unlike garden variety binary digits (bits), which can hold the value of 0 or 1, qubits can exist in multiple states simultaneously. While that seems confusing, it provides for uniquely powerful computations, especially for a class of algorithms known as optimization problems.

As a result, quantum computing lends itself to a number of applications that have proven to be computationally challenging on conventional hardware.  These include areas like cryptography, material science, drug discovery, climatology, and many segments of AI, especially pattern recognition. Some problems in these domains that would take weeks or months to solve on a large supercomputer can be dispatched in minutes on a quantum system. Others require so much brute force computing and memory capacity, they are beyond the capability of the largest classical systems, even the next-generation exascale machines.

Tapping into the quantum realm makes this all possible. According to Microsoft, Q# programmers need not be familiar with the mind-bending nature of quantum physics; it’s for everyday programmers who can grasp the basic concepts of quantum applications. Some of that knowledge can be gleaned from the toolkit’s provided documentation, which includes sample quantum computing programs. This being Microsoft, all the Q# tools – the compiler, runtime libraries, debugger and simulator -- are integrated into Visual Studio, the company’s ever-popular programming environment.

The quantum computing simulator is a necessity given the rarity of quantum computing hardware in today’s world. If you are working on a typical laptop, the simulator can be used to develop algorithms that can manipulate as many as 30 virtual qubits. That constrains these algorithms to relatively simple logic, but the idea is to enable these early developers to write some basic software and get familiar with quantum computing. For something on a larger scale, Microsoft is offering an Azure-powered simulator, which can support up to 40 virtual qubits.



Software written in Q# for the simulator should work unchanged when it executes on a real quantum computer. Specifically, the software is advertised to work on “a topological quantum computer,” which happens to be the variety that Microsoft is developing.

Topological qubits are constructed from quasiparticles called anyons and are more stable – that is, less error-prone – than that of other implementations, such as superconducting quantum circuits, which is the type of hardware being used by the quantum research groups at IBM and Google. This approach require extra qubits to correct the errors of the ones actually doing the computations.  Microsoft says this robustness of the topological qubits will enable the hardware to scale much more easily than other approaches. However, these qubits have proved difficult to construct, which is why Microsoft has yet to come up with a working prototype.

According to Todd Holmdahl, the corporate VP in charge of Microsoft’s quantum computing effort, it’s up to them to figure out the quantum physics, and then make sure the software stack is in place to make that hardware usable. “[I]t’s our job to make it as easy as possible for the developers who knows and love us to be able to use these new tools that could potentially do some things exponentially faster,” says Holmdahl, “which means going from a billion years on a classical computer to a couple of hours on a quantum computer.”

If you’re interested in giving the toolkit a try, check out Microsoft’s Quantum Development Kit website.