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.