The post Best Quantum Computing Courses Online appeared first on Anastasia Marchenkova.

]]>Here’s the list, and I’ll talk about all of them below.

- UC Berkeley’s Quantum Mechanics and Quantum Computation on EdX
- Delft’s The Quantum Internet and Quantum Computers: How Will They Change the World?
- Delftx Professional Certificate Quantum Computing and Quantum Internet
- MITxPro Professional Certificate in Quantum Computing
- MIT Quantum Information Science I from EdX
- Purdue Micromasters Introduction to Quantum Technology from EdX
- Introduction to Quantum Computing from Keio University on FutureLearn
- Квантовые вычисления Russian language Quantum Computing Course from Coursera

Quantum Mechanics Courses

- Stanford Quantum Mechanics for Scientists and Engineers Part 1
- Exploring Quantum Physics from the University of Maryland on Coursera
- Quantum Mechanics: A First Course from MIT on EdX

Quantum Machine Learning Course

I’m going to cover some of the top rated quantum computing courses from EdX, Coursera, FutureLearn, and the MITx Pro professional certificate, both short courses and courses that can get you actual credit hours towards a masters degree.

One of the best short courses out there on introduction to quantum computing for everyone is called “The Quantum Internet and Quantum Computers: How Will They Change the World?” from Delft.

It’s 6 weeks long and will take you about 2-3 hours per week. What I really like about this course is that it’s accessible to anyone, with no technical background necessary. It mostly covers the impact of quantum computing and quantum telecommunication, and talks about the applications of the field, such as chemistry, machine learning, and security where quantum computing could play a big role.

The course is free to see the content, and a verified certificate is 50$. By the way, the big difference between the free and paid tracks is access to the graded assignments and you will not earn a certificate at the end of the course if you’re on the free track. Now you can always try the course before you pay, start with the free content, and then add the verified certificate later, and this is true for almost all the courses on the edX platform.

There’s another introductory course in quantum computing from Berkeley on EdX. It’s 10 weeks long and will take you 5-12 hours per week. This course really focuses on quantum gates, circuits, and implementing quantum algorithms.

The professor also holds office hours when there are running sessions over zoom, so you can get help from the instructors themselves!

If you want to go deeper, you can check out the Professional Certificate on EdX from Delft and QuTech. QuTech is a quantum computing research centre with a lot of amazing professors and researchers dedicated to studying and teaching quantum phenomena.

There are two courses in this certificate, one is The Hardware of a Quantum Computer, and the Second is Architecture, Algorithms, and Protocols of a Quantum Computer and Quantum Internet. Both courses ask you to commit about 6-8 hours a week for 6 weeks, so a total of about 3 months to finish the professional certificate.

The cool thing about the edX courses is that you can do the courses separately and then stack them together. So if you’re not sure you want to commit to a whole certificate now, you can take one course, take a break, and finish the other one later. And, they are self-paced, so you can take as long as you need to finish them.

What stands out to me about this certificate is the focus on hardware. Many textbooks in quantum computing cover the hardware only lightly. This first course dives into the implementations of four different types of qubits: Silicon spin qubits, diamond NV center qubits, superconducting qubits, and topological qubits.

Now, MIT has released their own professional Certificate program in Quantum Computing. This is the pricier of all the programs on this list.

The first certificate is Quantum Computing Fundamentals. There are two courses, with 4 weeks per course, with about 4-6 hours a week of work. There’s also a Quantum Computing Realities program, with two additional courses, 4 weeks per course, and 3-5 hours per week of work. The courses include:

- Introduction to Quantum Computing
- Quantum Computing Algorithms for Cybersecurity, Chemistry, and Optimization
- Practical Realities of Quantum Computation and Quantum Communication
- Requirements for Large-Scale Universal Quantum Computation

The price for each of these programs is $2,149, which means almost $4300 for both programs.

I actually have completed both of these programs, but the disclaimer here is I did NOT pay for these courses myself. I already am in the quantum field, so I don’t know if this program can help you find a job. I think one of the most important part is for you to evaluate whether it’s worth you spending this money, or if there are scholarships or your work can sponsor you to take it. If your goal is to get a job in the quantum field, chat with people who have taken this certificate and see what their experience was like job hunting and see if this professional certificate helped them get a job in the field.

What I did find different were the assignments. There are coding exercises, using the IBM Quantum Experience, and quizzes and problem sets, of course, but also essays to truly understand the state of commercial quantum computing and be able to articulate the value.

For example, one assignment asks you to write an essay comparing different types of qubit modalities and talk about which you think will be the first to support a functional quantum computer. Another essay asks you to write about different country’s strategies and reasons for building quantum networks. This is something I haven’t really seen in any other course.

Because this program is pricey, unfortunately there is no auditing of these courses for free.

There’s a mix of videos – some short videos that are produced specifically for this course, other videos, like Peter Shor’s lectures, are a video set up in the classroom at MIT, so the production value really varies between videos. Of course, these courses are taught by some of the top quantum computing professors in the world – Isaac Chuang, William Oliver, and Peter Shor himself. There’s no professor interaction with this course, but it’s not self-paced, so if you take this, make sure you can commit to the schedule. I had to do these courses while I was traveling and at conferences, but I planned for that beforehand to make sure I got all my assignments in on time.

To me, this program felt best for highly technical strategic management, someone who is a technical leader and needs an understanding of the business and but also the deeper technical implications of quantum computing.

This is an MIT edX course by some of the same instructors who teach the Professional Certificate program.

Purdue has also released a Micromasters program on EdX. I have not taken this myself, but I thought I’d let you know about it as well and link it in case you wanted to explore it.

It’s also a bit expensive, with the program costing $4725, however, the micromasters program actually gives you credit towards a Masters Degree. For someone who is considering going back to school and maybe get a degree, this MicroMasters lets you get some credits in before committing to a full masters program.

It’s a fairly deep program – it has 5 total courses, that takes a total of about 9 months to complete, so about the amount of time you’d spend taking 2 semester long courses at University.

In general, this program felt to me best for someone who already has a bit of background in quantum mechanics and linear algebra. And remember, you can always audit the courses for free to understand more about the content before you commit to paying for a verified certificate.

There’s a fantastic short course from Rod Van Meter from Keio University on FutureLearn, called “Understanding Quantum Computers”. The course is free, 4 weeks long, but $69 if you want a verified Certificate. While the course is taught in English, there are also subtitles for the videos, in Japanese and Thai, and the articles and text have downloads and translations in Thai and Japanese as well!

For Russian learners, there’s amazing highly rated Quantum Computing course Квантовые вычисления on Coursera. It’s also about 4 weeks long, and takes about 14 hours to complete. Remember, for all the Coursera courses, if you can’t afford the certificate, you can audit the course, or apply for financial aid from Coursera. Don’t let that stop you from learning!

Now if you don’t feel ready to take a quantum computing course and need a little extra background knowledge, you should take a quantum mechanics course for background.

One of my top recommendations is the Quantum Mechanics for Scientists and Engineers from Stanford. It’s a 9 week course. It covers the basics of quantum mechanics, Schrodinger’s equation, operators, the hydrogen atom, eigenvalues and eigenfunctions.

It also has an introductory section on the math background you need to know to be successful in quantum mechanics. It’s optional, so if you have that math background, you can skip it, but if not this course is very self contained for newcomers to quantum mechanics!

The syllabus closely follows the book by the same name, so if you want to get the companion textbook, you can find the link below. It’s not required, but it has more practice problems and covers more fundamentals of quantum mechanics if you want to go more in depth.

Companion Textbook to Quantum Mechanics for Scientists and Engineers

There is also a part 2 to the course!

Between these two courses, that contains a semester long course in quantum mechanics to prep you for quantum computing courses.

If you want another option, there is a Coursera Course called “Exploring Quantum Physics” from the University of Maryland. While it’s only a 4 week course, it’s a lot of content. It’s not for complete beginners, but if you took the previous course already or have a strong math background or maybe have taken quantum mechanics a long time ago, this can get you back up to speed quickly.

Another option for a more advanced course is MIT’s “Quantum Mechanics: A First Course” on EdX.

There is a fantastic “Quantum Machine Learning” course from Peter Wittek at University of Toronto on edX. Unfortunately, Peter Wittek disappeared in September 2019 when an avalanche hit their camp during an expedition on Mount Trishul. He has positively impacted so many people, was always optimistic about the future of the field, and will be really missed by everyone in the quantum computing community. His course still is available on the edX platform.

The post Best Quantum Computing Courses Online appeared first on Anastasia Marchenkova.

]]>The post Quantum Cryptography vs Post-Quantum Cryptography appeared first on Anastasia Marchenkova.

]]>Shor’s algorithm is the killer algorithm for cryptography. But having a quantum computer large enough to run this algorithm is still many years away. While some scientists argue that a quantum computer that can run Shor’s algorithm will never be possible to build, since it requires millions of qubits, others believe it’s inevitable and that we need to start preparing for this future.

There are two approaches. One is post-quantum cryptography, which is a new set of standard of classical cryptographic algorithms, and the other is quantum cryptography, which uses the properties of quantum mechanics to secure data. Both may have a place in the future of secure communication, but they work fundamentally differently.

Post-quantum cryptography is classical cryptography that stands up to the attacks of a large quantum computer. It does not use any quantum properties. It doesn’t need any specialized hardware. It’s based on hard mathematical problems, just like the cryptography we have today. However, post-quantum cryptography avoids using integer factorization and discrete log problems to encrypt data. We already know that these problems are vulnerable to algorithms run on a quantum computer.

All of these post-quantum cryptography algorithms would not need any quantum hardware to encrypt data. They base the encryption on new mathematical problems that are not vulnerable to known quantum computing attacks. And of course, we have to make sure that while it stands up to (known) quantum computing attacks, it also holds against supercomputers.

The government and NIST has been worried about this possibility for a while. Even as early as 2013 there have been talks about moving away from the Suite B cryptography ciphers to something that can be quantum secure. In late 2016, NIST ran a competition for Post-Quantum Cryptography Standardization to find a suitable quantum-resistant public-key encryption algorithms.

What properties does the winning algorithm have to have?

- It must stand up to quantum computing attacks, as well as classical attacks.
- It must be fast. We don’t want to slow down communication. This encryption also needs to run on the web, smartphones, sensors, and a lot of other devices that have more limited compute power. A very slow algorithm will hamper communication.

Further details about the 26 candidate algorithms are published in the NIST Internal Report (NISTIR) 8240*, Status Report on the First Round of the NIST Post-Quantum Cryptography Standardization Process.*

The 26 algorithms had very different approaches, but mostly lay in 3 families: lattice based, error correcting code based, and multivariate based cryptosystems. Lattice based systems have a large body of work behind them, starting back in 1996, and are considered one of the strongest candidates for post-quantum cryptographic standards.

How does a lattice based cryptographic system work? This is lattice is a grid of points — you’re familiar with a two (x, y) or three dimensional grid with coordinates (x, y, z), but a grid can extend to many more dimensions. There are multiple potential problems that are hard to solve here as the number of dimensions increase: closest vector problem, bounded distance problem, and the covering radius problem. Lattice-based problems use hundreds or thousands of dimensions, and the goal is to find two lattice points that are close together. There are no efficient algorithms, classical or quantum, that can solve these in less than exponential time.

In 2020 and 2021, NIST will continue to review and test these post-quantum encryption standards, with the aim to have drafts of the recommended standards ready sometime between 2022–2024.

After that begins the process of upgrading computing systems worldwide to use these algorithms. In a world where the a large quantum computer exists, we’d need to upgrade almost everything being sent online, and that’s a LOT of change. This is expensive and costly, and will take a lot of time. Previously, it has taken 20 years to move encryption algorithms from mathematical problems to full implementation . This includes building the software, implementing the hardware layer if needed, and knowing how precisely hard it would be to break . And now we have to include research on the risk analysis of quantum computers that haven’t been built yet. Waiting to find a quantum-safe cryptosystem until the point when a quantum computer does approach the magnitude to break modern encryption would be entirely too late.

Quantum cryptography actually uses quantum mechanical principles as the basis of the security. Because these cryptography systems utilize the laws of physics instead of mathematical proofs, they are theoretically “unbreakable”. Of course, that doesn’t apply to side channel attacks.

Quantum key distribution uses these quantum mechanical properties to create a shared key and distribute it, while being certain* that a third party hasn’t eavesdropped. For quantum states, we have several properties of nature that gives quantum information an extra level of security. Quantum states collapse when they are measured. If an attacker tried to read out information in an entanglement based protocol, the quantum states would no longer be in a superposition. Additionally, the no-cloning theorem for quantum mechanics states that it’s impossible to copy a quantum state. So, an attacker couldn’t copy the quantum information being transmitted and do operations on their copy. If someone tries to eavesdrop, Alice and Bob will know.

Quantum cryptography is based on the laws of physics, and not our knowledge and understanding of mathematics and hard problems. This means that it will remain secure no matter how much more powerful both classic computers and quantum computers become.

Long distance quantum communication utilizes quantum properties. BB84 and E91 (entanglement-based) are the most famous communication protocols for quantum key exchange. These protocols generate a shared secure key.

How would you do the BB84 protocol with a quantum system?

1. Alice prepares the bit string she wants to send and randomly selects a polarization basis. She can select either a horizontal/vertical polarization basis, where horizontal polarization is the 0 state, and vertical polarization is a 1. Or she can select a diagonal polarization basis, with the downward angled polarization basis being a 1 state, and a upward for the 0 state.

2. Alice prepares a sequence of photons, sending the polarization

For example, Alice selects a bit string 01 and chooses a horizontal/vertical polarization. Then, the first photon she sends will be horizontally polarized, and the second will be vertically polarized.

3. Bob chooses whether to measure in the diagonal basis, or the horizontal/vertical basis. However, this means he loses information when he randomly chooses the wrong basis. If he chooses to measure a diagonal polarized photon with a horizontal and vertical detector, he gets a random answer and destroys the original polarization. If he chooses the correct basis, we will be sure that the readout result is the correct one. We detect and record the results for the entire bit string.

(Practically, this can be imagined by a polarizing filter, like in fancy sunglasses. It works by only letting through photons of the correct polarization. The lack of a photon means the polarizing filter blocked it from transmitting.)

4. Alice and Bob publicly compare their encoding basis. Using the chart above, Alice says that for photon 1, I used the horizontal basis. If Bob used the diagonal basis to read this out, the result he got was random. They discard that bit in the sequence. They keep only the bits when the basis they prepared the photon in and the measurement basis match. The shared key is the remaining sequence.

Eve can come in and listen in on the photons , if she wants to. She is in the same position as Bob to choose a random basis. However, as soon as she interferes with the photons, Eve introduces errors into the measurements. Alice and Bob can check for errors by choosing a subset of the key and publicly compare it. If there are more errors than expected (more than the expected losses in the channel or measurement), they discard the key.

So why don’t we just use quantum cryptography if it’s so secure? Quantum cryptography requires specialized equipment. For example, you need these photon detectors, beamsplitters, and other equipment to make it work. So we can’t put all of this into a small device like your phone.

Also, just because the encryption itself is fundamentally secure by the laws of physics, that doesn’t mean no attacks can ever occur. Even without quantum computers, intrusion does occur even on currently secure classical cryptographic algorithms. It’s not because some computer can break the encryption. Side channel attacks can occur. These happen because of weakness in the implementation of the cryptosystem instead of a weakness in the algorithm itself. Even though you can be sure that no one has directly intercepted the photons in the process of creating the key in the quantum key distribution protocols, side channel attacks do exist in quantum cryptography as well.

The hardware requirements make it very difficult to use quantum cryptography everywhere. So, we will still need a post-quantum cryptographic protocol to secure the majority of devices. Post-quantum cryptography and quantum cryptography are fundamentally different, but both have their place in strengthening security in a potential future where we have large quantum computers.

The post Quantum Cryptography vs Post-Quantum Cryptography appeared first on Anastasia Marchenkova.

]]>The post Best Resources to Learn Golang (Go) appeared first on Anastasia Marchenkova.

]]>Where else should you go to learn Golang besides the official documentation? The Tour of Go is an interactive tutorial taking you through the basics of the Go programming language. No downloads required, just try Go right in your browser. Not only that, but the official Go website has amazing documentation and an awesome blog that covers topics from beginner to advanced.

Remember, don’t skip the exercises! This will deepen your understanding of the concepts and show you holes in your knowledge. It’s very different to read about using a programming language, and actually coding with it!

I started reading this along with the Tour of Go as I was learning the basics. Though I had coded in Python and HTML/CSS/Javascript before, and I was familiar with the basics, a lot of the concepts in Go were new. Things like concurrency and interfaces were new, and the Tour of Go didn’t go deep enough. Even now, this book sits on my desk and I reference it often.

This is a great Udemy course on the topic. I never finished it (unfortunately, this is a habit I have with a lot of my Udemy course purchases), but it’s as long as a full semester university course. There are 45 hours of lectures and the instructor is very approachable. If you have a better time learning with video lectures, this course is cheap and starts with the basics – explaining variables, types, and control flow.

This free ebook covers building web applications with Golang up front. A lot of these resources do cover building simple web servers, but don’t go into depth about making Go work with databases, web services, and deployment. From here, you can find more resources on the specific technologies you want to use with your Golang web app.

Often, when I search some concept in Go, Go By Example comes up! It has a lot of code snippets to solidify the concepts in the other resources for learning Golang. However, it isn’t interactive, so I’d recommend taking these examples, and putting them into the Go Playground. Play around with changing the code until you understand the concepts!

While there are a ton of resources out there for learning the basics of Go, learning from a book, video, or tutorial is just the first step to becoming proficient with a programming language. Building a project makes you apply the concepts in a real life setting and forces you to understand edge cases, caveats, and solidifying these concepts in your head.

The post Best Resources to Learn Golang (Go) appeared first on Anastasia Marchenkova.

]]>The post Best Quantum Computing Books for Everyone appeared first on Anastasia Marchenkova.

]]>Also, check out my YouTube video where I talk about some of these books!

Quantum Computing: An Applied Approach

I absolutely love this book and in my view, this should be the first book someone with a technical, but non-physics background, should pick up. It’s easy to read and covers the basics of everything you need to know to start getting involved in the quantum computing fields – including the mathematical background, the hardware, and the software. Start here.

This book is great for deep dives into code and algorithms. Used in parallel with the book above, it explains concepts in slightly different ways and covers a lot of the programming angle, as well as peculiarities of certain quantum computing frameworks and the consequences.

Introduction to Quantum Mechanics

Griffith’s is the canonical undergraduate textbook for physics students in late second year or early third year. Usually, calculus 1, calculus 2, and linear algebra are the pre-requisites for quantum mechanics.

Principles of Quantum Mechanics

Ready for the next level? Shankar’s textbook, Principles of Quantum Mechanics, is used in a lot of graduate level classes.

Quantum Computation and Quantum Information

Quantum Computation and Quantum Informationby Isaac Chuang and Michael Nielsen is the standard quantum computing textbook. You do need background knowledge and mathematics before diving into this book. Michael Nielsen also has an online book called Quantum Computing for the Very Curious which introduces quantum computing in a way that you will actually remember it.

This is my go-to gift for baby showers. It’s **SUCH** a hit. If you want to get a full set, there’s also Quantum Physics for Babies and Quantum Entanglement for Babies. And if you want to diversify, there are other topics like Rocket Science for Babies, Neural Networks for Babies, and Blockchain for Babies.

This book is a look at Shor’s algorithm, the “killer app” for governments to be able to break public key encryption, which a large chunk of the internet relies on to keep your data secure.

Quantum Mechanics – the Theoretical Minimum

Clear explanations of quantum mechanics with the math interspersed, building deeper understanding and intuition.

*If you’ve enjoyed this, check out my other channels below. ** Subscribe to my Youtube channel , and follow me on Twitter and Instagram for more quantum computing and tech content! *

The post Best Quantum Computing Books for Everyone appeared first on Anastasia Marchenkova.

]]>The post Quantum teleportation with Q# | Microsoft Q# Advent Calendar Dec 25th appeared first on Anastasia Marchenkova.

]]>Quantum teleportation is a fundamental concept in quantum computing. It introduces a lot of key quantum computing concepts. Here, I’ll cover what quantum teleportation is, the steps to teleport quantum information, and show you how to write this in Q#, Microsoft’s Quantum Software Development Kit (SDK).

Quantum teleportation is a critical concepts to take advantage of the powers of quantum information. It’s the key behind quantum key distribution and long distance quantum communication, and also used in quantum computing. It allows you to “teleport” – or move the quantum state – to another qubit.

But why do we need to do something special to copy quantum information? For classical information, we simply read the bits, and copy them to another place. We can’t do that on a quantum system. The no-cloning theorem says we cannot copy a quantum state exactly. So, we have to do something a little different. Quantum teleportation means we “move” the quantum state of to another qubit. This requires destroying the state of the qubit we teleported, so we do not violate no-cloning.

Quantum teleportation has been successful over 4 miles in Canada and in Hefei over fiber optics, and 870 mi in space at the Quantum Experiments at Space Scale (QUESS) project.

Source: XKCD

Quantum teleportation requires 3 qubits, and two classical bits. Alice wants to teleport the state of a qubit to Bob at some distance away.

Along the way, I’ll introduce the quantum concepts along with the Q# code.

Entangle Two of our Qubits

First, Alice has a Qubit (let’s call this the message) Q_message that has some unknown quantum state.

Alice also gets two more qubits. Let’s call them Q_Alice and Q_Bob (Q_Alice will remain with her, and she will later send the other qubit to Bob) and entangles them.

Alice entangles these qubits by applying:

`// Entangle pair of qubits`

H(Q_Alice);

CNOT(Q_Alice, Q_Bob);

- A Hadamard gate to Q_Alice
- CNOT on Q_Alice and Q_Bob, with Q_Alice being the Control, and Q_Bob being the target

The Hadamard and CNOT sequence is how we entangle a pair of qubits.

The Hadamard gate is a single qubit gate. It puts the qubit into an equal superposition (1/2 probability of 0, 1/2 probability of 1). A Controlled-NOT (CNOT) gate is a two-qubit gate. There is a target qubit, and a control qubit. It performs a NOT on the target qubit only if the control qubit is in the 1 state.

You can now send the entangled qubit (Q_Bob) to Bob.

Then, we perform a Bell measurement:

- CNOT gate on Q_message (control) and Q_Alice (target): CNOT(control, target)
- Hadamard on Q_message: H(qubit)
- Measuring Q_message and Q_Alice: M(qubit)

`// Bell measurement`

CNOT(Q_message, Q_Alice);

H(Q_message);

let data1 = M(Q_message);

let data2 = M(Q_Alice);

Alice then measures her qubits — we now have a 0 or 1 from each qubit, meaning there are 4 potential combinations: 00, 01, 10, 11.

Alice sends this information to Bob as well. The result of Q_message is the first bit, and the result of Q_Alice the second bit.

After the measurement, depending on what Bob receives, he does an operation on his qubit —

`// Bob's operations`

if (data1 == One) { Z(Q_Bob); }

if (data2 == One) { X(Q_Bob); }

If Alice transmits 00: then Bob does nothing to his qubit

If Alice transmits 01: then Bob applies the X gate

If Alice transmits 10: then Bob applies the Z gate

If Alice transmits 11: then Bob applies Z gate, then Bob applies the X gate.

and Bob now has a qubit with the state that Alice’s original message qubit had.

Congratulations! You have teleported an unknown quantum state using Q#.

*But why does this work?*

This works because the states of Alice’s qubit and Bob’s qubit depend on each other. Let’s look at the full circuit. q[0] is Q_message, q[1] is Q_Alice, and q[2] is Q_Bob.

The classical information we receive from Alice tells us how Bob’s state differs from Alice’s original state, and what gates we need to apply to it to get Bob’s qubit back to the initial state.

Then, if Alice sends 00, that means neither of the CNOT gates are activated – that means the state of Bob’s doesn’t need to change.

If Alice sends 01, that means that the measurement of q[0] was 0, so the CNOT across q[0] and q[1] wasn’t activated, since q[0] was the control. However, q[1] was 1. That means the CNOT across q[1] and q[2] is activated, and NOT is applied on q[2], since q[1] was the control and equal to 1. A NOT gate is the equivalent of a X gate. Then, to “undo” that, Bob needs to apply an X gate to his qubit q[2] to get back to the original state of q[0], or the original message qubit.

First, make sure you have Q# installed — the instructions are here.

Then, you can see and download the final code in a Jupyter Notebook at my Github here.

*Hope you enjoyed! Stay tuned and subscribe to my Youtube channel for an upcoming video covering this, and follow me on Twitter and Instagram for more quantum computing and tech content! *

1. https://github.com/microsoft/QuantumKatas/tree/master/Teleportation

2. https://github.com/microsoft/Quantum/tree/master/samples/getting-started/teleportation

3. Hidary, J. D. (2019). Quantum computing: an applied approach. Cham, Switzerland: Springer.

4. Johnston, E. R., Harrigan, N., & Gimeno-Segovia, M. (2019). *Programming quantum computers: essential algorithms and code samples*. Sabastopal, CA: OReilly Media, Incorporated.

The post Quantum teleportation with Q# | Microsoft Q# Advent Calendar Dec 25th appeared first on Anastasia Marchenkova.

]]>The post Qiskit Camp Asia 2019 | We Won! | Hackathon Tips appeared first on Anastasia Marchenkova.

]]>And we won!

It was an amazing experience! This is my second Qiskit Camp and every time it just gets bigger, better, more fun, and more impactful.

Every Qiskit Camp, the structure changes a bit, so this experience might not be entirely the same as the next camps. However, these tips below should give you some idea of what to expect. Feel free to comment with any other questions!

Pick a project you’re excited about. Don’t pick a project just because you think it’s going to win. I’ve been drawn to more open ended projects in the hackathons, and that gave us some freedom with our final product and adapt it based on the skillsets on the team. It’s ok if you don’t have a project idea, because every Qiskit Camp starts out with a pitch session and team formation. There are plenty of projects looking for team members!

For Qiskit Camp specifically, it doesn’t matter if you choose a project that has you building something for Qiskit itself (like our pulse programming language) or create something that uses Qiskit (Quantum Image Processing won second place!) Either of those has a chance to win.

Qiskit Camp is great because there’s a mix of physicists, computer scientists, and free agents to work with. A successful hackathon team tends to have a diverse group of people. Having a team with different expertises means you can split up the work according to your strengths.

Hackathons are team events, so coordination and planning at the beginning can save you a lot of stress. I always opened a Google document and started recording ideas, notes from the coaches about the problem or Qiskit itself, bite size steps to take, and potential deliverables.

Is your goal to have code and a pull request ready to go? Do you want a clean Jupyter Notebook with experimental results by the end of the hackathon? Break down that deliverable into pieces. For example, for our project where designing a pulse programming language, the first thing we worked on was the design itself of the language and the proposal. Then, we moved on to doing the experiments and getting examples of our new imagined pulse programming language. After that, we started coding. Even if we had gotten no code in, then at least we would have the proposal and experiments that we were proud of. All these pieces contributed to our final results.

The presentation is important! This is a chance to showcase your work. Think about your motivation for your projects, talk about what you actually completed, and what future work could be. The pitch is only three minutes, which means you have to practice your presentation. Three minutes is shorter than you think!

If you scroll down further, you can see our presentation from Qiskit Camp Asia 2019.

It’s not about winning a prize. It’s about learning something new, making friends, and enjoying building something with a team. Remember spend your time getting to know people and getting outside! There were a few announcements bugging us to enjoy the fresh air and remember to eat. And, most importantly, have fun!

See all the teams from Qiskit Camp Asia 2019 here: https://github.com/qiskit-community/qiskit-camp-asia-19/issues/

*P.S. I was so busy at this hackathon that I didn’t record a vlog I’m so glad you all enjoyed it though, and will DEFINITELY vlog more! Subscribe to my Youtube channel here and check out some pictures of Japan and Qiskit Camp below and on my Instagram.*

The post Qiskit Camp Asia 2019 | We Won! | Hackathon Tips appeared first on Anastasia Marchenkova.

]]>The post Launching my YouTube Channel | Qiskit Camp Europe Vlog appeared first on Anastasia Marchenkova.

]]>I’ve talked about making a YouTube channel long enough. It’s finally happened!

The first video is a vlog documenting my experience at the Qiskit Camp Europe 2019. This is a two day quantum computing hackathon hosted by IBM Quantum. Physicists, computer scientists, and artists came together to work on AMAZING projects with the Qiskit SDK.

As a reminder, I’m usually posting more realtime videos on Instagram stories and IGTV, so you can follow me for those there: https://www.instagram.com/amarchenkova/

And as always, feel free to reach out via DMs or comments if you have suggestions for topics.

The plan is to a lot of my blog content to YouTube videos. But I also want to talk about working in the quantum computing industry, make more tutorials, talk about startups and productivity, and talk about all the cool quantum tech out there.

However, my main goal is making this content helpful for those reading or watching it. So please let me know if there’s something you want to see!

The post Launching my YouTube Channel | Qiskit Camp Europe Vlog appeared first on Anastasia Marchenkova.

]]>The post Programming for Quantum Computing: What language should you learn? appeared first on Anastasia Marchenkova.

]]>My number 1 recommendation to learn is Python!

Python was built to be as human readable as possible. Even if you’re new to programming, a lot of it will intuitively make sense. It’s also basically everywhere – for example, Mac OS already has Python installed so there’s nothing to set up.

You can use Python for scripting, web development, AI, and now in quantum computing. Because of how widely used it is, there are a ton of resources out there. Depending on what type of learner you are, you can find lots of books, YouTube videos, interactive coding websites, and more to teach you Python. And because Python is beginner friendly, many of these tutorials will teach you computer science concepts as you learn the syntax.

However, the key reason that you should learn Python for programming quantum computers is because a lot of software packages to simulate or connect with quantum computers are written for use with Python.

Cirq is Google’s software library for writing, manipulating, and optimizing quantum circuits for quantum computers and simulators. Currently, you can’t run these on the Google Bristlecone chip, though they have said they’ll soon make it cloud available.

Qiskit is IBM’s for working with noisy quantum computers at different levels. They have packages called Aqua, Terra, Ignis, and Aer, for working from the high level algorithms to low level pulses. You can run this on IBM’s real quantum computers.

Ocean is D-Wave’s tool. You can connect Ocean to D-Wave’s Leap platform to run code on simulators or on the D-Wave machines.

Additionally, other packages and toolboxes like QuTiP (numerical simulations) and ProjectQ exist to make working with quantum systems even easier.

Python is a great programming language to start learning if you’re interesting in working with quantum computers one day. It’s also a generally good programming language to add to your skillset! It’s one of the fastest growing programming languages and big tech companies are always hiring Python developers.

Whether you’re just starting out in computer science or an experienced programmer, there’s opportunities for everyone to become involved with quantum computing. A lot of these packages are open source and welcome contributions from anyone, so you can start programming for quantum computing today through a simulator or even on a real chip!

The post Programming for Quantum Computing: What language should you learn? appeared first on Anastasia Marchenkova.

]]>The post When can a quantum computer destroy bitcoin? appeared first on Anastasia Marchenkova.

]]>What will happen if a quantum computer can undermine the trust of the cryptography that digital currencies are built on? The implementation details of the currencies and how the exchanges handle transactions and wallets can change how seriously quantum computing can potentially impact the currencies.

Encryption works by applying a math formula to a message, and scrambling it so that only a person who you’ve authorized can see it. The safety of your message relies on the difficulty of “undoing” the mathematical problem without the key.

For example, RSA relies on the hard problem of factoring numbers. Multiplying two prime numbers together is easy, but taking a large number and factoring it to get those two prime numbers is difficult. It would take longer than the age of the universe to factor one 4096-bit key with a classical computer.

However, quantum computers solve problems differently than classical computers. Shor’s algorithm can find the prime factors of a number and can ”undo” this factoring problem much more easily than a classical computer. This means that someone with a large enough and coherent enough quantum computer, could, in theory, get your private key from the public key (more here). This is a serious problem. A private key should never be shared with anyone, because that private key can be used to authorize transactions that the owner doesn’t want to happen. So, as quantum computers become better, the security of RSA will no longer be effective.

RSA has been around since 1977 and is still used today. Later on, ECC was recommended to replace RSA, due to it’s smaller key sizes and speed. However, Shor’s discrete logarithm quantum algorithm impacts ECC as well.

The research breakthroughs and speed of advances in quantum computing means that the long-term security of these systems is questionable. In 2015, due to concerns about quantum computing attacks, the NSA noted that it plans to replace the recommended “Suite B” ciphers with quantum-resistant algorithms. In January 2019, NIST released a list of 26 potential algorithms that may resist quantum computer attacks. While some of these are viable candidates and we will need to choose new encryption algorithms, cryptocurrencies have unique implementation challenges and uneven standards that will make transitioning harder.

How big does this quantum computer bitcoin killer need to be? Microsoft Research has shown fewer qubits are needed for computing elliptic curve discrete logarithms – as few as about 2500 for a standard 256-bit key than 2048-bit RSA, which needs 4000. However, these are perfect, “logical” qubits. Because of error correction and other necessary processes, we need many more physical qubits. John Preskill noted in his lecture on quantum information that a 10 million physical and 10,000 logical qubit quantum computer would be needed.

Current quantum technology is still very far from this milestone. IBM announced they had achieved a 50-qubit system in late 2017, and Google announced 72-qubits in early 2018. IonQ, which uses ion traps, announced a quantum computer with 160 qubits trapped and performed operations on 79 of them. DWave has released their 2048 qubit system. However, it is a quantum annealer and can’t be efficiently used for Shor’s algorithm.

However, the goal is eventually build quantum computers large enough for chemistry, optimization, and machine learning. But while quantum computers large enough to do these tasks are far away, the cryptocurrencies currently in circulation can be affected later.

While quantum computers large enough to do these tasks are far away, the cryptocurrencies currently in circulation can be affected down the road, so it’s important to think ahead. A big concern is that a quantum computer could calculate the private key used to sign transactions from the public keys exposed during transactions, and therefore allow unauthorized spending. How do we mitigate the quantum computing threat on cryptocurrencies? There are a few weak points that allow quantum computers to potentially gain access to coins.

First, a malicious actor would need to find the public key. While the wallet address is based on the public key, it’s hashed by algorithms that currently are not vulnerable to quantum computing attacks. However, during a transaction, the public key is exposed.

For each transaction, the owner authorizes the transfer of a coin to another address by digitally signing a hash of the previous transaction and the public key, and adding these to the end of the chain. The easiest way to see what happens during a transaction is by looking at the code in action. We’re using pybitcointools below to show the steps.

The condensed steps:

- Create a private key
- Generate the public key from the private key
- To make a transaction, you sign the transaction with your private key.
- When you read tx2, you see the public key (starting with ‘0420f34…’) exposed in tx2
- Push the transaction

```
> priv
'57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4'
> pub = privtopub(priv)
> pub
'
```**0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a
1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9**'
> addr = pubtoaddr(pub)
> addr
'1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6'
> h = history(addr)
> h
[{'output': u'97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e:0', 'value':
50000, 'address': u'1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6'}, {'output': u'4cc806bb04f730c445c
60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171:1', 'value': 50000, 'address': u'1CQLd3bhw4Ez
aURHbKCwM5YZbUQfA4ReY6'}]
> outs = [{'value': 90000, 'address': '16iw1MQ1sy1DtRPYw3ao1bCamoyBJtRB4t'}]
> tx = mktx(h,outs)
> tx
'01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f7970000000000fffff
fff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905
f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000'
> tx2 = sign(tx,0,priv)
> tx2
'01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b48304
5022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d2
9d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e0141**0420f34c2786b4bae593e22596631b025f3ff
46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c
6e9**ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000fffff
fff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000'
> pushtx(tx2)
'Transaction Submitted'

Even though the public key is exposed during each transaction, un-doing these steps to get the private key takes longer than the age of the universe for a classical computer, so it’s secure.

The hierarchical deterministic wallet is now the standard for most mature exchanges. Their wallets allow you to have many wallet addresses. This means that once the private key is used for a transaction, all the coins move, and that key is no longer valid. That means the coins could only be intercepted during the confirmation stage.

Besides the elliptic curve vulnerability, the security of your coins depends on the exchanges themselves. Not all wallets use the hierarchical deterministic wallet, and so most exchanges right now do not reuse addresses. However, if they do, the private key can be used again to sign a transaction. That means a transaction long in the past could be used to recover the private key, and then that private key could be used again today to move coins.

Even if we do not reuse addresses, there’s an argument to be made that there’s still time during the transaction to intercept the coins. Someone could, in theory,

A transaction would therefore only be vulnerable while the transaction was unconfirmed. However, that could be enough time for a quantum computer to reroute the transaction. Craig Gidney and Martin Ekerå published a paper in May 2019 on how to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits.

The **average confirmation time** for a **Bitcoin** transaction in June 2019 was 9.47 minutes. However, there have been periods of time when average confirmation times spiked to 11453 minutes – over 7 days!

In the world with a large enough quantum computer that would be able to recover the key, all you’d have to do is send the transaction with a higher fee and redirect the transaction to your own wallet.

A way to prevent this then would be to set transaction fees very high for the true owner. However, since low fees is a selling point for cryptocurrencies, this would cripple use.

Ideally, we would need to plan to transition to a new cryptosystem well before a large-scale quantum computer would be available, and have people opt to move their coins before there is a risk of verification ownership. After a certain time, the old, elliptic curve encrypted version will have to become invalid, and the entire value of that chain will fall to zero. This solves the problem of a quantum computer later gaining access and manipulating the cryptocurrency.

But we know some bitcoin have been “lost”. The owner has somehow lost access to the private key, which is necessary to authorize transactions and spending.

Image: Twitter

It’s possible that some portion of these lost coins are on exchanges that re-used wallets and the old coins could therefore remain vulnerable. If we have access to the public key, Shor’s algorithm could recover some of these lost coins.

If the person recovering lost coins immediately starts selling, the price would likely crash and undermine confidence in the system. This also raises other questions. Since the amount of bitcoin is capped, would those lost coins be re-issued? Or would the cap be lower?

The above problems exist if we continue using elliptic curve cryptography based systems. However, we can avoid some of these problems as quantum computing power increases if we change the algorithm used to create the public key from the private key. But we’ll need to pick an algorithm that has shown evidence that it can stand up to quantum attacks.

We call this “post-quantum cryptography.” The National Institute of Standards and Technology (NIST) has been leading an effort to evaluate and standardize post-quantum cryptography methods, because we need a new recommendation to replace the Suite B ciphers that are vulnerable to a quantum computer.

Cryptocurrencies are currently exploring different cryptosystems. One approach is using symmetric cryptography, which is less vulnerable to quantum computing attacks than asymmetric cryptography. Fawkescoin is trying to solve the problem by demonstrating that a distributed network is possible with symmetric cryptography. Other coins, like the Quantum Resistant Ledger, uses hash-based cryptography. So far, hash-based cryptosystems resist currently known quantum computer attacks.

It’s hard to predict future technologies. So, it’s likely that quantum computing will not be the only technology that puts cryptocurrencies and security at risk. Sometimes it only takes one technological leap to move us into a place that we didn’t think would be possible. It’s likely that the need to update encryption will happen multiple times.

One constant in technology is that there is always progress and new breakthroughs, even if we can’t know what they’ll be. Zapata Computing released a paper on Variational Quantum Factoring, which may be able to use hybrid (working with classical computers) Noisy Intermediate Scale Quantum (NISQ) devices with just hundreds of qubits to factor numbers. Of course, this new technique is untested and has limitations. However, there is a lot of room for new algorithms and exploration that may shift timelines.

Quantum computers may never be able to scale to 2500 logical qubits. However, a quantum computer of this size can solve many life-changing problems, besides just running Shor’s algorithm. Google has been using quantum simulation to explore fertilizer production efficiency problems, which consumes 1-2% of energy in the world. A higher quantity of quantum computer users will almost certainly accelerate the impact on economic, political, and social issues in the world.

Some industries, like cryptocurrencies, may consider quantum computers a threat to their long term viability. We can’t stop progress, and technology can and will be used for both good and evil. However, if elliptic curve encryption can truly be compromised, we’ll have bigger problems than losing our bitcoin. Understanding and preparing for the security implications of quantum will be crucial. We can’t hold back the technology from its positive impacts out of fear.

*Are you considering quantum computers as a risk to your cryptocurrency portfolio? Do you think building a big enough quantum computer to launch attacks on bitcoin will be possible? Should cryptocurrencies start worrying about quantum computing threats? *

The post When can a quantum computer destroy bitcoin? appeared first on Anastasia Marchenkova.

]]>The post Natural Leadership appeared first on Anastasia Marchenkova.

]]>One of the biggest mistakes I’ve seen by those wanting to move into leadership is trying to manage like a true ‘boss’. First, they try and give orders to their peers. Next, their peers push back. Then, a toxic loop is created. The team lead gets frustrated and tries to tighten their grip on their new powers, yet their team respects them even less.

However, natural leadership is a different game. This style actually works. It’s about becoming a role model for people on the team and beyond your own department or organization. What if you can make five or ten other people better through mentorship and guidance? Remember, it’s not about you. It’s not about gathering high fives or accolades.

By unselfishly giving your time to make others around you better, you become a trusted ally and resource.

Mentorship, inclusion, and development are the keys to becoming a natural leader.

Anyone who wants to move into management. Mentorship is the first step to being good at managing people. You have to learn how to give constructive feedback, be patient when someone is learning something new, and be generous with your time.

There are a lot of writings about mentorship, and your style should change depending on the person and the role you’re in. However, the broad qualities of a good mentor are:

- Making time and resources available to your mentee
- Developing a trusting relationship
- Setting stretch goals and challenges
- Constructive, actionable feedback
- Being positive and uplifting

Even if you’re not an official team lead, you have the opportunity to display natural leadership by becoming a mentor to new team members.

Fostering an inclusive atmosphere for other team members, new and old, and creating and deepening social connections at a company is crucial to creating a thriving environment.

Beyond the social aspect, however, creating an inclusive environment allows for a new or less senior team member to feel comfortable speaking up.

A few ideas for inclusion, as well as pitfalls, below.

Critically, make sure that there’s a variety of activities. Someone who doesn’t drink is going to feel excluded if every team bonding event is at a bar. After work activities are tough for parents and pet owners, so definitely do not make those mandatory or guilt them if they can’t attend. A true team bonding activity is part of the job, and should be done during work hours.

Also, only do 1:1 discussion, team hangouts, or office wide groups when it’s a company event. Picking and choosing certain people to attend events creates cliques. This worsens the culture!

A good morning goes a long way. The morose way some people trudge into work is depressing! Ask someone to grab coffee or take a walk around the block and get to know them. We have a buddy system. Every new hire gets a buddy from a different department to be a go-to for those new employee questions.

I find that it takes a few times offering someone help until they’re actually comfortable asking you for that help!

When someone is new to a company, they feel they don’t enough to speak up. However, they are looking at problems with fresh eyes. That feedback is very valuable! Explicitly inviting them to speak up in a meeting, or even asking them what they learned working at other companies can go a long way to making a new team member feel more comfortable stepping into a new team. They understand that their opinions are valuable, and that it’s an environment that welcomes feedback.

As a team lead, other leadership also will be relying on you to keep your ear to the ground and understand what’s missing, either in team culture or training and education for the role. It may be petitioning for attending a conference, setting up learning workshops in the office, or even starting with asking for a budget for development activities. Maybe it’s setting up a slack channel with a book club or an employee resource group.

This is where getting to know your team members outside of the transactional day-to-day is important. You can become an advocate for their growth within the company if they trust you with their ambitions and goals.

As you see, none of this requires explicit powers or has anything to do with hiring or firing. Natural leadership requires from you is the desire to make those around you better. People respond well to authenticity.

The post Natural Leadership appeared first on Anastasia Marchenkova.

]]>