Microsoft is one of the most well known software companies on the planet that has reaches into operating systems, games (with Xbox) and even hardware. Microsoft also has numerous research centres which are focused on cutting edge computer science. As you might expect, Microsoft is working on Quantum Computing. We take a look at how Microsoft is helping people learn about the Quantum space, it’s Quantum programming language and software stack.
Quantum Programming with Q#
Microsoft created it’s own language for anyone to program a Quantum Computer. Whilst that language has been pioneered by Microsoft, it is supported by Microsoft but remains open-source, which means that it can adapt to the latest research and innovations.
Designed from the ground up, but at the same-time familiar, Q# is a friendly intuitive way to build quantum circuits. For classical programmers out there, they might recognize the ‘#’ moniker which is how Microsoft has been naming its new generation fully object orientated languages such as C# and F#.
The Microsoft Quantum Development Tools
Microsoft have been creating development tools since before many of today’s programmers were even born. Certainly it has built a pedigree in building tools that make it smart, simple and quick for developers to get on an build software. This author remembers using VisualBasic back in the early 1990’s and was impressed with the ability to create code and applications so quickly. So Microsoft has ‘form’, it wants users to be compelled to not only use products in their eco-system but also for developers to build products for those software eco-system’s. Therefore it should come as no surprise that Microsoft is up to its ‘old tricks’ in making programming accessible for everyone.
Many of the tools that were historically paid for such as Visual studio now have a free version. Yep, the one everyone is talking about is VScode. Which is the baby version of Visual Studio (which is the professional tool of choice for many programmers irrespective of language). VScode has found it’s way into so many of the companies that we interact with, from start-up to corporate and many have moved away from paid for IDE’s (Integrated Development Environments).
The Quantum Development Kit
The language is only part of the journey to Quantum Computing. In order to write code you’ll need the editor but of course, something to translate that code into a Quantum circuit. That is where the QDK (Quantum Development Kit) comes in. For example taking a fresh Q# program, for example to create a super position of states with a single qubit. That code must be run in order to create those superposition’s on either a physical qubit (hardware) or simulated qubit (software). The QDK will allow programmers to choose appropriate hardware or software in which to run their circuits with relative ease (typically a very small code change).
Most users won’t have their own Quantum Computer so they’ll need to have access to one. Access to Quantum Computers (they fill a room typically) means using them via the cloud. Microsoft has integrated its Quantum Computing solutions into the Azure platform. Named with originality, Quantum Azure is open for users to experiment and run their circuits on actual circuits on a variety of hardware from 3rd party providers.
There are several quantum hardware providers (available on the Microsoft Platform) all with different underlying technologies for creating those qubit superposition’s for example. That means that developing a circuit should remain independent of the underlying hardware (that’s the goal anyhow), but sometimes in reality not always possible due to the very different physical operations of the qubits themselves, all with differing levels of fidelity. Of course not every problem is amenable to the different hardware (think gate-based vs annealing).
However for learners wanting to get to grips with the basics, qubits should remain as theoretical objects where understanding their physics is not needed.
In summary, the aim is to make its as seamless as possible to write code, compile to a quantum circuit and run those circuits on either software (typically for development) and quantum hardware (for actual workload).
Microsoft Azure Quantum
The cloud based service follows hot in the success of cloud infrastructure that is being developed by numerous companies such as Amazon (AWS), Google (GCP) and IBM and means running actual services is a thing of past – just as well as there are few places around the globe that have Quantum Computers available for general use.
Learning to Program “Quantum”
Perhaps the key distinction from classical computing is that Quantum computers must compile down to a quantum circuit that must be embodied in hardware or simulated in software.
An understanding of Quantum physics is not ‘really’ needed but helpful. Because the fundamentals are very very different some grounding in the nature of qubits and basic quantum principles can help. Quantum programming, isn’t just another computing language, it represents a complete departure from classical computing in the way that problems are presented and coded. That said, the tooling can feel re-markedly similar to conventional classical approaches with program flow for example and use on namespaces, loops and objects. Only with Quantum, instead of buts and bytes being manipulated, qubits are instead.
Microsoft Quantum Modules
Microsoft have developed a series of Quantum Tutorials which help people understand, develop and create quantum circuits – effectively with little or no knowledge.
The courses were developed by leading researchers and experienced Quantum programmers at Microsoft in order to jump start the learning process. The modules are self paced – so learners can get to grips or spend more time with challenging concepts.
Within the Quantum Computing fundamentals path there are four modules. Those four modules aim to take a novice from little experience all the way to building more complex circuits such as Grover’s algorithm. Below lists the four modules comprising the Quantum Computng foundation path.
- Create your first Q# program by using the Quantum Development Kit
- Explore the key concepts of quantum computing by using Q#
- Solve graph coloring problems by using Grover’s search
- Solve optimization problems by using quantum-inspired optimization
Each of the modules earns XP’s which are Experience Points. Currently there is no accreditation but there are apparent plans to offer some form of certificate in the future. Of course you’ll get the joy of completing the path.
One of the great advantages of the modules is that the prerequisites are so low, making for widespread appeal. For example, the modules illustrate the basics of how qubits work and even some of the very basic physics (without needing to go to grad school).
For example in the module: Explore the key concepts of quantum computing by using Q#, the learner is introduced to the main concepts and crucially the language behind working with quantum systems (bra and ket) as well as the base knowledge such as super-position and how this is shown in mathematical formalism.
Each module has a lot of information. There is a tremendous amount of information, so don’t be afraid of taking time to get to grips with the material or coming back as and when. Not having any schedules means you can learn as and when you want! Did we also mention the course is FREE!
Of course Q# is the language you’ll be using to create your circuit’s and the modules will guide you through the basics of building circuits using Q#.
Via code examples and output you’ll be able to recreate the working examples, and follow the tutorials. certainly we were impressed with the level of attention to the fundamental details. It’s a difficult balance to introduce quantum computing without going in too heavy on the details, which often perturbs a lot of users.
You can find the Learning path and Quantum Modules here and everything is provided FREE of charge from the IDE. Unless of course you need to run some seriously large Quantum workflows.