1 Background
1.1 Historical development of quantum theory
1.2 Reality without realism
2 Basics of quantum mechanics
2.1 Quantum state
2.2 Superposition
2.3 Born rule
2.4 Observables
2.5 State evolution
2.6 Larger systems2.7 Postulates of quantum mechanics
2.8 Entanglement
2.9 Bell's theorem
2.10 No-cloning theorem
Part Two
3 Getting Started with Quantum Programming
3.1 Setting up QDK environment
3.2 Getting started with Q#
4 Quantum Computing
4.1 History
4.2 Qubits
4.3 Quantum circuits
4.4 Superposition
4.5 Pauli gates
4.5.1 I gate
4.5.2 X gate
4.5.3 Z gate
4.5.4 Y gate
4.5.5 Summary4.6 Rotation gates
4.6.1 Rz gate
4.6.2 S gate
4.6.3 T gate
4.6.4 Rx and Ry gates
4.7 Multi qubit gates
4.7.1 Controlled gates
4.7.2 CNOT gate
4.7.3 SWAP gate4.7.4 CZ gate
4.7.5 Toffoli gate
4.8 Gate universality
5 Entanglement
5.1 Basics
5.2 Bell's inequalities
5.3 CHSH Game
5.4 Teleportation
5.5 Superdense coding
5.6 Entanglement as a resource6 Quantum Key Distribution
6.1 One-time pad encryption
6.2 BB84 protocol
6.3 B92 protocol
6.4 EPR-based quantum key distribution
Part Three
7 Algorithms
7.1 Deutsch-Jozsa Algorithm
7.2 QuantumSearch
7.3 Useful Algorithm Components
7.3.1 QFT7.3.2 QPE
7.4 Shor's Algorithm