Rene: Hi welcome to QuBites, your bite sized piece of quantum today my name is Rene from Valorem Reply at today's episode is a little bit more technical. We're going to talk about Microsoft Quantum Development Kit (QDK) and for this, I'm honored to have a very special expert guest today, Dr. Sarah Kaiser. Hi Sarah and welcome to the show! how are you today?

Sarah: Pretty great, how are you Rene?

Rene: I'm great. I'm really good. Can you tell us a little bit about yourself and your background as it relates to quantum computing?

Sarah: Sure. So, I've been working in the field for almost 10 years now. I did my PhD in experimental quantum computing hardware and technologies and now I work in the quantum open-source software space. So [my primary focus is on] developing new software tools, platforms and the community around the tools that are going to enable us to take this technology to the next level.

Rene: That's impressive! So, folks another PhD here on the show but don't worry Sarah does a super good job at explaining these things so that [even I] can understand it. So, don't worry about [not being able to understand]. And by the way [Sarah] you also have a Twitch channel and you just wrote a book right?

Sarah: Yeah. So, I'm really excited about sharing with people how cool I think quantum computing is! So I regularly write code for quantum computers live on Twitch and yeah I have a book with Dr Chris Grenade coming out called Learn Quantum Computing with Python and Q#. So, yeah, it's aimed at developers to kind of get them to take the development skills and programming skills, that they already have, and kind of bootstrap them into writing code for quantum computers.

Rene: And thanks for dressing appropriately today with your book shirt and, I mean look at the earrings folks! It says Q# right? Which brings us actually to one of the first topics we wanted to cover here. In a previous episode you might remember that we talked with Fabrice Frachon from Microsoft about Azure Quantum and we touched just briefly on the Quantum Development Kit, QDK, and the language Q# but let's talk more about it. So, first of all Sarah what is the QDK and Q# and how are they related to Azure Quantum?

Sarah: Yeah, so that's a good question. So, the Quantum Development Kit kind of describes a collection of tools. So, there's a new language Q# as you mentioned, which is really a domain specific programming language for quantum computers. So, kind of like in the classical computing stack where we have GPUs (graphics processing units) and FPGAs (field programmable gate arrays), often we have specialized languages that we can use to best leverage the capabilities of those specialized devices. So, kind of like you have CUDA (Compute Unified Device Architecture) for GPUs, you can think of Q# as a similar domain specific language that allows us to really efficiently leverage the capabilities of these quantum devices.


The quantum development kit basically includes all the support tools, the compiler, the libraries, things like that that can really make using Q# [easier], It kind of completes the workflow if you will. So there are some libraries for doing quantum machine learning, quantum chemistry, [etc]. I'm a Python developer by training and so [QDK is kind of providing] all the things that I [would] expect [in Python but for Q#]. [For example, say] I don't want to have to implement this [quantum phase estimation] so let me look up phase estimation [in the QDK library] and, ah, there's a library for phase estimation. Or there's features in a library I can use.


It really gives you what I would call the more traditional development experience with editor plugins [such as] a VS code and Visual Studio editor extensions as well. And so, I can literally switch from doing C# to Q# to Python, all in the same kind of experience.

Rene: And I'm sure you're also well versed in all of that stack because you're actually also an MVP for development technologies, right? So we almost forgot about it, she's also Microsoft MVP. It’s like the whole bucket of [expertise], it's really impressive. And so we talked about the QDK and Q#, one thing I saw today, there's also quantum intermediate representation (IR), right? Which is this new intermediate representation similar [to using] LLVM when we're dealing with C++ or the IL (intermediate language) when we're dealing with .Net, right? And so maybe I [described it correctly], maybe I got it wrong, but maybe you can confirm. [My understanding is that quantum IR] is helping me to have this kind of middle layer before I go down to the hardware, right? So I have more flexibility to targeting a different quantum computing machines, is that somehow correct?

Sarah: Yeah, I think you got it pretty much exactly right. And you hit on the topic that I'm currently very interested in. So the Q# team recently put forward an open source proposal for this quantum intermediate representation [that I love]. And as you mentioned, just like LLVM, this is a common thing where we’ll have tools that we’ll compile to some sort of intermediate representation and then we build other tools to take that intermediate representation to whatever else. So it's kind of like a many to many connector sort of representation and so we haven't really had one in quantum. We've had different proposals, we’ve used things like open Chasm and quill, but one of the main challenges in quantum computing is often the applications that we want to use or use quantum computing for are what we call hybrid applications. Where you have a bunch of classical computing that you want to do [and] you're basically using the quantum computer like a subroutine in your classical algorithm or program that you're running.


So it's been hard to have an intermediate representation that really encompasses both the classical and quantum pieces. And so that's like kind of one of the big strengths of QIR (quantum intermediate representation) is that it's literally a fork of LLVM. You basically get all of the LLVM infrastructure for free. And then basically, it adds some additional components that allow you to express what the quantum device should be doing. So yeah, it's a really neat thing and I think especially in terms of our ability to extend the quantum ecosystem.

The quantum software ecosystem right now, it's kind of challenging because not a lot of the tools [work] together. And so having some sort of common representation [would be great]- given everybody agrees to use it, Standards are great until we need another standard, right? I think, as someone who likes to build a lot of tools and stuff that help other quantum programming stacks, I think it's going to be really great.

Rene: Yeah, and in terms of the whole market or industry right now, I think there is a lot of other solutions and libraries and tooling for quantum computing. What is the impact and adoption of the QDK and Q# that you're seeing in the community of the quantum computing world?

Sarah: Well first of all, we need a diverse ecosystem of tools. Like we don't really do classical computing with just C#. I mean, maybe some people would like to, but I don't want to. But we have tons of different tools for different reasons because they make the particular task you're trying to do easier. And so, the way I see it is a lot of the other tools that are currently in our quantum ecosystem are much closer to the hardware. Which is great because we have devices that we need to actually be able to communicate with to characterize things like that. But it's kind of like the difference between writing in Assembly or [Visual] Basic versus writing in Python.


Q# sits at the other end of the spectrum where it really is designed and focused around expressing quantum algorithms and quantum programs. So that really makes it easier to say [for example] if I'm interested in doing circuit optimization or I'm interested in applications, this is going to be a higher-level language that's going to be easier. It's going to have things like phase estimation, all pre-wrapped up as a thing that I can just call. As opposed to having to think at the gate level and build things up. That’s not to say, I mean we need all of these tools because there's different tasks to be done at the different levels. But as someone who likes to think on the application side, taking a paper or taking an algorithm that I see ‘in the wild’ and then wanting to go try and implement it, it's a lot. I found it a lot easier to use Q# to do that sort of task. That's kind of how I see everything layout in the ecosystem.

Rene: That’s actually pretty fantastic that Microsoft is putting a lot of effort into development tooling here and you know building the new ground for a higher programming language and so on. And yeah, I totally see the benefit as well. That's awesome! How can people get started if they want to adopt Q# or QDK?

Sarah: Well, you're talking to the right person! There are a lot of good resources out there. [However], as always, the best place to start is at the docs - so We also have a community group for Q# users. We're about a couple hundred folks right now but we work together and work on different projects, building simulators, compilers, things like that. So that's a really great place for support. There's a Quantum Computing Stack Exchange, so you can actually, just like I would for Python, Google ‘how do I sort a list?’ And then find the answer and copy paste from Stack Exchange. So, you can do that already.

Rene: You can [for example] type ‘how can I implement Shor's algorithm and then you can copy and paste simple code in Q#?

Sarah: Yep. I mean, I haven’t literally tried that query, but I know [the Stack Exchange library is great]. [You can] also [find resources] in the book that I've written recently, Learn Quantum Computing with Python and Q#. And we have all of our samples on GitHub. So, one of the things that makes me most excited about working in quantum computing and especially the open-source area right now, is we're at a huge growth point. We can develop the software independent of the hardware. We know what we need from the hardware and so we can design the API but we don't have to necessarily have the others. We can build simulators; we can do all kinds of stuff to test that. [However], we can really build up what it means to be a quantum software developer [right now], whether it's in industry or in academia. And so most importantly having that all be open source as a part of the ecosystem, I think is really, really important.


There are a number of good organizations that are helping to further that as well which are also good resources. There's a Quantum Open Source Foundation. They basically have some of the best lists of resources collated for [learning about] what projects are out there. I also work at the Unitary Fund. We're a nonprofit [through which we] basically give out micro grants to folks that want to actually develop quantum. Whether it's Q# or Qiskit or Cirq, or whatever open-source project you want. We want to actually help fund and make that ecosystem grow. So that's our mission.

Rene: Right. Well, we're already at the end of the show! Thank you so much Sarah for joining us today and sharing your insights, it's very much appreciated.

Sarah: Definitely! I always love talking about quantum stuff!

Rene: Yeah, I mean it’s so much fun! Well thanks everyone for joining us for another episode of QuBites, your bite sized piece of quantum computing. Make sure to follow Dr. Sarah Kaiser on Twitter, on Twitch and get her book of course! I will definitely go to Amazon and order it! So, yeah, again thanks for joining us. Watch our blog [and] follow our social media channels to hear all about the next episodes. Take care, be safe and see you soon. Bye, bye!

Sarah: Bye everyone!