who was an associate professor in Colorado University and is also part of a researcher in Continium. So please go ahead. Thank you. Thank you. Hello. Okay. So I'm making sure that this works here. Okay. So thank you very much. So at Continium, I'm pretty much responsible with some Mark Jackson and Thomas Cervoni. We are like academic outreach, travel universities and talk about Continium, but also about quantum computing and so on. So today I want to now give the second lecture on Introduction to Quantum Computing. So it's going to be a little bit different flavor now. So you have been now told how you went from the Turing machine to kind of P and MP hard problems and how you would like to have your computer to be able to do statistical computations. And then you have been shown where classical probability theory kind of breaks down because you have to think about quantum mechanical concepts. So what we're going to do now in this lecture is I'm going to make these slides available to you. And my notes after my lecture today. I will use the board in conjunction with the slides. So I'm going to work between the board and the slides. If you do not have a notebook, here's a stack of notebooks. Okay. I'm going to give you now five seconds to pick up your notebook if you haven't done so.  Active writing. And there are pens, I think, right next to it. Because we all tend sometimes to fall asleep, which is okay. Well, I didn't know that notebooks can do no pads to write on can be that popular. That's amazing. Okay. Great. If you still have a notebook, just go around on the side and get one, so that's good. Okay, great. So let's quickly go over the topics. I want to cover now the next hour. So it's quite a lot of material I want to cover. But first, I want to kind of tie on to what you have heard right now and talk about logical bits in the classical sense. And then I want to introduce the idea of classical bits versus qubits and how they are the unique properties of quantum computing coming to play there. We'll talk about the postulates of quantum mechanics. I'm going to give you an overview. Each of them are probably a lecture by themselves. But you should get an overview, just in case you've forgotten. Then we'll discuss the block sphere, which is a way of visually representing the qubit. And then we'll do a little bit of complex numbers and linear algebra that we use for quantum computing and then we'll talk about the quantum circuit model. So I will not do any programming yet. When we get to the quantum circuit model, at the end, you pretty much then in the afternoon, you will be exposed to ticket, quantum SDK, which is state of the art, and you will learn then how to implement quantum circuits using ticket. That's in the afternoon today. So let's get going. So first of all, I want you to do a little bit of an exercise here if I can connect with you. But first of all, let's go back to kind of like logical circuits. So all of us are used to logical circuits. We have our cell phones that work with logical circuits. So even simpler than our cell phone, what is another example of everyday's life where you have a logical circuit? I can imagine a little chip in a device at home, maybe? Anyone? Switches. Yes, switches, on-off switches. Yes, so switches, any kind of remote control you have. These are all based on logical circuits. So pretty much logical circuits, as you know, you have your logic gates, right? And pretty much for logical circuits, you have either a zero or a one, right? So this is a logical bit. So you start there, and then when you are developing kind of like a circuit, your fundamental building block of logical computing, what you do is you kind of have gates that help you go through your computation, what you like to do. So first of all, in logical circuits, what you have is you have some kind of like input, right? Then you do something, do something, right? And then you have an output. So we have learned today that obviously in order to do that you must have some kind of like function. You work on or a computation you work on. And in a logical circuit, what you have, you have these gates. And there are many of these gates. For example, the AND gate, the OR gate, the NOT gate, right? And each of what these do is you take an input, you have this gate, that does your computation, and then you get this output. So what you see up here is a lot of different tables, right? I do want to write this down. So here you have the AND gate, right? Which looks like this. And then you have your table, right? So the idea is you have an A going in, you have a B going in, and you have an A and B coming out. So this is kind of like what logical circuits do.   So both of the input and output have to be one in order to get that one for output. Let's go back to how does it work on a level of computation or in a device? So how does it work? So you have typically a transistor, right? So you have a voltage going in, right? And then you have some kind of chip, some material, right? That's very smartly sandwiched together in order to do the computation for you. So for example, you have this chip. When you have voltage going in, just say for being easy. So one would be one volts and zero would be zero volts, right? You go into that chip, the chip has a smart setup, and then it gives you the output exactly how you would like to put the gate together. So in any case, so you have all these gates, and then what you do when you have a logical circuit, like I talked to you about, this is for example the NOT gate, if you have a logical circuit, you have some computation in mind, what you do is you add these different gates together, okay? So I want you to think about it, and I'm going to write it down too. You also have a cell phone, right? But for example, now if you just want to think about something very simple, your garage door opener, right? So you want to design a circuit using basic logic control to have your garage door open, right? So first of all, you're going to have to have a remote control, right? That either is active or inactive, for example, and then you have maybe you want to detect an obstacle, right? So for example, you don't want your garage door to close, for example, when there is an obstacle, right? So I don't know how many of you have played with the sensors in a garage door opener. I've spent a lot of time on that in my house. In any case, you can think about how could you put the logical circuit together in order to have a garage door opener. So maybe I give you five minutes to, no, five minutes is a little bit too long, but I give you a little bit of time to think about that. So what you want is you want the door to open only no obstacle, extra opener. So the way you can think about it, so A, let's say this is your opener, and B, let's say that's your obstacle, detector. What you typically do is you look at the sentence and says like and, right? It's active. There's a couple of words you can see there. But in any case, what you could do, for example, you can say, well, at the end of the day, I want to have kind of like an and gate, right? Where I say that both of them have to be one in order to get a one output to open or close, right? So in this way, you can see, well, just maybe this is an input here, I have into my and gate, but then B, that's your obstacle detector, right? So typically, your obstacle detector is zero when there's nothing in the way and it becomes one when there is something in the way, right? So what you want, you only want to open it or close it when there's no obstacle, right? When I close it when there's no obstacle. You want here and not skate and you want that to go in here, so this is a not. So only when B is not, there's no obstacle, you want after A being active, you want it to open, right? So you can try and tell this call a truth table so you can think about what's A, what's B, what's your output and you can go through all of these possibilities. So when A is active and when B, when I don't have an obstacle, right? What happens here now in this intermediate step because B is not active, it becomes a one. So now, maybe we should do here, sorry, a B. So now it becomes a one and my output is one and my garage opens, right? So we can go through this truth table to figure out what you're doing. So this is a classical circuit and it turns out that quantum computing is very similarly like set up where you have gates that do operations on an input in order to get your output, okay? The difference here is this is a truth table, this is deterministic, right? You know your outcome. We just heard about there's ways of doing it probabilistic. So the output for quantum computers will be non-deterministic, right? So there's going to be a probability you have to work with. But we'll build up to this. So you've probably heard about, you know, bits as we talked about already and there's a calculation, right? Typically you have zero in once and if you want to, for example, take a bit string and you want to turn it into bit string and you want to turn it into your decimal number, right? We can do some math. So for example, if you want to build an adder, right? You want to add two numbers together. You would represent five in terms of bits and six in terms of bits. Then you have an adder gauge to add them together. You build an adder circuit, for example. And then you get, again, a string of output bits and then you convert them into your decimals, right? Which you use in a computer. So you know how this goes. So typically you have some numbers, right? You have a bit string and what you can do with this bit string is you can pretty much say, well, the decimal number is you take the entries of your bit string and you multiply that number times two to the i, right? So where i is your exponent. So how do you do this? And i depends on the position, right? So for example, as an example right now, let's look at a value. So example, which I have up next. What is the binary number of 1, 0, 1, 1 in, yeah, what's the binary number? 1, 0, 1, 1 in a decimal number. So we have here a suggestion 11. So let's do this. So 1, 0, 1, 1. Oh, yes, 1, 0, 1, 1. So this is your first one, right? So this would be now, if you relate it, it would be 1 times 2 to the 0 plus 1 times 2 to the 1 plus 0 times 2 to the 2 plus 1 times 2 to the 3, right? So you have 1 plus 2 plus, what's this? 8, which gives you 11, right? So this was a crash course in kind of like how you do a logic circuit. What do you do with bits, right? You get the deterministic output value. This is 11. Okay, any questions? So now let's talk about quantum bits a little bit. And while I do the active exercise of raising. So I talked about bits, now let's talk about quantum bits. So we call these quantum bits qubits, as it says up there. And you can also quantum bits qubits. You can sometimes see them written differently. But the unique thing about qubits is that they are, you know, not deterministic. And they are kind of used as a tool to explain to you how quantum computing works and what's the uniqueness thing about it. And then we have come up with a very nice and smart mathematical ways in order to do computation on these qubits, right? And describe what they mean in a function. Because mathematically we like to work with functions. So the first thing I want to point out is that you have a qubit. You have seen this notation already in the previous lecture. So it can be in state zero. That's a state zero. Then you also have your state one, right? So if you've seen this notation before. This is written in terms of direct notation, okay? So zero, as you've seen already, this is in direct notation. So this is a column vector. So this is also called a cat. So cat zero and cat one. So the thing about qubits now, which is interesting, is that a qubit is a two-state system. So it can be in state zero and state one simultaneously at the same time, okay? So compared to a classical bit, you are either zero or you're one. That's it, you have to make up your mind, right? You flip a coin, it's zero, one in essence, right? So you have to make up your mind. A qubit in the other hand is both states at the same time. It doesn't make up its mind until we measure it, okay? So this is very, very much different to the classical bit. So if you think about it, if you think about, you could have the state zero to be, you spin to the left and the state one, you spin to the right, but if you're a real qubit, you spin to the left and right at the same time. You don't know what you're doing. You can't make up your mind, right? So that's the difference between a classical bit and a qubit, and it kind of goes deeper than that, but that's the main thing right now you have to understand, is that it has the simultaneous properties of both states, and we call this a superposition, okay? So that is the important thing right now, and we'll go through the math in just a bit. Mm-hmm. Oh, yeah, sorry. Good. Round your points. Yes. Thank you. So when you are going through computation, quantum computing, there's a lot of different ways of you are developing a quantum computer. So you can have photonics qubits, you can have trapped ions, superconducting qubits, and they all have a different ways of computation. So a qubit for photons could be a different polarization, right? It could be horizontal polarized and vertically polarized, and you manipulate the qubits in terms of using kind of like photonics devices, filters, for example, right? Rotations and such. If you have trapped ion qubits, then you have some kind of ion, and you think about the different energy levels. So a zero qubit would be a lower energy level than one qubit of the energy level of the ion. Superconducting, again, has different ways. Trapped ion quantum computers are used typically lasers to manipulate the state of your qubit. Then superconducting qubits like IBMs. So we have trapped ion quatinium, and superconducting qubits. Then you have, again, a superconducting circuit, and you use kind of pulses, microwave pulses in order to manipulate between these two states. So again, these are just a few of them. There are more out there, and you can look up details. So now let's go into the postulates of quantum mechanics because they're very important for quantum computing. So sometimes you hear about a postulate, you hear about principles. They're different ideas of, you know, scientists have come up with during history. Some of these postulates, you know, were kind of like given, and then sometimes we have done experiments to show that they're true. Some of these postulates are still not well understood in quantum mechanics, and we need to understand them better. But in any case, quantum computing is pretty much a consequence of all of these postulates and principles in quantum mechanics that kind of like made it possible for us to actually have actual hardware to run a quantum computer on. So some of these postulates in quantum mechanics, how many of you have not taken quantum mechanics? So all of you have. So this is the review. So you know that there's the state postulate. So a vector describes a quantum system. You have the measurement postulate, right, until you measure something. I don't really know which state your system is in. It has to collapse. There's a superposition postulate. I just talked about you have the quantum system exist in a superposition state of zero and one. And then you have this evolution postulate that you have your state, which you have your quantum state evolves over time, right? We took the usage of Schrodinger equation to describe that. Then there's different principles. Kind of experiments have shown that quantum mechanics follows these principles. You've heard about the wave-particle duality. For example, particles exist both wave-like and particle-like features depending on what you do. Uncertainty principle, right? You know that if you know momentum very well, you don't know the position well, right, and vice versa. That's one of the limiting factors of quantum mechanics. And then you also have the entanglement principle, right? So you can entangle states. So when they are far, far apart, you can still kind of communicate with that state. So there's some intrinsic correlation between the two states, and that's also very unique for quantum computing. Then obviously, the consequences of these postulates and principles, for example, is that you have quantization. So certain physical properties, you have discrete energy levels, right? That is not very obvious from classical mechanics. Where you have rather continuous values, right? Your function is continuous in classical mechanics, for example. Then you have interference, which we already talked about today a little bit, that you have the quantum particles that can interfere with each other constructively and destructively. And that's an important tool for quantum computing. And yes, quantum computing is a consequence of these principles. So in any case, you know you studied quantum mechanics fairly deeply, and then all of these things you learn in quantum mechanics fit into quantum computing, which is just very nice. So pretty much now what I want to do is I want to kind of talk a little bit about superposition principle, right? So when we talked about that your qubit has two states, it can be zero and one. But in principle, you could have K states, right? So classically, think about energy levels. You could populate the zero state, the first state, the second state, the third state, and so on, right? So you have many states. So classically, you have all these states you could populate with, and each of these states could be assigned to something, and you could use that for computation. So in principle, you could have K of these states. We typically work with two, a qubit of two, right? So with two states, the zero state and the ground state, but you can have many of these. In principle, you could have K states if you wanted to, and people are looking into ways of having more states in their bits for quantum computing. So this is something we talked about already. So you have your quantum state, and you want to write your wave function. So this is something very important now that when you write your wave function, your Schrodinger's equation, the way your qubit state evolves, so you have a wave function. We typically call it capital Psi, again in the ket notation.  So you may have the zero state, plus you could call this actually alpha sub zero, I believe, yes. And then you have alpha sub one for one to alpha sub K minus one. So in the case, this is your wave function, this is what you evolve over time with your Schrodinger's equation. You can also write in terms of a vector, which has data there, and then you have to have them to be normalized. So in any sense, your state, your quantum state is a unit vector in the K space. It's a complex space, and it has to normalize to one. And we also know this as Hilbert space. And then also in order to operate on this wave function, so typically when we do operations, we apply a unitary operator to that wave function. Okay, so now we are going to, this is your input, right? Go back to your classical idea of gates. This is your input, right? Now you're applying some gates, so you have to have input to get a new output. So you're doing an operation on your state function, a state vector, and that's how you do it. So these operators for quantum computing are matrices. And these are Hermitian matrices, and they have a very specific property that if you take the complex conjugate or transpose u dagger, you do u u dagger or u u to the inverse, right? The inverse matrix, and then you get the identity matrix back. And that's a very important feature of quantum computing. It's a very important feature. We talk about circuit optimization to run it on a quantum computer. They even make it possible to run on a quantum computer. Unitary matrices are very important because we've all learned about gates, basic gates of a quantum computer, and they all connect to this unitary matrix. So that's a very important concept. Okay, so now, just as an exercise again, again, imagine you have these baoli matrices. These are very common in quantum computing. These are Hermitian matrices. These are 2 by 2 matrices. And for example, you want to show that they are indeed unitary operators. How would you do that? So you have sigma sec x, which is 0, 1, 1, 0. So how do you show that this is a unitary operator? You sigma x, sigma x conjugate, right? So you have this, right, times the same, right? And if you do this, because you have to do the dot product between it, right? If you do the math, you should get your identity matrix, right? So that's how you show it. If you wonder how to do this, so you do this times this, plus this times this, right? You have to do this entry, this times this, this times... Oh, yeah, so this times this, this times this, and so on, right? So you go through your entries in that way. Okay, so now let's talk about different qubits. So if you have one qubit, right, and you only have two states, you write this down in the superposition, where alpha sub 0 and alpha sub 1 are your probability amplitudes we talked about before. You square these, these give you the probability of being in a 0 and a 1 state. You can write the wave function's term of column vector instead of the bracket notation, and then you have a unitary matrix that operates on your one qubit, right? So now what happens if you have two qubits? Well, if you have two qubits, it's getting a little bit more complex, right? So now each of these qubits can be simultaneously in the 0 and a 1 state, right? So now you have four different states. You can put your single qubit in, up, down, down, up, or like 0, 1, right? So you have four different states, and each of them is going to have a probability amplitude assigned to them. Again, this is your wave function. If you square your probability amplitudes, you get the probability out. Again, you have your bracket notation here, right? This is your column vector, and your unitary operator is now a 4 by 4 matrix. Okay? Also, I want to say here, we talk about Hilbert space sometimes. So your two qubit system, once qubit system lives in C squared, Hilbert space, your two qubit system lives in the C to the fourth Hilbert space. If you now have multi qubits, right? Now, again, what you have, you have to think about each of these qubits can be in two states simultaneously, right? So now you have two to the n possible states.  And that's where quantum computing is making big leaps, right? Because if you have 50 qubits, you're already talking about terabytes of information, right? So it's blowing up quickly. So quantum computing is going to be very, it's impossible to do, like, model classically if you have 50 qubits. It's just you're going to need too much computational power from a classical computer. So in any case, you can see how it flows up, and you can also see, like, computationally how it gets, that's why it's so difficult, right? Imagine you have a two to the n times two to the n matrix. You have to all write it all out, right? And you have to go along. Maybe you've heard about sparse matrices that's so much easier in quantum computing to work with because you have lots of series you can throw out, right? So it makes it a little bit easier for your computer. But in any case, you can now appreciate why it blows up. It just gets bigger and bigger and bigger and eventually classical computing can't, you know, simulate this. So that should get you an idea of what a single qubit is, what two qubits are in multi qubits. Obviously, we can work with more states and then it actually gets more complicated. But typically our qubits now in our actual hardware has two states, right? A zero and a one. Okay, we really did this a bit twice. Okay, so now a lot of you have heard about a block sphere. So who has not heard about a block sphere? Okay, so most of you did, right? So a block sphere, this is your physical representation of your qubit, right? So in essence, what you can think of is that your qubit can be either you can think about the qubit being on this block sphere, it's a vector on this block sphere with lengths of one and you use spherical polar coordinates to describe the position of that vector. And pretty much what you do is you do a computational process, you can think about this that you have your block sphere, you initialize your state function, right? In a position, maybe in a zero state. And then what you do is you apply these unitary operators and what you do is you rotate your vector on that block sphere. Okay? So in essence, that's what you do. So each qubit is in essence a vector on this block sphere so if you have multiple qubits you have multiple of these block spheres and then if you entangle the qubits the spheres in essence talk to each other but it's a little bit difficult to to draw this picture. By any case, this is what we use typically in order to describe qubits. So it's a very nice visual representation of what a qubit does during a computation. So what you add these matrices. And that's another thing about these Hermitian matrices. They are rotation matrices. So maybe you remember in classical mechanics, right? When you talk when you go between different you go between different representation, you want to rotate it, right? On somehow for application or you want to go to a different space, you have to rotate it. And that's what all unitary matrices are. They have pretty much rotations on this block sphere. So yes. So pretty much then if you have your block sphere, right? And I'm not really good at drawing. That's why I have a picture up there. Right? But if you think about this you're looking at the block sphere this way. So see this is the y-axis and that's the c-axis. Here we have state zero. And here in the bottom we have state one. And you have a vector there. You are thinking about the probability amplitudes, right? So in essence you can think about the projections. But these probability amplitudes are the projections on the c-axis. But then when you actually measure when you measure a qubit what it does is it jumps either to this state or it jumps to this state, right? So it becomes then that value on the block sphere and it sticks there. It stays there. So it becomes then once you measure it this qubit on this state vector jumps to this state or this state. So it collapses onto the zero and one. When you do a quantum computation. This is the time. So this is what I said here in the words. So typically what you do if you have one qubit we already talked about this. You have it in a bracket notation you have your zero state and your one state. If you want to calculate your alpha what you do is you take the inner product so you may have seen and remember that from quantum mechanics you multiply the bra to your wave function right? So what is the bra? That's now a row vector right? So that would be then one zero. So now this is your row vector. So it's a bra and the other thing was the cat. That would be this way. So in the case in a product then you have to multiply a row vector times a column vector and then you get out a number. If it's imaginary you're going to take the complex conjugate and you get alpha squared which gives you the amplitude. You do the same thing for beta and so on. So you can do also now you can map your qubit onto the block sphere. So you can take this equation here okay here this equation and you want to map it onto the block sphere. Here what you do in this case is you are told you that you know from the postulates of quantum mechanics that alpha and beta must be complex numbers. So you can rewrite them in Euler's notation and then pretty much what you can do is you can go through the algebra and you can go back right this was your alpha this was your beta you put in your Euler's notation which are angles right so for your Euler's notation or science and coscience if you wish. You can factor out the E to the i theta 1 this is a common phase and this phase remember what the phase was on the block sphere the phase of the block sphere took you around right like this this has no effect like an overall phase does not have an effect on your amplitude or probability amplitudes so you can take that overall phase out and now what you do is rewrite this fashion so now you have alpha upset value of alpha and then here you have a phase a complex possibly complex number right here in front of your one state and then you can even go further in polar coordinates that's a little bit more messy have to go for a lot of algebra but at the end of the day what you end up with is this representation of your psi function where you have your theta right your theta takes you from up to down on your block sphere and then you have your phi E to the i phi that's your phase angle takes you around the block sphere so your qubit now can be represented on this block sphere very nicely so either you can use your bracket notation which is very nicely a way of representing in a very compacted nicely or you can go onto a block sphere where you can think about rotations on a block sphere so these are different ways so when you do a computation you can think about it in these different ways so now the last thing I want to do now are quantum circuits okay so quantum circuits is a way of doing your computation and in essence what you have here is a quantum circuit I got to redraw this a little bit because late check doesn't doesn't necessarily like show you the circuit you will see when you start computation today so you have is a quantum circuit so typically start state right that's your input then we call this a wire right so this is a wire so now we're going to do computation for this qubit on this wire so this is the qubit one typically actually we call this qubit zero so in ticket what you're going to see here is q sub zero that is going to be your first one so now we're going to do a computation on this wire so we call this a wire time is going this way and then what we do is we're going to do a unitary operator we can apply that to the wire and then we keep going and then what we could have because we have two qubits so maybe your qubit one is maybe initialize to random input right it could be a random state function doesn't have to be clearly in the up or in the zero position or down position it could be any again you have a wire you maybe apply another unitary matrix you shouldn't do your prime maybe call this u1 u2 and then you could have some unitary matrix u that maybe is in this case 4 by 4 matrix and you can now for example entangle it and you keep going and then eventually what you do is you measure out you measure your qubit why do we need to measure your qubit so we measure our qubit and then what we do typically what you have and it's kind of like drawn differently up there but here you have your classical registers so maybe here you have your first one so you have a classical register one and classical register two so what you can do is you can measure them out right during the school for next four days you will see algorithms that actually can measure things out and depending on what you measured out and what result you got you can feed that back into your algorithm right so this is pretty cool we'll do that quite a lot for example for quantum error correction and the other like algorithms that have it but this is your input this is your algorithm that's your measurement function right and obviously what you can have you can have it even more complex you could have this classical your classical computer right have doing some classical computation and then part of the computation is fed into a quantum computer that information comes out from the quantum computer and then you do a classical computation so there's also something called hybrid computing so in essence your quantum computer will never be by itself it always going to have a classical component to it that you need for computation so that's kind of like the very beginnings of a quantum circuit now let's talk a little bit about some of the gates you may experience this week one of them is the Hadamagate so Hadamagate is an H gate right we call it H you see up there it's a 2x2 matrix it's a 1 over square root of 2 it looks like this and what you do in this case is here you can now imagine if you have a quantum circuit so here you have your initial state now you apply a Hadamagate what is the output right output wave function so what you do this is kind of like intuitively but what you do is you apply the gate here so what we're looking for the output wave function is the Hadamagate applied to the zero state so now you have a 2x2 matrix so we're going to do this 1 over square root of 2 you have your 1 1 1 minus 1 you apply that to your zero state right you go through the matrix multiplication and what you get is 1 over sorry 1 over square root of 2 and you get 1 1 ok again remember this is your direct notation right so this is your direct notation so remember that your 0 was your 1 0 and your 1 was your 0 1 so now you can rewrite this as 1 over square root of 2 of 0 plus 1 so what this is Hadamagate do it took a qubit that was initialized up on a block sphere rotated it in a super position between your 0 and your 1 state right so the Hadamagate is the gate that puts your qubit into super position so you will see a Hadamagate like every in every circuit in quantum computing because it puts the qubit in super position and that's how you do it you can think about a rotation on the block sphere or you can think about it a bracket location matrix multiplication so there are many many many two qubit gates you will experience or see or work with when you do quantum computing I obviously don't have time to go through all of them but you know there are resources out there you can Google them you can see them we have an explanation in our ticket documentation too but pretty much these are your different rotations baoli x baoli y baoli c gates right rotation about the x axis y axis c axis s gates t gates there are different rotations you can also have gates that don't rotate at any given angle right so for example your quantum computer quantum devices can have unitary operators that rotate just a little bit or a lot so you can rotate any angle on your block sphere so you can think about your matrix rotation you can think about rotation or block sphere whatever works best for you to understand how algorithm works you develop then during the hackathon for example very important is the tensor product that you will see and you have to work with it's used to combine qubits into a joint state okay so first you have two qubits right you have two qubits here on each of the wire the wires don't talk now you have to somehow join them right so when you do that you are applying in essence a tensor product but it's more than that because when you entangle things it's getting more complicated but if you want to join the two qubits typically you use a tensor product that is up there which is very important in order to make a joint state so then you get for two qubits you get a two hold on so it's like a column vector of four entries right when you have three qubits how many entries does your column vector have eight good if you have n qubits two to the n right so again very long column vector okay then you would what you're going to also introduce in your computation is something called the c-naught gate so now the c-naught gate that is your unitary operator that for example IE c-naught gate right so this unitary operator here for a two qubit system could be a c-naught gate and again there are different types of gates there in this case if your qubit one which is your kind of like your initial qubit is in state zero then a c-naught gate acts as the identity gate on qubit two if qubit one is in state one the c-naught gate applies a not gate to qubit two so it flips it so again sometimes you can actually see controlled not that's what that means right so you have now the logical not gate we talked about right the flipping gate so this just means controlled so you have a qubit that controls the flipping or not flipping that's another qubit right so that's your not gate so again you can have many many of these gates you can have a swap gate where you swap your qubits the position of them you can have you control y applies a y gate to a second qubit if the first qubit is in the one state and such so there are many many many of these of these processes you can think of you will experience many of these gates there are also three qubit gates they're entangled three qubits with different control sequence and such so it goes on and on we have developed many of these things and the important thing I want to say here is that control not that's a typical gate operation you can do in your quantum computer that's how you entangle typically two qubits can you represent the C not gate on a block sphere no right so two qubit gates you can represent on a block sphere cannot represent on a block sphere the single qubit gates you can these are rotations but the two qubit gates you cannot so that's why the block sphere has a limited representation here regarding how algorithms work that's one thing I want to say and then I guess just as an exercise you know this is a very very common exercise you have seen but just to get us all to the start what you need to do now for example if you think about the bell state the bell state is a state there are four bell states and it's kind of like the most basic quantum state that entangles two qubits and in this case what I want to do so what I haven't told you now maybe I should go back so 0 so now you have the tensor product of 0 right that gives you now a 1 0 0 0 right or you can write this as 0 0 right so this is your tensor product so you have two qubits you put them in a combined state with a tensor product so now the question is how can you design this circuit which is the bell state using the gates we discussed you want to use a lot many gates you want to have a two qubit gate you want to use the least number of gates because in quantum computing we'll talk about it the more gates you have each of them are operations with lasers or they're operations with a filter or they are operations with a microwave and each of these operations will add noise right because your quantum computer is not perfect it's going to have tumult errors so for example one thing you want to do when you do algorithm development is you want to apply the least number of gates because each of them is going to add error so in any case if you want to think about this what you want to do here is do that's your amplitude you squared it so one half of the time you want to have both qubits in the up position one half of the time you want to have both qubits in the down position so that's what you're looking for and typically your quantum computer starts with some initial states for each of your qubits and in this case both of them are up so let's assume that you start with this you have qubit 1 qubit 0 sorry this is a little bit confusing but this is what your quantum ticket is going to do you're going to have a 0 and 1 qubit so it's going to be initialized in an up position and now we have to do a computation right so now we have to put it first into superposition so which gate do we use to put something in superposition Hadamard gate so you apply the Hadamard gate so and then what you want to do actually you want to apply the C0 gate and I think you see it differently so C0 or X0 it's a controlled expectation given your target qubit so once you see this here you can also see in terms of this the X ticket will give you an X here if you work with Qiskit it has this symbol and then in any case you are measuring out so this is then your final state so if you want to write this down you can show mathematically that I also have to make sure that I get that right because I always mess up where the I is so if you want to do it mathematically what you do is you have your zero zero state you start with then you have to do a Hadamard gate you have to bring these two qubits right into superposition and then you are applying the C0 gate in your circuit so what it does here this right so Hadamard with the identity matrix this gives you a 4x4 matrix so if you want to write this all out it looks like this so let's do it step by step for those who have seen this so zero zero is your one zero zero zero column vector then what you do is Hadamard tensor product into the identity matrix you have one over square root of two of one one one minus one you do your tensor product into the identity matrix this gives you then what should you get here because again what does a tensor product do it puts us into a combined state right so you should get a 4x4 matrix out so if you do that you get one over square root of two a one zero one zero zero one zero one zero minus one zero zero one zero minus one and then what you do is you apply your control not gate things here but now if you do your and then oh sorry this is your matrix running out of space here and then you still have to apply it to oh sorry that's right so now what you do is you apply this right to your zero zero column vector and then you apply the C not gate if you do this then you should get your final answer let's see if I have enough time I have two minutes left so if you're interested I can write this out now so if you do the the Hadamard gate tensor into your identity matrix then you apply it to your zero zero state right if you do that you're going to get one over square root of two of one zero one zero now what you do is you flip the C not gate you're applying a C not to this and that will give you one over square root of two so you're flipping it so what do you get did I maybe made a mistake here sorry the zero zero is one zero zero zero what is your one one zero zero zero one right so you're flipping this so you get one over square root of zero zero zero and then I need here a one right so now I have both of these states in here and now you know you're getting their wave function which you were looking for okay so I said that I'm not going to go through any kind of quantum computing but just take this away right so your classical bits deterministic your quantum bits deterministic you have a probability you spin left right at the same time right you don't know until you get measured measurement is collapsing on the block sphere and to the top at the bottom it's actually you can do a measurement calculation in your bracket notation with your projection operator we're not talking about that and then pretty much what a quantum algorithm is you take your input state function whatever it is it's defined by the Schrodinger equation you evolve it over time by applying gates all you do is rotations on the block sphere and then eventually it's a matrix multiplication if you think about that and then you're measuring out what you got if it's going to be up up down down or whatever and so on you have tens of products that go into there unitary matrices are very important these are your operators and they must have the properties of you you dagger giving you an identity matrix and if you keep all this in mind you will be perfectly set up to do your algorithms so next after lunch you're going to learn about Ticket how to actually program these circuits into software development kit right and then once you know the tools we then go into algorithm studies the rest of the day so enjoy your lunch and thank you for your attention


Optimization is a fancy word for finding the best way. We can see how it works if we take a look at drinking tea. There's a best temperature for tea. If your tea is too hot, it'll scald your tongue and you won't be able to taste anything for days. If it's lukewarm, it's entirely unsatisfying.  This is the ideal temperature for tea. This happy medium is what we try to find in optimization. That's what Goldilocks was looking for when she tried Papa Bear's bed and found it too hard, tried Mama Bear's bed and found it too soft, and then tried Baby Bear's bed and found it to be just right. Finding how to get things just right turns out to be a very common problem. Mathematicians and computer scientists love it because it's very specific, it's well formulated. You know when you've got it right, and you can compare your solution against others to see who got it right faster. When a computer scientist tries to find the right temperature for tea, the first thing they do is flip the problem upside down. Instead of trying to maximize tea drinking enjoyment, they try to minimize suffering while drinking tea. The results the same, and the math works out in the same way. It's not that all computer scientists are pessimists, but just that most optimization problems are naturally described in terms of costs, money, time, resources, rather than benefits. In math it's convenient to make all your problems look the same before you work out a solution, and solve it just the one time. In machine learning this is often called an error function, because error is the undesirable thing, the suffering that's being minimized. It can also be called a cost function, or a loss function, or an energy function, but they all mean pretty much the same thing. There are a handful of ways to go about finding the best temperature for serving tea. The most obvious is just to look at the curve and pick the lowest point. Unfortunately we don't actually know what the curve is when we start out. This is implicit in the optimization problem. But we can make use of our original idea and just measure the curve. We can prepare a cup of tea at a given temperature, serve it, and ask our unwitting test subject how they enjoyed it. Then we can repeat this process for every temperature across the whole range that we care about. By the time we're done with this, we do know what the whole curve looks like, and then we can just pick the temperature for which our tea drinker reported the most enjoyment, or the least suffering. This way of finding the best tea temperature is called exhaustive search. It's straightforward and effective, but it might take a while. If our time is limited, it's worth it to check out a few other methods. If you imagine that our tea suffering curve is actually a physical bowl, then we can easily find the bottom by dropping a marble in and letting it roll until it stops. This is the intuition behind gradient descent, literally going downhill. To use gradient descent, we start in an arbitrary temperature. Before beginning, we don't know anything about our curve, so we make a random guess, and we brew a cup of tea at that temperature, and see how well our tea drinker likes it. From there, the next trick is to figure out which direction is downhill and which is up. To figure this out, we choose a direction, again arbitrarily, and we choose a new temperature a very small distance away. Let's say we choose to the left, cooler temperatures. Then we brew up another cup of tea at this slightly lower temperature and see whether or not it's better than the first. We discover that it's actually inferior. Our tea drinker likes it less. Now we know that downhill is to the right, that we need to make our next cup warmer to make it better. We take a larger step in the direction of warmer tea, brew up a new cup, and start the process over again. And then we repeat this. We do it over and over until we get to the very best temperature for tea. The steeper the slope, the larger the step we can take, and we'll know that we're all done when we take a small step away and get the exact same level of enjoyment for our tea drinker. This can only happen at the bottom of the bowl where it's flat and there is no downhill. There are lots of gradient descent methods. Most of them are clever ways to measure the slope as efficiently as possible and to get to the bottom of the bowl in as few steps as possible. There are all tricks to brew as few cups of tea as we can get away with. They use different tricks to avoid completely calculating the slope or to choose a step size that is as large as can be gotten away with. But the underlying intuition is the same. One of the tricks to find the bottom of the bowl in fewer steps is to use not just the slope but also curvature when deciding how big of a step to take. As the marble starts to roll down the side of the bowl, is the slope getting steeper? If so, then the bottom is probably still far away. Take a big step. Or is the slope getting shallower and starting to bottom out? If so, the bottom is probably getting closer. Take smaller steps now. Curvature, this slope of the slope or Hessian to give it its rightful name, can be very helpful if you're trying to take as few steps as possible. However, it can also be much more expensive to compute. This is a trade-off that comes up a lot in optimization. We end up choosing between the number of steps we have to take and how hard it is to compute where the next step should be. Like a lot of math problems, the more assumptions you're able to make, the better the solution you can come up with. Unfortunately, when working with real data, a lot of those assumptions don't always apply. There are a lot of ways that this drop a marble approach can fail. If there's more than one valley for a marble to roll into, we might miss the deepest one. Each of these little bowls or valleys is called a local minimum. We're interested in finding the global minimum, the deepest of all the bowls, the lowest of all the local minimum. Imagine that we're testing our tea temperatures on a hot day. It may be that once the tea becomes cold enough, it makes a great iced tea, which is even more popular. But we could never find that out by gradient descent alone. Also, if the error function is not smooth, there are lots of places a marble could get stuck. This could happen if our tea drinker's enjoyment was heavily impacted by passing trains, for instance. The periodic occurrence of trains could introduce a wiggle into our data. If the error function you're trying to optimize makes discrete jumps, that presents a challenge too. Marbles don't roll downstairs well. This could happen, for example, if our tea drinkers have to rate their enjoyment on a 10-point scale. If the error function is mostly a plateau but has a bottom that's narrow and deep, then the marble is unlikely to find it. Perhaps our tea drinkers are very finicky and absolutely despise all tea that is anything but perfect. All of these occur in real machine learning optimization problems. If we suspect that our tea satisfaction curve has any of these tricky characteristics, we can always fall back to exhaustive search. Unfortunately, exhaustive search takes an extremely long time for a lot of problems. But luckily for us, there's a middle ground. There's a set of methods that's tougher than gradient descent. They go by names like genetic algorithms, evolutionary algorithms, and simulated annealing. They take longer to compute, and they take more steps, but they don't break nearly so easily. Each has its own quirks, but one characteristic that most of them share is a randomness to their steps and jumps. This helps them discover the deepest valleys of the error function, even when they are harder to find. Optimization algorithms that rely on gradient descent are kind of like Formula 1 race cars. They are extremely fast and efficient, but they require a very well-behaved track to work well, or error function to work well. A poorly placed speed bump can wreck it. The more robust methods are like four-wheel drive think-up trucks. They don't go nearly as fast, but they can handle a lot more variability in the terrain. And exhaustive search is like traveling on foot. You can get absolutely anywhere, but it may take you a really long time. They're each invaluable in different situations. Now that we've talked about how optimization works, click the link below to join me for part 2 of this series, where we step through an example of optimization in a machine learning model.


All right, welcome everybody. So this is a talk on open-source science and OSPAC collaboration with OSPACON. My name is Lexi Krabrov. I'm open-source science director at IBM Research and Tim is my colleague. Yes, my name is Tim Bonaman. I'm the community lead for open-source science. So and welcome everybody online. So what is open-source science? Open-source science is a new initiative that we started at IBM Research last year. The initiative itself is at NumFocus. NumFocus is a non-profit home of Jupiter, Pandas, NumPy, SciPy, Scikit-learn and several dozen projects mostly doing data science and a lot of them are originating in science and serve science. So that seems a very good relationship for us at IBM Research to start this initiative fully in community space, right? So it's a volunteer initiative as IBM. We support it. We run it at IBM. We work on it. We help NumFocus scale it, but it fully belongs to the community. So what are the three pillars of this? The main idea is that we bring together open-source developers and scientists and we want to accelerate science. We want to help scientists do better with open source, right? So this is actually a big difference from a lot of software engineering projects where one kind of software wants to, you know, work with other kinds of software, right? So typically have two kinds of software, then inevitably there will be third project which will connect these two. And this is very important that we actually consider scientists our customers and to them very often improving software is not their goal. It's not what they do best, right? They're focused on end goal of science discoveries and scientific collaborations, new materials, new molecules, new drugs, new knowledge, right? So it's not easy for software engineers, you know, developers at heart to actually work with scientists to help them achieve this. So how we approach this? Three things. So first of all, we stand up the open-source science as a kind of thin organization, right? We need to have a structure where we convene communities of discovery, scientists and open-source developers who want to help them. And so this is, I think, very fundamental. If you look how great open-source software spreads, usually there are developer champions, right? Like if you've seen the rise of Spark, you found that people who picked up Spark, they were really enthusiastic about having big data to fingertips, being able to have kind of a terminal connected to a giant cluster and do interactive computing. So I think there is this kind of initial impulse where developers get excited about something which is at the root of open-source. And people who do scientific open-source usually are scientists, right? For instance, in brain imaging, in astronomy. If you look at some of the biggest projects in non-focus, astronomy takes half of this.  You think half of them are doing astronomy.  And a very small fraction is doing healthcare and biology, right? So the kind of the natural areas where open-source start in science was started by scientific enthusiasts. And I think it was organically driven by the fact that, for instance, astronomy, the data is plentiful. Commercial use of this data is non-existent. You cannot sell galaxy data for money. So this area is actually ahead. And so if you look at them as examples, you need, you know, what we call developer champions for Spark or Kafka and so forth. We need the same people from scientific verticals. We need biologists who found that model and drugs with open-source tools, let them achieve their scientific goals, right? Or chemists who find new materials or, you know, climate change, scientists who look at space images. So you need to find kind of allies. You need to find the scientists who understand open-source. And likewise, there is a lot of software engineers who basically like science, right? They may be doing science now or not. Some of them are kind of stuck in jobs supporting ad stack and selling ads. But, you know, as David Patterson at Berkeley famous and said, you know, you know, instead of selling ads, why wouldn't you help us solve cancer? There is this aspiration which is driving a lot of people to do science. And there is a big overlap of these people with open source enthusiasts. There is a lot of synergy. So the first pillar, we need to find these people and put them together, right? And as I said, the kind of scientists see their goal different. So there is a huge language translation. If you want to work with chemists, it's not like reading a readme.txt. There is no readme.txt for chemistry. You can't just clone chemistry, read the file and start doing it. Same with biology. You need to read an enormously heavy book which you cannot even care in a backpack if you want to understand, you know, cell biology. And so the way these people share knowledge is actually very tricky. So we did a study at Almaden, human computer interaction, where you look at boundary objects as kind of machine learning, boundary objects as models, which share knowledge between these groups of people. So even the way the knowledge is spread needs to be treated properly. Now the second pillar, so once we have the communities, we can systematically identify the needs and gaps, right? So usually they are not aware of a lot of open source projects. Scientists do not share this information for some reason as computer scientists do. So the communication channels in science are different, in sense, are different. And what often happens, scientists just go and start hacking, right? And they do not try to eliminate kind of, they don't follow the dry principle. They don't try to reuse existing projects. So it's very important that we enumerate what is there, make people aware of everything, and then we prioritize work which is needed so we can understand, do they need a new project? Do they need features in an existing project? And very often they're not able to articulate what they need. They know they want to use AI, right? They're skeptical of it at the same time because their knowledge is very specific. So computer scientists need to actually work with scientists to share what is available and together they can actually identify some of these needs. So the needs and gaps themselves are not a given. It's something which is collaboratively defined, option space. And finally, once we know where the effort needs to go, we can resource this and currently in open source space there is, I think, a very mature ways to find funding. There is NSF funding, NIH funding, a specific open source funding from NSF. There is going to grow an understanding that you need to enable science with open source and the founders are thinking how to do this, right? So you can actually connect resources to this work. So that's kind of the three pillars. We launched at SciPy in Austin with non-focus and we had basically several organizations which support us and share the same goals so we can launch partners. It's not a formal structure. We don't have membership fees or anything like this, right? So we currently run as a purely volunteer organization. So this is the very close community scientific python. It's one of the communities at non-focus and it operates as a separate project of non-focus. And so basically all of these folks develop Python for science in overlap with goals of open source science. So another kind of finding is that there is a lot of organizations, right, who want to advance science through open source in different ways. So we want to be a glue, we want to be kind of the place where all of these forces can join. And I think being at non-focus gives us a very good vantage point. So Panjio is another example and now I have to team to talk about the interest groups. All right. So we started, this was launched in July of last year at SciPy and we launched the first couple of interest groups in November of last year. We have three verticals, chemistry materials, life sciences, healthcare and climate and sustainability. And we also have a couple of horizontals. One is launching in June on reproducibility and the other is about an idea of creating a map of science, an interface that will allow you to, you know, in your area of scientific area of interest to find the open source tools that are being used and also the research that has made use of those tools and the people behind both. And so like having an instant starting off point to connect with the ecosystem. Yeah, we, people have been gathering, getting to know each other, a big part of what we do is a build community, providing a space for people to exchange experiences and identify pain points and we're hoping to move to a kind of an actionable agenda, an action plan over the summer with these early groups and then yeah, life sciences and reproducibility are launching within the next few weeks. We have done the basic setup. There's a slack for the first four dozen collaborators. We're launching a newsletter this month. There might be some kind of forum or discord coming for the wider community of people that are interested in this initiative. Structure wise, there is a steering committee that's forming with some luminaries in that group that's going to provide guidance and it is set up to also support in the future additional verticals and additional horizontals. We have about 40 people signed up that want to either start or join an interest group and there's some very interesting potential topics that are bubbling up where people want to get engaged and so we're starting to vet that list and you know, find opportunities for people to plug in. In principle, it's supposed to be once we're a little bit more organized, very open, right? So anyone can attend the call, maybe join a group to collaborate. We want to share everything publicly, like work in the open, so that's the approach. So partnerships, so basically this is bottom up. Bottom up, we stand interest groups in verticals by science and horizontals by concern like reproducibility, which everybody cares about, right? You have two sciences, you have five ideas of reproducibility and as computer scientists we know how to solve it but it's a social technical problem. You have to convince scientists, you have to find what works for them. It's not just, you know, having a mutable infrastructure. This is not what they like to use. Now, kind of top down, we want to do partnerships with as many allies as possible, right? So some specific things. We're at non-focus. Non-focus itself has, you know, a 10-year-old established no-profit at this space. So everybody knows its tools, not everybody knows non-focus. So some of the chemical scientific python, all right, which is really deep roots, kind of, Jupiter comes from this. CZI is actually very active, Chandler-Grabbeck initiative. So again, like this is something you see once you start working in the space. The mandate is generally to fund healthcare, you know, software open source for healthcare but because OSS for healthcare sits on top of the whole data stack, they effectively support the whole data science stack. And so they give specific open source grants, right? Anybody can apply for a grant to do basic work at NumPy and some other, like, image viewers and so forth. And they also do a lot of interesting work where they look at citations and open source tools used for papers and we'll talk about it later. We also collaborate with OSPAS. So open source program offices, specifically Sloan Foundation funded six academic OSPAS. One of them is the University of California is on the cruise and it happened to be nearby us. And they're actually one of the leading OSPAS because they stand on top of CROSS. So Emil Lovall gave a talk, Center for International Resource Software. It itself was funded because CEPH started at UCSC, right? And they donated to UCSC and established CROSS. It's a 10-year-old center. And so they actually have a very effective program where they show how open source in academia brings money to the university, right? If you look at technology transfer, they demonstrate that the IP developed for technology transfer with open source actually brings money to the university. And so they're very systematically prove viability and importance of open source in academia. So I think it's a very good example how an open source center at the university can coexist with all the university bureaucracies and succeed and thrive by being very focused on what it does and showing the impact of open source. So we want to partner with OSPAS there to look at how does open source science work at the small. If you look at the university, the university is a kind of a time machine. What has happened at the university today will be happening in reality in 10 years, right? So it's a lab. The research being incubated and spread will be commercialized later. And it's important to also understand how different sciences interact. And the university itself is very silent. So a very interesting finding is that when they place an OSPA in a university, they don't even know where to put it, right? Like, where do you put it? Each department has its own thing. You cannot put an OSPA in a department. So yes, where do they put an OSPA in a university? Any guesses? Yeah. Perfect. You got it. Library, right? Like, what else? Who else is serving the university, a library? So like, in some universities, they put it in a library in Carnegie Mellon, Johns Hopkins. And so that's just an example of how hard it is to organize a place like a university. And that's an example of what happens in science, right? And I think open source is actually breaking all these barriers. A lot of these are communication barriers. And obviously, you need to do a lot of field work. You need to engage people and to talk to them. So like literally want to go door to door and knock on the doors. But let's say you want to even study where do they use open source? You want to go to GitHub and find all the repos associated with the university. It's actually not easy. It's a research project in itself because people committed their own Gmail addresses. You cannot use the API to query by email if you can. You will not find by domain because people use their own emails. Right? So even in such a simple ask, like, give me open source for the university is not easy to do bottom up. And basically, we find a lot of this stuff is not a data mining question. It's really can slow up the whole GitHub, put it in source graph or something like this. You will find 100,000 abandoned projects and you will not know what to do with them. Like the real question is who is using actively open source for some current science and you need to do it by sitting at the top projects and you need to talk to people to understand what the top projects are. So, and we have a bunch of other partnership. One of the other things I want to mention is the Amsterdam Declaration on Sustainable Research Software. So it's actually a very interesting policy meeting. We learned about it through CZI and NASA folks going there. And at first I thought this is going to be like some kind of policy meeting, but it's actually extremely useful. So it was several dozen organizations who give money to open source, including essentially ministries of innovation of different countries, you know, Japan, all your countries, Brazil, Indonesia, cross EU consortia, which gives money to innovation. And so what is happening, these people want to foster open source based innovation, but they don't know how to do it. So this group of folks, it was a Netherlands Science Center and Research Software Alliance. They essentially said, okay, let's basically put a set of principles down to educate the funders. And one of the things we got in there is that if you want to have sustainable research software, you need to ensure it has a viable and thriving community around it. So to a lot of funders, it's news, right? So we want it codified in basically this declaration, then the declaration uses a set of recommendations. What do you recommend to fund? So now you should be able to ask for a community manager in your grant application, and it should not be looked down upon. It should actually be encouraged by the funders themselves, right? They should encourage applicants to include things like community managers. So we hope that once this thing is adopted and signed by Dario at IBM and other top folks, hopefully ministers of innovation in different countries, it will become a established best practice. And you will not have to fight for these things, right? You will be able to point at it. Also, it will be very easy to explain what we're doing by pointing at Amsterdam Declaration. So this is actually a very useful tool. We want to basically, so we're at the table drafting it, and we're going to basically use it very actively. I think it will help us explain what OSPAS do, what open source organizations do. And the funders should be encouraged to actually use it to give money to people in our community to do their work. So and Tim will talk about our meetups. Yeah, just really quick. We're starting to, we had a first meetup at the University of Santa Cruz in February, and we're starting monthly meetups this summer, either probably next month, to give people a chance to learn about open source signs, to learn about what people are interested in, to learn about what people are already doing or working on, and get them involved in this initiative. And those will be hybrid if we are traveling, and they will be virtual if we're not traveling, so that people can tune in from wherever they want. Yeah, and the final project I want to mention is Map of Science. So this is something we should want to build, right? So currently, if you ask a question, so we want to go to the world where scientists use open source, right? To solve hard problems facing humanity. You cannot go somewhere unless you know where you are. So if the question is where are we with open source in science, we cannot answer this. There is no easy way to say these areas have a lot of open source and are thriving. These areas are not. We have anecdotal evidence like astronomy and biology, but we cannot quantify it. So what we'd like to do, we want to build a map of science, which actually will have essentially an ontology of all of science, all of open source ever in existence on GitHub, GitLab, PyPy, anywhere. And we want to basically be able to click on an area of science like lung cancer and find all the open source used in this space, all the papers, you know, from the science side, citing this open source, data sets, machine learning models, and groups of people, right? So like, if you're a scientist, you want to ask basic questions, you know, which open source is my group using in the university? My colleagues are using it in another university. What open source are they using, which I'm not yet using, right? And let's look at scientific papers. Give me all the OSS used by these people.  I can ask about open source using this paper, right? I want to install it. I want to ask some questions. So this is very hard. You cannot do this right now at any scale. And I think the reason that it does not exist is again, there is no social network of scientists like these Twitter and LinkedIn. So again, it's very fragmented. So we'd like to build this. So CZI is going to fund the first workshop for this in October during the Linux member meeting in Monterrey. So we hope to find some people who, and so it will be like top folks in bibliography, meta research, and graph mining and so forth. So we're actually looking for people who can contribute knowledge, also infrastructure resources, right? Like folks like source graph, folks actually doing supply chain management. They have a lot of tools for this, right? Follow independency graphs of software. So we are actively looking for folks who can contribute to this idea. So if you know anybody, right, if you have ideas, share it with us. It's something we want to build and have as a tool at non-focus, right? So everybody should be able to go there and find where they are in science, open source, find other people working on this as questions, add their own projects to that. Cool. Yeah, we have a growing list of people that are coming into our network, either as collaborators or as people that have expressed support for the mission. So it's just an excerpt of some of the organizations that are popping up on our radar. And we're very eager to connect with existing people, organizations, communities that work on related efforts. So again, if you have leads that what might be, who this might resonate with, please point them away or make an introduction. Yeah, and how you can stay involved, maybe last but not least. At least follow us. We are medium. There's a newsletter that's launching this month. And if you want to get involved, talk to us. The interest groups are generally open. We're still setting up a little bit and need to get a little bit more organized, but in principle, they're open. And you can also start by looking at if you're a scientist or you have scientist friends, they can start by looking at what open source is being used in their space and how that might be improved going forward. Yeah, we're at this point just growing on network. So we're really, this was very helpful to come here to Vancouver, meet a lot of people that are very well networked and hopefully will give us some good introductions to some very cool neighboring networks. So and we're at open source.science, Alexi and Tim email us, contact us and now we're going to open it up to questions feedback. Okay, talk to me how you're working with LF in spaces like LF energy. They're doing a lot of work there on some basic science about energy transmission distribution generation. I was in a presentation yesterday about Sandia labs, lithium ion batteries. They have a huge data set. It's the biggest data set describes battery degradation across different battery types and they help us. So are you connecting? Yes. So we're starting. So I met a few people from the Linux Foundation research team. I'm hoping to still meet someone from OS climate. If not, then we're going to follow up. We connected before on LinkedIn. And good for you. And specifically for Sandia, I can add specifically say, yeah, I met in our focus on Sandia. Again, this is the reason we come here. Like we're just starting out. We do not have a formal kind of collaboration. So basically, what I'd like to figure out, right, how non focus and Linux Foundation work together, we want to be the glue between LF and non focus in the specific area. Right. There is no reason for artificial fragmentation. Most of Python data stack is a non focus by torch foundation is at LF. There is no reason for us not to treat it as a whole thing. Right. And scientists do not care where each project is home. So specifically like for the data sets again, like it's, it's, we need to talk more and to establish where things are. Once I learned about the battery data set at IBM research, there are folks who do exactly this and they want to run hackathons and cleaning up people data sets. And like, send it has tools to do it. So I think this is a perfect match. So I'm just going to like take it back to Zurich and tell people, right. So, so this is an example. But I think what, what should happen organically, once we have an interest group in open source science, we should set an interest group. Right. Like, if you know, basically, folks who can lead it and again, like the group does not have to kind of belong to one or the other, right. I'd like open source to be science to be a glue. And once people know that there is a monthly call of this group, this is where you learn about data sets. This is where you learn about open source. Hope that will become a discover mechanism. And once we have this map of science, you can put it in there. Right. So hopefully we'll increase the discoverability of this stuff. So there's a few other projects that, that aim to make an ontology or a map of science that I've seen. It doesn't, I don't think that any of them have that bi-directional integration with the open source aspect of the science that exists. Do you plan to reference or collaborate with any of those projects out there? I could try to name some if, unless you, you have. Absolutely. Yes. I mean, we definitely want to do that. Right. So I think the, having the specific goal of finding open source tools, data sets, communities, it's a very good, you know, focusing function for us. Right. Because again, you have three ontologists. You have 10 ontologists. Like you can argue forever. Do you need an ontologist? Some people say we don't need an ontologist at all because Yahoo lost to Google. You have a search box. If you know what to look for, you can search for it. So some people question whether they need an ontology. I think we do need an ontology because, or you need some representation because if you're an administrator at university or you, if you're an executive links foundation, you want to know what's going on the whole thing. Right. You need the bird's eye view. You need to see which sector is growing in the heat map. So you do need some visual organization of the whole thing you can drill down on. But how it is done is done functionally. Right. So, so, but it's very important that it's done correctly. Because for instance, I learned that, you know, in chemistry, there is material science. You would think everything is a material, right? Like material science probably includes drugs. No, if you think that material science includes pharma, you're wrong. And if you misname it, you will not, you will lose the trust of people in each, in each of this fields. So the ontology should be correct. People, scientists should find themselves in the ontology by the names they, you know, accept. So, so it's very important ontology is something coming from the scientific worlds. That's why we need the interest groups and verticals so they can name the things properly. Right. But once they name their things, we can go and find all the open source and their things. So, so it has to go hand in hand. But I'd like to know all of this projects. So here at the Linux Foundation, we are building an infrastructure to look through all of open source and be able to go and understand where our collaborators are and all of the different things that you've described as what you need to go and find. What we don't have is that overlay of science on top of that. So at some point, the collaboration between us should probably happen just to figure out how to overlay that. Because we will have all the data pulled together and be able to make use of it. So I think it's October, November, come see me. Okay, sounds awesome. I mean, we saw LFII landscape, right, like in the Linux Foundation. So we definitely want to basically overlay with this. I think. Yeah, I'm talking about down at the developer level across all the open source projects. So understanding completely what's happening out there and being able to tie that back through everything is what we're building in behind. Because that kind of telemetry is what all of our community members are looking for in regard to their projects to help them guide them. Sounds great. I mean, science can be one use of it and people can ask different questions, right? So yeah, I would like to be one of the layers of all that. All right, come talk to us. Sounds good. First off, I think this is such a cool project. And I know our office is really excited that UC Santa Cruz Ospo to be working with you guys. And so thank you for the kind shout out as well. My question is I'm so curious about like the people aspect of everything. And I know you've been talking to lots of different scientists already. And I'm just curious, like very anecdotally kind of by discipline, like who's really excited about this, like who sees obstacles in their discipline to this, you know, I think that different my experience and research is that there's some fields where like open source is already the norm and other fields that are like, oh, that's something to aspire to, but we have no idea how to get there. So yeah, just curious your experience with that so far. Jim, do you want to ask questions? Yeah, I can start. I think so we have the climate and sustainability and chemistry materials going. I wouldn't quite say up and running, but they're like they've met a few times. I think we're still figuring out where we're going to tackle first. Generally, the energy is very good, like people are coming to this with lots of they have lots of ideas for where things could be improved. They're like they're it's like they're scratching their own itch. It's like you don't have to push. It's more like channeling it now and coming to like a concrete, you know, actionable agenda. Now, life sciences we don't know yet because that's about to launch. That might be we'll see how that works out. I think in principle, again, people are interested, but they might have other restrictions in terms of what can be shared and what is proprietary. So we'll figure that out, but Alex, yeah, I cannot a few, you know, it's very interesting, right? Because if you look at every individual scientist in general, while generalizing, they're like super smart and maybe like smarter than individual developer, but collectively they're behind, right? Again, like, you know, part of my is duration, but why is that? It's a baffling question. Sciences are very smart. Why are they behind in open source? The reason is, kind of in the macro level, that science is a church. Science is a trust network where trust is bestowed by people to other people. Open source is a meritocracy. I don't care if you're penguin and Antarctic, if you're committing good code, if everybody's liking it, right, you're good, you're accepted. So a lot of this is actually in communication. So if you look at who are the people successful in introducing open source to science, we want to find them. You are an example of this, right? Like you guys are in the lead. So usually you find that these are people who are like, it's very interesting group of people. They're kind of, they're able to navigate the bureaucracy of a university, which is like a normal mind field, and they're able to bring an open source there, right? And so basically you need to learn from them. An example, chemistry. Chemistry is extremely fragmented. I'm spent like a whole year looking at it, and I still know where I'm behind where I started, probably, right? And it's, you know, they have a lot of machines. They're very focused. This is a very typical example. They're very narrow focused on finding new materials, new drugs. They don't care about software. They don't care about big data, anything. Like they want to find the material. Everything is a means to an end. Also, they're very niche. The colleagues in chemistry may provide data to them and they feed data to others, but they're not like, they don't want to build data pipelines. So people who are actually successful in this, they talk, so the way communication works, they pose a problem as a computer science problem to their friends who are professors in computer science. And those people popularize it among computer science students. So there is an affinity, right, then, and then because they reinvent the wheel in chemistry, they don't know what to do. So in the departments where it works, there are these lateral connections and there are usually very active young faculty who actually overcame a bunch of adversity and know how to fight this. So I think our goal as this initiative is actually to find these people and elevate them, invite them to speak and be examples in their field. Also through this interest group, kind of assemble them together and create a network effect. And I think there is no other way but to painstakingly find them, discipline by discipline. So it's a field work. It's a people initiative. There is no other way but to do that. You can just write block posts, write and hope they will be accepted. And then once you find these people, like we just connected with one of the folks leading the lab at UBC this morning, super inspiring, like lots of learning. So that's what we should be doing. Hi, it's so nice to see you here. So this sounds really cool. I have designed and facilitated interactive events for professional, technical, and scientific communities. And I am hoping that you will, as you start convening and building a new thing, avoid one to many talking heads as your predominant event format and that you explore using open space technology as your format for when you gather. Because I've spent 18 years helping the digital identity space come together. And the reason we've succeeded is because nobody sets the agenda at the event, except the people who show up that day. So it's just a friendly suggestion, offer, slash, encouragement. Yeah, I mean, we're not doing those kinds of events yet, but we will. I mean, we will have larger gatherings and probably work meetings and stuff like that, right? Absolutely agree. And I mean, like one thing we want to promote is that we want, you know, scientists to show us a Jupyter notebook and see how the science is working and show us a robot. So we've seen today a robot controlled by software. Like we want to see stuff, right? We want to see science done with open source, not talked about only. And like that will be the best example if you can show stuff which is working, right? And like if we can structure these meetings so we can demonstrate things and learn from each other, that will be the best way to do it. And definitely like we're fans of on conference format, where people show up and do stuff, right? Like which is interesting to them. Absolutely. You're welcome to help us facilitate it. Any other questions? Thank you so much. Please connect to us and we hope to see you at all like our open source events.