Skip to content
This repository has been archived by the owner on Nov 16, 2023. It is now read-only.

Update after review #568

Merged
merged 18 commits into from
Oct 23, 2019
Merged
4 changes: 2 additions & 2 deletions articles/TOC.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@
href: overview/what-is-quantum-computing.md
- name: What can a quantum computer do?
href: overview/quantum-computers.md
- name: How can I learn quantum computing?
href: overview/how-to-learn-quantum-computing.md
- name: Why should I learn quantum computing?
href: overview/why-learn-quantum-computing.md
- name: What is Q#?
href: overview/what-is-qsharp.md
- name: How can I learn quantum computing?
href: overview/how-to-learn-quantum-computing.md
- name: Learn with the Quantum Katas
href: intro-to-katas.md
- name: Quickstarts
Expand Down
14 changes: 8 additions & 6 deletions articles/index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,20 @@ landingContent:
# Card (optional)
- title: Get started with Microsoft Quantum
linkLists:
- linkListType: get-started
- linkListType: overview
links:
- text: Get started with the Quantum Developer Kit
- text: Overview
url: welcome.md
- text: Five things you should know about quantum computing
- text: Five things you should know
url: overview/index.md
- linkListType: quickstart
- linkListType: get-started
links:
- text: Write your first quantum program
- text: Learn quantum concepts with Q#
url: quickstart.md
- text: Implement Grover's algorithm
- text: Learn about impactful quantum programs with Q#
url: quickstarts/search.md
- text: Learn about solving our biggest challenges in chemistry
url: https://cloudblogs.microsoft.com/quantum/2018/12/04/simulating-nature-with-the-new-microsoft-quantum-development-kit-chemistry-library/
- linkListType: learn
links:
- text: Learn with the Quantum Katas
Expand Down
25 changes: 18 additions & 7 deletions articles/overview/how-to-learn-quantum-computing.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: How to learn quantum computing
description:
author: natke
ms.author: nakersha
ms.date: 10/16/2019
ms.date: 10/23/2019
ms.topic: article
uid: microsoft.quantum.overview.learn
---
Expand All @@ -14,19 +14,25 @@ Learn how to start writing quantum programs.

natke marked this conversation as resolved.
Show resolved Hide resolved
## Getting the basics: what do you need to know?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Avoid gerunds.
Capitalize complete sentences after colons.
Change H2 to: Get the basics: What do you need to know?

Fortunately, you don’t need to know quantum physics to start writing quantum applications. However, there are some concepts that are especially important to understand quantum computing. But don’t worry if you don’t know something! We will give you the resources to learn the necessary tools.
You don’t need to know quantum physics to learn about Q# and quantum computing or start writing quantum applications.

To guide you in learning quantum computing with Q#, we provide a Getting Started Guide (link below) for the Quantum Development Kit, which provides a journey guide for both those who want to start coding quantum programs and those who are not yet ready to start coding, but want to learn more about Q# and quantum programming.

Before embarking on the Getting Started journey, this last article on the “Five things to know about quantum computing” introduces you to some basic concepts that are especially important to understand quantum computing and points to further resources for you along your journey.

These concepts will give you a good introduction to the fundamental knowledge you need to start coding quantum programs. Those who are not yet ready to start coding, but want to learn more about Q# and quantum programming can still review these concepts at a high level here and then proceed to the Getting Started Guide to learn more about quantum computing and Q# without having to start coding.

* [Linear algebra (vectors and matrices)](xref:microsoft.quantum.concepts.vectors): in quantum computing, quantum states are represented by vectors, with quantum operations being linear transformations applied to these vectors.
natke marked this conversation as resolved.
Show resolved Hide resolved
* [Complex numbers](https://en.wikipedia.org/wiki/Complex_number): the coefficients of quantum state vectors are complex numbers. You can understand some basic quantum computing concepts without them, but you won't get far before you need to incorporate them into your quantum toolkit.
* [Basic quantum mechanics](xref:microsoft.quantum.concepts.intro): We just said that you don’t need to know quantum physics to start coding (and it’s true!). But some basic concepts of quantum mechanics and its mathematical notation will be helpful to understand quantum programming.

## Code first, then learn!
## Code first, then learn! Or Learn more, then code!
natke marked this conversation as resolved.
Show resolved Hide resolved

Now that you have the basics, you're ready to start writing your first quantum programs. There are many options to get started. Here we recommend you some of them:
Now that you have the basics, you're ready to start writing your first quantum programs. Or maybe you want to learn more before coding. Either way, our Getting Started with the Quantum Development Kit provides a series of steps in learning, which includes:
natke marked this conversation as resolved.
Show resolved Hide resolved

* [Write your first quantum program](xref:microsoft.quantum.write-program)
* Learn with the [Quantum Katas](xref:microsoft.quantum.overview.katas): an open-source project containing programming exercises aimed at teaching quantum computing. In particular, the online version of the Quantum Katas in form of Q# Jupyter Notebooks is especially easy to use. In less than 5 min you can start to write your first quantum program without needing to install anything.
* [Tutorials and samples](https://docs.microsoft.com/en-us/samples/browse/?languages=qsharp)
* A tutorial for [writing your first Q# quantum program](xref:microsoft.quantum.write-program) and learning more about the basics of Q#
* A tutorial introduction to a Q# program (Grover’s search) that demonstrates the [different way of solving real problems with quantum computing](xref:microsoft.quantum.quickstarts.search)
natke marked this conversation as resolved.
Show resolved Hide resolved
* An introduction to the Q# libraries, our Quantum Katas, and other tools of the QDK that provide you with what you need to develop quantum programs for today’s greatest challenges

## Dive into the theory

Expand All @@ -44,3 +50,8 @@ You don’t have to learn this alone, there is a big community of amateurs and e
* If you have any questions about Q# or quantum computing don’t hesitate and take a look at the Quantum Computing StackExchange site. If you don’t find your specific question you can always ask a new one.
* Check out [Q# blog](https://devblogs.microsoft.com/qsharp/) and [Microsoft Quantum Blog](https://cloudblogs.microsoft.com/quantum/) to stay up to date with the latest news and resources about Q#.
* Check [Q# Community](https://qsharp.community/) and [Awesome Q#](https://project-awesome.org/ebraminio/awesome-qsharp) to look for more resources and material.

## Next steps

* [Learn quantum computing concepts with Q#](xref:microsoft.quantum.write-program)
* [Get started with the Microsoft Quantum Development Kit](xref:microsoft.quantum.welcome)
5 changes: 2 additions & 3 deletions articles/overview/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Five things you should know about quantum computing
description: Learn about quantum computing, what computers can do, and how you can learn quantum computing
author: natke
ms.author: nakersha
ms.date: 10/21/2019
ms.date: 10/22/2019
ms.topic: landing-page
uid: microsoft.quantum.overview.index
---
Expand All @@ -13,6 +13,5 @@ uid: microsoft.quantum.overview.index
* [What is quantum computing?](xref:microsoft.quantum.overview.what)
* [What can I do with a quantum computer?](xref:microsoft.quantum.overview.computers)
* [Why should I learn quantum computing?](xref:microsoft.quantum.overview.why)
* [How can I learn quantum computing?](xref:microsoft.quantum.overview.learn)
* [What is the Q# programming language?](xref:microsoft.quantum.overview.qsharp)

* [How can I learn quantum computing?](xref:microsoft.quantum.overview.learn)
19 changes: 9 additions & 10 deletions articles/overview/quantum-computers.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: What can quantum computers do?
description: Learn about the impact of quantum computing, from novel quantum algorithms to quantum inspired algorithms running on classical computers.
author: natke
ms.author: nakersha
ms.date: 10/16/2019
ms.date: 10/22/2019
ms.topic: article
uid: microsoft.quantum.overview.computers
---
natke marked this conversation as resolved.
Show resolved Hide resolved
Expand All @@ -26,12 +26,6 @@ Quantum computing is relevant to cryptography in two ways: the first is that cla

Quantum computing makes this factorization theoretically tractable (via Shor's algorithm). Whilst implementation of this algorithm is not physically possible with the current scale of quantum hardware, it has spawned development of quantum resistant algorithms to future-proof data security, including novel quantum algorithms for encryption and cryptographic key distribution.

## Quantum-inspired computing

Quantum-inspired algorithms are implemented with classical software, but use quantum principles for increased speed and accuracy.

Quantum-inspired algorithms are being applied to medical research. For example, to improve the accuracy of Magnetic Resonance Imaging (MRI) scans. Quantum-inspired computing is being used to optimize the configuration of the MRI machines for identification of specific diseases.

## Big data and machine learning

### Search
Expand All @@ -44,8 +38,13 @@ A great number of numerical calculations on classical computing consist mainly i

Fortunately, there exists a quantum algorithm that allows us to approximately solve the system exponentially faster than a classical computer. This opens the door to great speedups in every problem that needs the solution to linear systems of equations.

## Next steps
## Quantum-inspired computing

Quantum-inspired algorithms are implemented with classical software, but use quantum principles for increased speed and accuracy.

Write code to implement [Grover's algorithm](xref:microsoft.quantum.quickstarts.search)
Quantum-inspired algorithms are being applied to medical research. For example, to improve the accuracy of Magnetic Resonance Imaging (MRI) scans. Quantum-inspired computing is being used to optimize the configuration of the MRI machines for identification of specific diseases.

## Next steps

Learn how to implement quantum algorithms with the [Quantum Katas](xref:microsoft.quantum.overview.katas)
* [Why should I learn quantum computing?](xref:microsoft.quantum.overview.why)
* [Get started with the Microsoft Quantum Development Kit](xref:microsoft.quantum.welcome)
15 changes: 7 additions & 8 deletions articles/overview/what-is-qsharp.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,24 @@ title: What is Q#?
description: Learn about the Q#, a programming language created by Microsoft to develop applications for quantum computers
author: natke
ms.author: nakersha
ms.date: 10/16/2019
ms.date: 10/22/2019
ms.topic: article
uid: microsoft.quantum.overview.qsharp
---

# What is Q#?

Q# is a programming language created by Microsoft to develop applications for quantum computers.
Q# is a programming language with features that are special to quantum computing. Q# provides quantum programmers a framework that allows you to focus on the algorithms without having to care about technical details like gate sequence optimization or the physical implementation of a quantum computer.

The Q# programming language takes care of all the quantum computer's internal logic and provides you with an intuitive set of types, operations and logic expressions to develop algorithms without having to worry about the internal logic of the quantum computer.
The Q# programming language provides you with an intuitive set of types, operations and logic expressions to develop algorithms without having to worry about the internal logic of the quantum computer.

## We want to code algorithms, not draw circuits
natke marked this conversation as resolved.
Show resolved Hide resolved

While the circuit model has been very useful for many years in quantum computing research, here at Microsoft, we believe that developers can go beyond quantum circuits and develop quantum algorithms and applications using Q#. The Q# language was built to take advantage of what we’ve learned through decades of classical software development, and empower quantum developers with the high-level language functionality they have become accustomed to in classical programming.
While the circuit model has been very useful for many years in quantum computing research, here at Microsoft, we believe that developers can go beyond quantum circuits and develop quantum algorithms and applications using Q#. The Q# language was built to take advantage of what we’ve learned through decades of classical software development, and empower quantum developers with high-level language functionality specifically targeted for quantum computing.

## How does Q# work?

Q# is a programming language designed to be great at writing quantum programs, by providing features that are special to quantum computing. Q# provides quantum programmers a framework that allows them to focus on the algorithms without having to care about technical details like gate sequence optimization or the physical implementation of a quantum computer.

For example, one of the fundamental building blocks of Q# is the `Qubit` type, which cannot be copied or directly accessed, just like a real qubit. Instead, we can measure it and store the outcome of the measurement in a `Result` variable, a Q# type that can take two possible values: `Zero` and `One`. Constructs like this one guarantee that algorithms always respect the laws of quantum mechanics and can run correctly on quantum computers or simulators.
One of the fundamental building blocks of Q# is the `Qubit` type, which cannot be copied or directly accessed, just like a real qubit. Instead, we can measure it and store the outcome of the measurement in a `Result` variable, a Q# type that can take two possible values: `Zero` and `One`. Constructs like this one guarantee that algorithms always respect the laws of quantum physics and can run correctly on quantum computers or simulators.

Q# also includes classical logic features like conditionals or loops with some subtleties to make sure that all the quantum rules are being respected. For example, quantum operations need to be reversible. This enforces some constraints on the way loops are executed.

Expand All @@ -36,4 +34,5 @@ Q# provides you with an increasing number of libraries and user-defined types th

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Capital after colon:
With Q# you can take another path: Learn quantum...

## Next steps

Just as in classical computing, building programs on top of what others have already created will empower you to solve greater challenges. To know more about how you can learn quantum computing by coding in Q# check out [How to learn quantum computing](xref:microsoft.quantum.overview.learn).
* [How do I learn quantum computing?](xref:microsoft.quantum.overview.learn)
* [Get started with the Microsoft Quantum Development Kit](xref:microsoft.quantum.welcome)