Alright, so I'd like to first off thank you guys for having me here. This is an
amazing conference. So far, during lunch, someone gave me multiple high-fives in a
conversation about hypervisors, so I feel like I'm in a room of kindred spirits.
Just to test that out, who wants to hear about math? (room cheers)
That would only work here. I'll tell you a bit about myself, and then a bit about the
talk, and then I'll give you the talk. I'm a security researcher first, but also
I'm a PhD candidate in mathematics at the University of Waterloo; if you haven't
heard of it, it's in Canada. I work on quantum algorithms for cryptanalysis,
so what this means is we look at the difficulty of computational problems on
which cryptography is built, and we find sometimes that the problems that we thought
were very hard on a classical computer are in fact very easy on our proposed quantum
systems. What I'm going to talk to you about today is a bit related to that, but I'd
like to ground it in programming and thinking about programming languages and
systems that we can actually construct. What I hope you can take away from the talk
I'm about to give is an understanding of what -- It's not quite the network stack,
but what the various levels of abstraction are in quantum computing and how a room
full of people inclined toward the use of classical conventional computing could make
use of quantum resources for speedups in their algorithms.
Whenever I'm getting a big head about how I feel about my research, I have to remind
myself that I spend all day thinking about imaginary computers, and that brings me
right back down. Quantum computing, a very simple definition is using quantum mechanical
phenomena like entanglement or superposition to perform computational tasks. Why do we
do this? It wouldn't make a lot of sense if it were just as good as the computers we
have, because quantum computers are very, very expensive, and so far we have 15 or so
qubits, and maybe that's not as useful as what we're looking for, so why do we have
these very expensive computers? Because we think that we can have some tradeoff and
have less computationally expensive algorithms. This is only true if we can scale it up.
To be useful, a quantum computer needs to scale, but this is very challenging, because
the things that make a quantum computer useful are the exact things that are getting
in its way. Quantum computers are very sensitive to environmental noise. If we
have a qubit in a room, and someone walks down a hall in a non-specialized building
many floors away, it will disturb our qubit and it will collapse, and maybe we're not
doing our computation. So we have to have very specialized buildings. Another thing
is we have a challenge with measurement in quantum systems. When we measure a quantum
state, we destroy a superposition, which is something I'll explain, and it's really
hard to create memory. Beyond this, there are other things, but I don't want to use
too much time. I stole this from Scott Aaronson, who is a
phenomenal phsysicist. Quantum mechanics in one slide:
You can think of quantum mechanics as probability theory, but you're doing it over
the complex numbers, and this allows us to compute things in a really interesting way.
The basic unit for a quantum computer is a qubit. We have regular bits, 1s and 0s, and
a quantum bit is a superposition, which is kind of when we put them all together, of
values 0 and 1. We're creating some linear combination of things, and that's when
something is both values at the same time. With measurement or noise, we can collapse
this superposition, and what's interesting about it is sometimes we'll get a 0 out
and sometimes we'll get a 1 out, but we can set the same superposition up over and
over again, and sometimes get a 1 and some times get a 0 and not really know what's
going to happen.