name: qdk-programming description: "QDK programming guide for Q#, OpenQASM, and the qsharp/qdk Python API. Use when: writing or editing Q# or OpenQASM code, running quantum programs, resource estimation, circuit generation, noisy simulation, Azure Quantum submission, Qiskit/Cirq/PennyLane interop, or Q# testing and standard library usage."
QDK Programming
Quantum programming with the Microsoft Quantum Development Kit (QDK).
Two Modes
Most QDK features work in two modes:
- Tool mode — use provided tools to work with standalone
.qs/.qasmfiles directly. No Python required. - Python mode — the user writes Python scripts or Jupyter notebooks, using the
qsharp/qdkPython packages as a driver for Q#/OpenQASM programs.
Default to tool mode unless the user is already working in Python or the feature is Python-only.
Reference Files
| File | Content |
|---|---|
| qsharp.md | Q# language syntax, types, quantum operations, standard library, project structure |
| openqasm.md | OpenQASM 2.0/3.0 syntax, standard gates, version differences |
| python.md | qsharp/qdk Python API for execution, estimation, circuits, noise, Azure, Qiskit/Cirq, setup |
Features
| Feature | Tool mode | Python mode |
|---|---|---|
| Writing Q# code | Read qsharp.md | Read qsharp.md |
| Writing OpenQASM code | Read openqasm.md | Read openqasm.md |
| Running a program | qdkRunProgram | python.md — Running Q# Code |
| Resource estimation | qdkRunResourceEstimator | python.md — Resource Estimation |
| Circuit diagrams | qdkGenerateCircuit | python.md — Circuit Generation |
| Azure Quantum | Use the azureQuantum* tools | python.md — Azure Quantum |
| Noisy simulation | — (Python only) | python.md — Noisy Simulation |
| Q#/OpenQASM in Python and/or Jupyter | — (inherently Python) | python.md |
| Qiskit / Cirq / PennyLane interop | — (inherently Python) | python.md — Framework Interop |
Deprecations
- The QDK was rewritten in 2024. It no longer uses the IQ# Jupyter kernel or
dotnetCLI tools.