 So I'm going to divide my talk into three parts. In the first part, I'm going to talk about some parallels that we can find in quantum computing space right now with the development of machine learning and how the field of machine learning has developed. In the second part, I'm going to give you guys a little primer to quantum computing. Just a very quick rundown of different architectures and things you need to know about quantum computing to understand the rest of the day. And in the last part, we're going to speak about a little bit how you guys can help and how software engineers and computer scientists fit into the picture and how you can hand out your hand and offer some help to these projects. OK. So success of machine learning really falls down not only to machine learning scientists, but also a lot of work that has been done around machine learning to kind of help foster the ease of adoption of the tools and developments that are being produced. One of the big things that helped people develop their own machine learning solutions are machine learning frameworks. And here on this slide, I list a couple of the most popular ones. I'm pretty sure that you're familiar with scikit-learn or TensorFlow, at least, heard about these libraries. And really what these projects do well is that they have really nice, well-documented APIs, tutorials, they have a really good, basically, foundation that they offer to anybody who wants to jump into the field. So if you want to start machine learning, you don't need to implement your own machine learning algorithms from scratch in C++. You can rely on all these libraries and existing frameworks to help you build your models. And that's something that really helped people to jump into the field. Then there's a lot of tooling that has been developed that helps people to not only develop their models, for example, in the case of Jupyter notebooks, it's a really great collaboration tool, but also to share their models and deploy them into production. So for example, the Alux framework over here is a tool that helps you share your model and provide an inference pipeline, no matter what kind of framework you use to actually train the model itself. So you can see that once again the theme repeats. You not only need the underlying algorithms, but you also need to build a lot of tooling to bring this technology, machine learning, into the market. And last but not least, a lot of progress in machine learning is really fueled by just going for bigger and bigger architectures. There's this joke in the community that bigger is better and that the bigger network solves everything. And on this graph on the left, you can see that's a logarithmic plot. You can see how the different architectures that became really successful, how much training they actually need per day. And you can see that for AlphaGo, zero reaching like 1,000 petaflops seconds per day. So once again, basically this development is largely fueled by engineers working on large scale systems. On the right, you can see the pictures of the Google TPU, that's our processing unit, which kind of brings in the hardware engineers into the picture. So you can really see that it is an effort of a whole range of diverse backgrounds that is kind of being combined here to produce the successes that we see today. All right, so now let's kind of, you know, just keep that in the back of our minds and let's jump into the part of the quantum computing primer. So I guess you guys are here because you have been hearing a lot about quantum computing and yeah, there's like all these very hyped up articles. If you scroll through your LinkedIn feeds, you're going to see various sensational things being written about quantum computing. So yeah, the question is, how is it going to actually change our lives? And even more recently, a couple of months ago, Google has announced that they have reached this thing called quantum supremacy. And yeah, what does that even mean for us? Are we going to throw away our regular computers and everybody's going to just have a quantum computer now? It's unclear. So the hype is really, really getting higher and higher. This is the article that actually announced the quantum supremacy and you can see that they used a QPU with 53 qubits that can occupy a state space of 2 to the 53 because every qubit can occupy two basis states. And you can see that if you were to simulate this problem, it would take you, according to this estimate, 10,000 years on a state-of-the-art supercomputer. So this particular transition, having demonstrated that we have solved the problem which is not necessarily of practical value right now, is what we called... But it's basically solved on a quantum computer whereas we can't efficiently do it on a classical computer. That's what we call quantum supremacy. So it doesn't actually yet mean that quantum computer has surpassed classical computers on a practical problem. And that terminology is something that is being fleshed out in the field. Actually, Will Zhang here in the audience has a nice blog post about different terms we should use for achieving advantage in the quantum computing world with quantum computing architectures. So, yeah, right now we are probably, I would say, somewhere around the peak. I don't know how many people in the audience who are familiar with the field agree with me. And we're going to see how the hype cycle evolves and what it's going to do to the field. But the impact of quantum computing really shouldn't be that... We shouldn't be thinking that it's going to come here and it's going to replace all the methods that we already have to solve problems. Rather, what we should think about... We should think about quantum computing helping us solve more problems. So, what are the things that quantum computers would be good at? Well, these are problems like optimization problems. You know, a classic example is this traveling salesman problem where you try to find a path through a city that is most efficient and visits all the nodes that you specified, for example. Encryption and cybersecurity, we can hear a lot about quantum computers being threat to our cybersecurity systems because they're going to break our encryption. But we can also use quantum computers to develop better cybersecurity. So, it's a two-sided coin. And then there's a big subfield of quantum computing called quantum machine learning where people are trying to figure out whether quantum computing can help us solve some of the bottlenecks of scaling machine learning that we kind of have today. Then, on a more, I guess, near-term side, we can use quantum computers to do things that are much closer to what physical systems do. So, molecular drug design and kind of the design of different materials, for example, using organic batteries or solar cells, are fields where we expect that quantum computing is going to be, you know, probably providing some kind of advantage sooner than in some other domains. Now, that was a very brief introduction. I'm going to jump in this part of the talk a little bit into different paradigms of quantum computing and how does the field divide a little bit? So, there's three major areas. There's quantum annealing, discrete gate-based quantum computing and continuous gate-based quantum computing, and I'm going to jump into each of these individually. All right, so in quantum annealing, we're trying to find solutions to optimization problems, and basically what we do, we specify some sort of energy landscape. So, we define hyperparameters that define the energy landscape, and quantum annealing is a process that in the hardware tries to find the minimum energy state of the system. So, the system models this landscape that you can see on the left, and the minimum energy state would be the deepest valley of this diagram. So, that corresponds to the conformation of these little proteins that has the lowest energy. And the biggest player in the field is a company called D-Wave. They're a Canadian company and have been around for a while now, more than a decade, trying to tackle this problem. If you look at the hardware of quantum annealing, you might have seen the picture on the right. That's how the D-Wave machine looks when it's all closed up, but in the middle, that's the actual, I guess, the chandelier of dilution refrigerators, and you can see how the temperature is dropping all the way to the processor on the bottom. So, the processor itself runs on a temperature that is colder than the temperature in the outer space to minimize all the noise and thermal fluctuations. Here, you can see how the scaling of the sides of the chips and the quantum annealing kind of evolve. It's kind of a self-fulfilling property. The company is trying to achieve this exponential leveling pace that kind of reflects the Moore's law. And right now, actually, even bigger chip is in development. So, the highest chip on this graph is 2,000 qubits, and I want you to keep in mind that between the paradigms, the number of qubits or other metrics don't really port. So, if I say this has 2,000 qubits and in some other architecture, we have different number of qubits, that's not directly comparable. Here, you can see that basically, this is the architecture of the new generation, the wave chip. On the left, we have this 2,000 qu, called the chimera graph. And on the right, we have this new topology, called Pegasus. And the lines here really depict the connections between qubits. So, this kind of... I guess, yeah, determines which qubits can actually interact in the equation that specifies the energy landscape. So, the more connected, the better, but making more connected graphs is more difficult in hardware. So, this is how you specify the energy landscape. It's a, what we call, quadratic unconstrained binary optimization problem, because the variables here are quadratic, sorry, binary, and the terms are at most quadratic. That's all you really need to know. Don't need to dive deep into the details how you specified that equation, but it's actually not that difficult. It's basically you need to encode the constraints of your problem into some sort of energy penalties that if are violated, they no longer correspond to the lowest energy solution of that equation. You can see that the things aren't perfect. Here on this graph, you can see that some qubits are missing or some links are missing, and there's a bunch of, like, more lower-level problems connected with, you know, programming these devices, because we have to deal with things like finite resolutions. We're going from digital to analog, and we might not be able to represent, you know, for example, floating point numbers with the precision we would like to have. So there are things that, you know, kind of come into the picture that you might not be used to, because you're simply dealing with a technology that is more lower-level than, you know, your regular classical programming language these days. Here is an example of how you, for example, would specify a problem. So this encodes an energy landscape of a checkerboard, and its lowest energy state is basically a state where the neighboring qubits are alternating in value. So they're 0, 1, 0, 1, or 1, 0, 1, 0. And you do that by imposing a very simple matrix of penalties here that is defined there over with the J matrix. And it's really only like a couple of lines of code using the D-Wave standard development libraries. So the workflow in the quantum annealing world is really you define a problem, you figure out how to, you know, encode that problem as this equation, and as I mentioned, you basically do that by imposing different penalties for situations that you don't like. So for example, in the previous case, I would impose penalties for two qubits being the same value. Once you have the equation, you try to, what we call, embed it on the graph, so you're going to make sure that the qubits that are talking to each other in your equation can talk to each other on the hardware, and then you just solve the problem on the hardware and you read out your solution. And if you want to guys play with it, there's D-Wave Leap. It's a platform out of D-Wave that you can have one minute of free QPU time to play with and some further resources for you guys to look at. Okay, the universal quantum computing, I'm going to speed up things a little bit. Here we are constructing so-called quantum circuits. So the big players are IBM, Google, Rigeti, and they're each developing their own respective libraries that, you know, you can use to specify quantum circuits and run down the results. A fundamental building block of quantum computing in this paradigm is qubit, and this is something that you might have seen previously. If not, it's completely fine. Qubit is specifically specified by two amplitudes, that's alpha and beta in this equation, and those squared specify the probabilities of sampling each of these basis states, either zero or one. And basically, in order to program the device, you construct a circuit. So very much similar to classical circuit logic, you specify quantum circuits. You basically have either operations that touch one, two, or multiple qubits, and by imposing those operations, you alter the state of the system. You alter what we call the wave function. And at the end of the computation, you just read out the result. So, for example, one of the things that you can do, you can basically introduce entanglement. It's one of the usual building blocks of quantum algorithms, and you do that using a Hadamard gate. Hadamard gate is nothing else than a certain rotation of the qubit. We can see the result of the rotation here for two basis states. Another gate that you can use is a CNOT gate, and if you were to combine the two, you can actually reach this combination of states, which kind of imposes that we can only get zero, zero, or one, one out of the system, which we call entangled state, or maximum entangled state. So we would do this using the... We get this library as described over here, so you can again see that it's a fairly simple way to specify the circuit. Actually, it generates a circuit in a language called quill, which is on the right, so it's very much like assembler-like in this particular sense. And here, the workflow is, again, very similar. You go from your differential problem, then you figure out the quantum algorithm, you generate the quantum circuit for that algorithm, and you compile it to the hardware so the hardware can only use certain operations, so there's a step called compilation where you make sure that the gates that you're using are actually implemented on the hardware, and then you run your thing on the quantum processor and read out the result. Okay, another paradigm, and the last one that I want to talk about is continuous verbal computing, and here, instead of having these two basis states, you have a continuum of basis states, so instead of qubit, we call the computational building block the q-mode. And, for example, one of the applications or one of the kind of building blocks of these systems is quantum boson sampling that you can use to, you know, sample from complex protodistributions. It's well suited for graph problems. For example, we wrote a paper on using Gaussian boson sampling for certain molecular docking problems, so that was basically trying to find maximum cliques in certain graphs that we generated. So it's really, you can see that you can have to combine, you know, knowledge from quantum computing with knowledge from computer science in order to achieve useful results. And the biggest player in this field is Zandu, and actually we have a speaker from Zandu here today, so he's going to tell you more about this domain. More resources if you guys are interested. You can find it in a slide deck. So, at the end of the talk, I want to kind of talk about a little bit about how can you become part of this and, you know, what are the things that you can actually do to, you know, help the field out. The nice thing about quantum computing is that there's a big push in the community for the things to happen in the open source way, not only the research itself, but also like all the underlying building blocks. The libraries are available open source, and, you know, it really helps reproducibility, but also it helps more people join the field. So like all of these, not all of these, many of these quantum hardware providers are also providing open source libraries to program their devices or play with their quantum virtual machines, quantum simulators, and that is really nice for us to be able to, you know, spread the knowledge. The kind of implicit thing about the field is that it comes from, you know, academia to a degree, and many people working on these open source projects are scientists, and they're doing a great job, but many of them are not software engineers by training, and there's a huge potential in, you know, more of software engineers being involved in helping, you know, scale and design APIs and just build the system in a way that follow the best practices of software engineering. So there's like a huge list of projects on our website. The links are on the right, and you can use to see a, you know, quite exhausting list of different projects in different areas, and I want to mention some of those here. So these are things like quantum compilers or quantum circuit optimization, where you try to make sure that you modify the circuit in such a way that you, let's say, optimize the number of gates, and at the same time you produce the same kind of result at the end. There are things like development of control systems, so we're actually going to have a speaker today speaking about an open source project for control systems in quantum computing. We have things like quantum games or IDE tools, visualization tools, so there are a lot of these things that need to be developed. Now we can draw the parallels that I was speaking about in the case of machine learning. A lot of work needs to be done and it has to be able to do research and really develop this field further, and all of that work is, you know, fundamental software engineering basically waiting to be fulfilled, so feel free to jump into any of those things. Community is very open, and I'm certain that they would love, you know, helping hand from people that can, you know, tell them how to structure or package their Python library better and put it on PyPy because maybe right now it's on GitHub and it's not even installable for PyPy. So there are a lot of opportunities like that if you guys want to jump into the space and learn more about the area. And if you guys feel even more adventurous, there's an incubator that is dedicated to quantum computing slash quantum machine learning. Actually, Sean is in the room. Sean is one of the people organizing it. Sean, if you could wave your hand, I could talk to you in a break if they're interested. And that's actually where my company started, so shout out to these guys. And if you want to help with, you know, education and outreach, you can speak to me and Mark. We're running the Quantum Open Source Foundation. You can join our Slack channel if you want to become part of the community and know more about the events and things that we're organizing. And yeah, for that purpose, you can also follow us on Twitter or other social media accounts or just GitHub or GitHub if you guys fancy that. And with that, I thank you for your attention. Also... Oh, yeah. And there's also a microgram program from Will called Unitary Fund, so that's Unitary.Fund. You can check out if you are interested in doing a project, but you're not sure if you could support it yourself. There's a way to get funding for that as well. All right, so that's... Thank you for your attention and let's wait for the next talk.