# Quantum Computing Software and Programming

### - Overview

Quantum computing represents a new computing paradigm that utilizes the fundamental principles of quantum mechanics to perform calculations. The promise of quantum computing lies in the possibility to efficiently perform a few tasks, such as prime factorization, quantum simulation, search, optimization, and algebraic procedures (such as machine learning); even the largest classical computers have computational power beyond their capabilities.

The power of quantum computing rests on two cornerstones of quantum mechanics, interference and entanglement, which highlight the wave and particle aspects of quantum computing, respectively.

**- Quantum Programming**

Quantum programming is the process of assembling a sequence of instructions, called quantum programs, capable of running on a quantum computer. Quantum programming languages facilitate the use of high-level constructs to express quantum algorithms. The field is deeply rooted in the idea of open source, so most quantum software is freely available as open source software.

The Quantum Software Development Kit (SDK) provides a collection of tools for creating and manipulating quantum programs. They also provide a way to simulate quantum programs or prepare to run them using cloud-based quantum devices.

**- Quantum Algorithms**

In quantum computing, a quantum algorithm is an algorithm that operates on a real quantum computing model, the most commonly used model being a quantum circuit model of computation.

A classical (or non-quantum) algorithm is a finite sequence of instructions, or step-by-step steps used to solve a problem. A process in which each step or instruction can be executed on a classical computer. Likewise, quantum algorithms are a step-by-step process where each step can be executed on a quantum computer.

Although all classical algorithms can also be executed on quantum computers, the term quantum algorithm is often used for algorithms that appear to be quantum in nature, or use some of the fundamental features of quantum computing, such as quantum superposition or quantum entanglement.

Problems that cannot be determined using a classical computer are still indeterminable using a quantum computer. What is interesting about quantum algorithms is that they may solve some problems faster than classical algorithms, because quantum algorithms exploit quantum superposition and quantum entanglement that may not be efficiently simulated on a classical computer (see quantum supremacy).

The best known algorithms are Shor's algorithm for factoring and Grover's algorithm for searching unstructured databases or unordered lists. Shor's algorithm runs much faster (almost exponentially) than the most famous classical factorization algorithm (general-purpose number field sieve). For the same task, Grover's algorithm runs twice as fast as the best possible classical algorithm, [citation needed] linear search.

### - Qiskit Open-Source SDK

Qiskit [kiss-kit] (https://qiskit.org/) is an open-source software development kit (SDK) for working with quantum computers at the circuit, pulse, and algorithm levels. It provides tools for creating and manipulating quantum programs and running them on a prototype quantum device on the IBM Quantum Experience or a simulator on a local computer. It follows the circuit model of general quantum computing and can be used with any quantum hardware that follows this model (currently supports superconducting qubits and trapped ions).

Qiskit was founded by IBM Research to develop software for its cloud quantum computing service, IBM Quantum Experience. External supporters also contributed, often from academic institutions.

**[More to come ...]**