BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage Articles Microsoft and the State of Quantum: Q&A with Mariia Mykhailova

Microsoft and the State of Quantum: Q&A with Mariia Mykhailova

Bookmarks

Key Takeaways

  • Quantum computing is a new computational paradigm, based on exploiting the principles of quantum mechanics. It can be used to perform computations that would take impossibly long on a classical computer, such as factoring huge numbers or modeling complex molecules.
  • Q# is a domain-specific language, designed specifically to express high-level quantum algorithms. It uses specialized constructs that make implementing certain quantum computing patterns easier.
  • You can use quantum software development with classical computer architectures to simulate quantum computations. You can also access quantum hardware in a cloud using Azure Quantum.
  • Quantum computing cannot be used directly today, but quantum-inspired algorithms - algorithms that were developed with quantum processes in mind but run on classical hardware - care already being used to solve complex problems in many different areas.
  • Microsoft Quantum partners with quantum-focused companies and universities to accelerate research, development, and adoption of quantum solutions and to advance the state of quantum computing education. If you want to learn quantum software development using Microsoft tools, there are different resources available, such as podcasts and self-paced tutorials using Q#.

Last week, at the Q2B conference, Dr. Matthias Troyer - a scientist with Microsoft Quantum - talked about quantum computers' practicality, future-proof quantum software development, and existing quantum-inspired solutions currently being used throughout the industry. Quantum computing can be used to solve large compute problems on small data in areas such as chemistry and materials science. InfoQ interviewed Mariia Mykhailova, a senior software engineer in the Quantum Systems group at Microsoft, to better understand quantum computing, quantum software development, and Microsoft's latest efforts towards this area.

InfoQ: What exactly is quantum computing?

Mariia: Quantum computing is a new computational paradigm, very different from the “normal” computing (we call it “classical”). It is based on exploiting the principles of quantum mechanics which power the behavior of subatomic particles.  A cleverly engineered algorithm, such as Shor’s integer factorization algorithm or quantum chemistry algorithms, can utilize the quantum mechanical phenomena – superposition, measurement, interference, and entanglement – to perform computations that would take impossibly long on a classical computer, such as factoring huge numbers or modeling complex molecules.

InfoQ: How is Q# positioned in the .NET ecosystem? Is it a programming language based on a different paradigm, such as F#?

Mariia: Yes, exactly, but the paradigm it relies upon differs from the paradigms of any other .NET languages more than functional programming differs from imperative. We say that Q# is a domain-specific language, designed specifically to express high-level quantum algorithms.

You will find a lot of familiar elements in Q# recognizable from other languages, both imperative and functional – loops and conditional statements, functions as first-class citizens and partial application, and so on. At the first glance Q# code might look quite similar to C#! But you will also find specialized constructs that make implementing certain quantum computing patterns easier. The simplest examples are the “Qubit” data type and intrinsic operations that correspond to the quantum gates and measurements that are applied to qubits to perform the computation and extract the results. Functors “Adjoint” and “Controlled” allow to generate variants of a quantum operation easily, the former representing the “inverse” of an operation (another operation that undoes the effects of the first one), and the latter –  a loose quantum equivalent of a conditional operation.

InfoQ: Do we need to have special machines to work with Q#? What does quantum development process look like?

Mariia: One of the great things about learning quantum computing now versus, say, five years ago is the abundance of resources easily accessible to anyone. You’re not going to have an actual quantum computer in your garage any time soon – dilution refrigerators required to hold it at near-absolute-zero temperatures are not only massive but also notoriously expensive to maintain – but you don’t need one to work on quantum computing.

First, you can do a lot with Q# using your good old classical computer. Well, not very old – you’re going to need .NET Core 3.1 to run Q# – but classical computers can simulate small quantum computations by performing the math that describes the behavior of the quantum systems when quantum gates and measurements are applied to it. These simulations grow slower and slower as the size of the computation grows – you can simulate systems up to 30 qubits on your laptop easily but simulating 100 qubits is well beyond the capabilities of the most powerful supercomputer today. But you can write quantum algorithms and test them on small instances of the problem you want to solve (such as factoring 15 using Shor’s algorithm). You can validate different parts of algorithms using specialized simulators (such as Toffoli simulator that is well suited for evaluating Boolean functions on a quantum computer). You can estimate the resources that your algorithm requires to run on a quantum device (such as the number of qubits and the time this computation would take) and even optimize it. And, of course, you can learn quantum programming itself! Microsoft Quantum Development Kit offers tools for all these kinds of work.

Once the time comes to run your algorithm on real quantum hardware, you still don’t need to own a special machine for that. You can access quantum hardware in a cloud using Azure Quantum, same as you can access specialized classical hardware and cloud services using Azure, and you can do that with the same Q# code you wrote and ran locally. Azure Quantum is in private preview right now, and we’re looking forward to it graduating to public preview!

InfoQ: Can Q# be used today to improve existing systems, or to be applied in computing-intensive areas such as machine learning?

Mariia: Not yet. The existing quantum hardware is just not mature enough to run quantum algorithms to solve real-world problems, both in terms of the number of qubits in the devices and their quality.

However, quantum computing can have impact today – it just requires some extra creativity! We call these solutions “quantum-inspired algorithms” – algorithms that were developed with quantum processes in mind but run on classical hardware. Our customers are already using these techniques, solving complex problems like traffic optimization, materials simulation, and improving MRI scans.

InfoQ: Could you tell us a bit about the Microsoft Quantum initiative, and how quantum development is being used in the industry today?

Mariia: Microsoft Quantum’s mission is to develop a scalable and open quantum system and ecosystem around it.

This means that we’re working on building a full stack quantum system, and that stack has a lot of layers. Some of these get a lot of publicity, such as Microsoft Quantum Development Kit or the quantum hardware and the fundamental physics research required to implement our vision for it, the topological qubits. But there are other, less known but not less important layers of the stack between these two, such as qubit control technology that has to support scaling quantum systems to millions of qubits, way beyond the physical limitations of current systems.

That being said, solving world’s intractable problems is certainly not a single-company effort! Microsoft Quantum partners with quantum-focused companies and universities to accelerate research, development, and adoption of quantum solutions and to advance the state of quantum computing education. For example,

InfoQ: How I learn Q#/quantum software development today?

Mariia: I’m so glad you asked I focus on education and outreach in my work, creating ways to help people learn quantum computing and quantum programming and making it exciting, so this question is near and dear to me.

  • Our team hosts an online series of Azure Quantum Developer Workshops. You can watch the recording of the first episode to get an overview of different aspects of our work and a quick introduction to quantum computing – you’ll even write your first quantum algorithm! And last week we announced the second episode – tune in on February 2nd to learn more about our partner ecosystem and Azure Quantum solutions.

  • If you prefer to learn by doing, which in case of programming means jumping in and writing some code, try the Quantum Katas – a collection of self-paced tutorials on quantum computing that use Q#. They start from the basic math necessary to understand the language of quantum computing (nothing more complicated than basic linear algebra), move on to the fundamental concepts of quantum computing and then to actual quantum algorithms. Best of all, the Katas take a very practical, hands-on approach to learning. If you’re learning about the concept of superposition and the basic gates used in quantum computing, it’s not going to be just a bunch of formulas or a list of matrices describing those gates – you’ll work through sequence of programming exercises on preparing various superposition states, from very simple ones that only require one gate to quite advanced ones. Most importantly, these exercises come equipped with testing harnesses that will validate the code you’ve written and let you know whether it’s correct – that’s especially helpful if you don’t have easy access to a quantum computing expert to evaluate your solutions.

  • This blog post lists a lot of other good resources and pointers – whatever your learning style is, you’re certain to find something interesting!

About the Interviewee

Mariia Mykhailova is a senior software engineer in the Quantum Systems group at Microsoft. She drives the developer outreach and education work for Microsoft Quantum Developer Kit, figuring out new efficient ways to help people learn quantum computing.  Mariia is the author and the maintainer of the Quantum Katas project and of the Q# Coding Contests series.  She also teaches a course on quantum computing at Northeastern University. In her spare time she creates puzzles and writes problems for programming competitions.

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT