# Introduction to this course

## Course introduction

This training is designed for both expert and non-expert developers who want to learn about how quantum computing poses a risk to existing cryptography as new quantum algorithms are able to break existing encryption schemes.

Specifically, the default information is geared towards individuals with programming knowledge but limited or no experience in cryptography or quantum concepts. Practical Python examples are given which demonstrate the mathematical principles of cryptography, and can be used for some experimentation to improve understanding. This also caters to those seeking a high-level overview of quantum cryptography's workings and its significance in the modern world.

Readers desiring a deeper understanding of both quantum physics concepts and cryptography should explore our expandable sections and presentations, which delve into the foundational mathematical concepts of this topic.

Through this course, readers will learn how even today's data is at risk as it can be collected now, and decrypted later. It will demonstrate how our existing algorithms are compromised and introduce the innovative techniques which protect against such threats through an approach.

## Key takeaways for this course

By the end of this course, you will have a better understanding of:

- Cryptographic primitives that underpin current cryptographic systems:
- Cryptographic Hashing
- Asymmetric Cryptography
- Symmetric Cryptography

- The quantum threat to classical encryption schemes
- Quantum-safe encryption schemes

You will also have had the opportunity, if you wish, to run some example Python code demonstrating some of the approaches.

Finally you can apply for a badge by passing an exam.

## Tips for navigating this course

In this course, you can pace your learning however you prefer. The total duration is approximately 6–7 hours including the additional presentations, and running the sample code, though this time will vary depending on your existing knowledge and any links you follow. If you need to leave the course, you can easily return later.

You can see where you are in the course material using the navigation on the left hand side of the main content. Individual lessons can be expanded to see a set of topics, and you can click to go back to previous topics.

Additional References and hover-help can be found highlighted as you go through the material.

## Before you begin

An introductory presentation is linked from the **Helpful Materials** section on the course overview page.

This provides:

- An introduction to cryptography
- A maths primer

If you are unfamilar with these topics, you may wish to review this presentation before starting the lessons, or return to it if you feel the need later.

## Lesson structure

Each lesson will include:

- An introduction including the learning objective for this lesson
- Detail on the cryptography topic being presented including:
- An explanation of the the topic and current algorithms
- Math explanations and examples. Some of these are in collapsible sections so you can skip if you do not wish to understand the math detail.
- Optional Python code examples that can be run (you will need to be logged in)
- Risks from classical computing algorithms
- Risks from quantum computing algorithms
- Approaches to mitigate this risk

- A list of key takeaways from the lesson

## Running the Python examples

The Python code has been run already so that readers browsing the text can see the results without additional steps. However, and in particular for those with an interest in software development, you are encouraged to run these examples yourself. You can also experiment with input parameters and explore the principles in an experimental way.

When you run a Python cell for the first time, you will be prompted to log in to IBM Quantum.

You should run each Python cell in order, from the beginning of the notebook. Later cells are typically dependent on earlier ones to set up libraries, variables, etc. Each cell has been written to produce some output after execution.

Important Note- The Python code examples are provided to demonstrate the mathematical principles of the algorithms being discussed. They are not intended to be used as actual implementations. It is essential to use well-supported and reviewed security libraries in any real-world usage.

## Digital Certification

You have the opportunity to earn a badge by successfully answering sufficient questions in the course assessment.

You can try the assessment at any time.

## Pre-course Survey

Before starting, please take a moment to complete our pre-course survey, which is important to help improve our user experience.

## Next steps after this course

A presentation has been provided (see **Helpful Materials** on the course overview) that reviews the contents covered in this course. You may wish to download so you can refer to it at a later point in time.

Further courses are being developed which will follow on from this introduction and will cover topics including:

- Using quantum-safe encryption in practice
- Open-source libraries
- IBM product offerings that can help

Was this page helpful?