Mariia Mykhailova

Mariia Mykhailova is a principal quantum software developer at PsiQuantum, working on software for fault-tolerant quantum computation. Prior to that, she was a quantum software engineer at Microsoft Quantum, joining the team in early 2017,  just in time to participate in the development of the first version of the quantum programming language that became Q#. Mariia created the Quantum Katas project, an open source collection of hands-on tutorials and programming problems for learning quantum computing. She is also a part-time lecturer at Northeastern University, teaching Introduction to Quantum Computing since 2020, and the author of the O’Reilly book Q# Pocket Guide.

books & projects by Mariia Mykhailova

Quantum Programming in Depth

  • June 2025
  • ISBN 9781633436909
  • 288 pages
  • printed in black & white

Quantum Programming in Depth shows you how to solve quantum computing problems in a programmer-friendly way. The book’s hands-on project-based approach will hone your quantum skills using realistic problems and progressively harder programming challenges. As you read, you’ll design quantum algorithms and explore their performance on future fault-tolerant quantum computers.

Quantum Computing with Microsoft QDK

5 weeks · 7-10 hours per week average · BEGINNER

Quantum computing has the potential to usher in a new age of computing, with impacts on areas from data science to cryptography. In this series of quick liveProjects, you’ll explore the full potential of quantum for cryptography, data transmission, data reconstruction, and more. In each standalone project, you’ll work with Q# and the powerful Microsoft Quantum SDK to experiment and prepare for the oncoming quantum revolution.

Grover's Search to Solve a Cryptarithm

1 week · 6-8 hours per week · BEGINNER

In this liveProject, you’ll use quantum computing to solve a cryptarithm—a mathematical equation in which digits are replaced by alphabet letters. Your challenges will include figuring out how to represent the problem in a way suitable for Grover’s search algorithm, then implementing the algorithm and writing unit tests to validate your solution.

Grover's Search to Recover an ISBN

1 week · 8-12 hours per week · BEGINNER

In this liveProject, you’ll use the powerful Quantum SDK from Microsoft to develop a simple quantum application using Grover's search algorithm. This algorithm will be able to generate missing data, such as by taking a query in the form of an ISBN with one or several missing digits, and recovering those digits to return the information about the book with this ISBN. You’ll start simple by implementing the algorithm to recover only a single missing digit, then expand to recovering several missing digits. Finally, you’ll set up a classical query of an online ISBN database to find relevant book information.

Preparing a Quantum State

1 week · 6-8 hours per week · BEGINNER

In this liveProject, you’ll step into the shoes of a quantum software engineer and develop a library for state preparation routines. Preparing quantum systems in arbitrary superposition states is a vital step of quantum algorithms. Luckily, the Microsoft Quantum Development Kit libraries offer multiple state preparation routines. You’ll implement a single-qubit state preparation routine and a recursive multi-qubit state preparation routine, before implementing the complete multi-qubit state preparation routine. Finally, you’ll write unit tests for your implementation.

Teleportation and Superdense Coding

1 week · 4-6 hours per week · BEGINNER

In this liveProject, you’ll explore quantum mechanical phenomena for information transmission. You’ll go hands on with two quantum communication protocols—quantum teleportation and superdense coding. You’ll implement each protocol using Q# and simulate it running, before visualizing the intermediary states of the quantum system.

BB84 Key Distribution Protocol

1 week · 4-6 hours per week · BEGINNER

In this liveProject, you’ll take on the role of a cryptography expert evaluating quantum computing for the purpose of key distribution. Key distribution generates a random secret key which is then shared between only two parties, and is a crucial part of many cryptographic algorithms. You’ll work to implement the common BB84 key distribution, simulate using the BB84 protocol to generate a shared key, and then visualize the steps of the BB84 protocol.