<<

Introduction to Quantum Programming

Jaroslaw Miszczak IITiS PAN

April 27, 2018 QIPLSIGML—Machine Learning meets Quantum Computation

Introduction to Quantum Programming 1/40 Our goals

Quantum programming

Manipulation of quantum gates

Programming QRAM

High-level programming

What next?

Q?

Introduction to Quantum Programming 2/40 I Introduce various approaches to quantum programming. I Write some code.

Our goals

I Understand the difference between quantum and classical programming.

Introduction to Quantum Programming 3/40 I Write some code.

Our goals

I Understand the difference between quantum and classical programming. I Introduce various approaches to quantum programming.

Introduction to Quantum Programming 3/40 Our goals

I Understand the difference between quantum and classical programming. I Introduce various approaches to quantum programming. I Write some code.

Introduction to Quantum Programming 3/40 Our goals

I Understand the difference between quantum and classical programming. I Introduce various approaches to quantum programming. I Write some code. ( Talk is cheap. Show me the quantum code.) ≡

Introduction to Quantum Programming 3/40 Quantum programming

Introduction to Quantum Programming 4/40 Quantum programming What is quantum programming?

Quantum programming is a process that leads from an original formulation of a computing problem to executable quantum computer programs.

Introduction to Quantum Programming 5/40 I The process of preparing programs for a quantum computer is especially attractive because it not only can be economically and scientifically rewarding, it can also be an aesthetic experience much like composing poetry or music. I Only the modern quantum computer has made quantum programming both challenging and relevant.

Quantum programming What is quantum programming?

I The only way to learn a new quantum is by writing programs in it.

Introduction to Quantum Programming 6/40 I Only the modern quantum computer has made quantum programming both challenging and relevant.

Quantum programming What is quantum programming?

I The only way to learn a new quantum programming language is by writing programs in it. I The process of preparing programs for a quantum computer is especially attractive because it not only can be economically and scientifically rewarding, it can also be an aesthetic experience much like composing poetry or music.

Introduction to Quantum Programming 6/40 Quantum programming What is quantum programming?

I The only way to learn a new quantum programming language is by writing programs in it. I The process of preparing programs for a quantum computer is especially attractive because it not only can be economically and scientifically rewarding, it can also be an aesthetic experience much like composing poetry or music. I Only the modern quantum computer has made quantum programming both challenging and relevant.

Introduction to Quantum Programming 6/40 I Play with . I Stretch your imagination by creating a new programming language with quantum elements... I ...or a language for describing quantum mechanics.

Quantum programming Why bother?

I Use real quantum computers.

Introduction to Quantum Programming 7/40 I Stretch your imagination by creating a new programming language with quantum elements... I ...or a language for describing quantum mechanics.

Quantum programming Why bother?

I Use real quantum computers. I Play with quantum mechanics.

Introduction to Quantum Programming 7/40 I ...or a language for describing quantum mechanics.

Quantum programming Why bother?

I Use real quantum computers. I Play with quantum mechanics. I Stretch your imagination by creating a new programming language with quantum elements...

Introduction to Quantum Programming 7/40 Quantum programming Why bother?

I Use real quantum computers. I Play with quantum mechanics. I Stretch your imagination by creating a new programming language with quantum elements... I ...or a language for describing quantum mechanics.

Introduction to Quantum Programming 7/40 I Level 1: Programming QRAM. I Level 2: High-level programming.

Quantum programming How to do quantum programming?

I Level 0: Manipulation of quantum gates.

Introduction to Quantum Programming 8/40 I Level 2: High-level programming.

Quantum programming How to do quantum programming?

I Level 0: Manipulation of quantum gates. I Level 1: Programming QRAM.

Introduction to Quantum Programming 8/40 Quantum programming How to do quantum programming?

I Level 0: Manipulation of quantum gates. I Level 1: Programming QRAM. I Level 2: High-level programming.

Introduction to Quantum Programming 8/40 Manipulation of quantum gates

Introduction to Quantum Programming 9/40 Manipulation of quantum gates

Level 0 Direct usage of quantum gates.

I Visual manipulation of gates and circuits. I Multiplication of matrices and vectors.

Introduction to Quantum Programming 10/40 Manipulation of quantum gates Visual manipulation of gates and circuits

https://quantumexperience.ng.bluemix.net/qx/editor

Introduction to Quantum Programming 11/40 Manipulation of quantum gates Visual manipulation of gates and circuits

http://www.quide.eu/ and https://bitbucket.org/quide/

Introduction to Quantum Programming 12/40 I Integration with text-based description of circuits: QASM (IBM Q) or # (QuIDE). I Useful for testing small circuits. I Not so much for real algorithms. I You have to live with connectivity limitations (IBM Q). I But you can use a real quantum computer!

Manipulation of quantum gates Visual manipulation of gates and circuits

I Direct manipulation of quantum gates, measurement.

Introduction to Quantum Programming 13/40 I Useful for testing small circuits. I Not so much for real algorithms. I You have to live with connectivity limitations (IBM Q). I But you can use a real quantum computer!

Manipulation of quantum gates Visual manipulation of gates and circuits

I Direct manipulation of quantum gates, measurement. I Integration with text-based description of circuits: QASM (IBM Q) or C# (QuIDE).

Introduction to Quantum Programming 13/40 I Not so much for real algorithms. I You have to live with connectivity limitations (IBM Q). I But you can use a real quantum computer!

Manipulation of quantum gates Visual manipulation of gates and circuits

I Direct manipulation of quantum gates, measurement. I Integration with text-based description of circuits: QASM (IBM Q) or C# (QuIDE). I Useful for testing small circuits.

Introduction to Quantum Programming 13/40 I You have to live with connectivity limitations (IBM Q). I But you can use a real quantum computer!

Manipulation of quantum gates Visual manipulation of gates and circuits

I Direct manipulation of quantum gates, measurement. I Integration with text-based description of circuits: QASM (IBM Q) or C# (QuIDE). I Useful for testing small circuits. I Not so much for real algorithms.

Introduction to Quantum Programming 13/40 I But you can use a real quantum computer!

Manipulation of quantum gates Visual manipulation of gates and circuits

I Direct manipulation of quantum gates, measurement. I Integration with text-based description of circuits: QASM (IBM Q) or C# (QuIDE). I Useful for testing small circuits. I Not so much for real algorithms. I You have to live with connectivity limitations (IBM Q).

Introduction to Quantum Programming 13/40 Manipulation of quantum gates Visual manipulation of gates and circuits

I Direct manipulation of quantum gates, measurement. I Integration with text-based description of circuits: QASM (IBM Q) or C# (QuIDE). I Useful for testing small circuits. I Not so much for real algorithms. I You have to live with connectivity limitations (IBM Q). I But you can use a real quantum computer!

Introduction to Quantum Programming 13/40 I ...quantum gates are just matrices (at most 4 4, and don’t mention the decoherence)... × I ...only the final step is somehow strange. I Real Programmers do in FORTRAN.

Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices

You already know that I quantum states are just vectors (at least we would like them to be)

Introduction to Quantum Programming 14/40 I ...only the final step is somehow strange. I Real Programmers do Quantum Computing in FORTRAN.

Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices

You already know that I quantum states are just vectors (at least we would like them to be) I ...quantum gates are just matrices (at most 4 4, and don’t mention the decoherence)... ×

Introduction to Quantum Programming 14/40 I Real Programmers do Quantum Computing in FORTRAN.

Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices

You already know that I quantum states are just vectors (at least we would like them to be) I ...quantum gates are just matrices (at most 4 4, and don’t mention the decoherence)... × I ...only the final step is somehow strange.

Introduction to Quantum Programming 14/40 Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices

You already know that I quantum states are just vectors (at least we would like them to be) I ...quantum gates are just matrices (at most 4 4, and don’t mention the decoherence)... × I ...only the final step is somehow strange. I Real Programmers do Quantum Computing in FORTRAN.

Introduction to Quantum Programming 14/40 Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices

For example, in Julia...

Introduction to Quantum Programming 15/40 Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices

For example, in Julia...

Examples in Wolfram can be found in the GitHub repo

Introduction to Quantum Programming 15/40 I ...you already know the language. I ...it is very easy to implement classical control. I ...it is relatively easy to take into account effects of decoherence.

I Because...

I Missing: the memory management. I And in most cases you don’t need all the power/libraries/etc coming with the host language.

Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices

I Actually this is almost as good as it gets!

Introduction to Quantum Programming 16/40 I ...you already know the language. I ...it is very easy to implement classical control. I ...it is relatively easy to take into account effects of decoherence. I Missing: the memory management. I And in most cases you don’t need all the power/libraries/etc coming with the host language.

Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices

I Actually this is almost as good as it gets! I Because...

Introduction to Quantum Programming 16/40 I ...it is very easy to implement classical control. I ...it is relatively easy to take into account effects of decoherence. I Missing: the memory management. I And in most cases you don’t need all the power/libraries/etc coming with the host language.

Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices

I Actually this is almost as good as it gets! I Because... I ...you already know the language.

Introduction to Quantum Programming 16/40 I ...it is relatively easy to take into account effects of decoherence. I Missing: the memory management. I And in most cases you don’t need all the power/libraries/etc coming with the host language.

Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices

I Actually this is almost as good as it gets! I Because... I ...you already know the language. I ...it is very easy to implement classical control.

Introduction to Quantum Programming 16/40 I Missing: the memory management. I And in most cases you don’t need all the power/libraries/etc coming with the host language.

Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices

I Actually this is almost as good as it gets! I Because... I ...you already know the language. I ...it is very easy to implement classical control. I ...it is relatively easy to take into account effects of decoherence.

Introduction to Quantum Programming 16/40 I And in most cases you don’t need all the power/libraries/etc coming with the host language.

Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices

I Actually this is almost as good as it gets! I Because... I ...you already know the language. I ...it is very easy to implement classical control. I ...it is relatively easy to take into account effects of decoherence. I Missing: the memory management.

Introduction to Quantum Programming 16/40 Manipulation of quantum gates Alternative approach: Manipulation of vectors and matrices

I Actually this is almost as good as it gets! I Because... I ...you already know the language. I ...it is very easy to implement classical control. I ...it is relatively easy to take into account effects of decoherence. I Missing: the memory management. I And in most cases you don’t need all the power/libraries/etc coming with the host language.

Introduction to Quantum Programming 16/40 I quantum-octave (Octave/Matlab): https://github.com/ZKSI/quantum-octave I QuTiP (Python library): http://qutip.org/

I Packages/matrix manipulation libraries:

I Many more at Quantiki https://quantiki.org/wiki/list-qc-simulators

Manipulation of quantum gates Where to go next?

I IBM Q Experience: https://quantumexperience.ng.bluemix.net/qx/editor

Introduction to Quantum Programming 17/40 I quantum-octave (Octave/Matlab): https://github.com/ZKSI/quantum-octave I QuTiP (Python library): http://qutip.org/ I Many more at Quantiki https://quantiki.org/wiki/list-qc-simulators

Manipulation of quantum gates Where to go next?

I IBM Q Experience: https://quantumexperience.ng.bluemix.net/qx/editor I Packages/matrix manipulation libraries:

Introduction to Quantum Programming 17/40 I QuTiP (Python library): http://qutip.org/ I Many more at Quantiki https://quantiki.org/wiki/list-qc-simulators

Manipulation of quantum gates Where to go next?

I IBM Q Experience: https://quantumexperience.ng.bluemix.net/qx/editor I Packages/matrix manipulation libraries: I quantum-octave (Octave/Matlab): https://github.com/ZKSI/quantum-octave

Introduction to Quantum Programming 17/40 I Many more at Quantiki https://quantiki.org/wiki/list-qc-simulators

Manipulation of quantum gates Where to go next?

I IBM Q Experience: https://quantumexperience.ng.bluemix.net/qx/editor I Packages/matrix manipulation libraries: I quantum-octave (Octave/Matlab): https://github.com/ZKSI/quantum-octave I QuTiP (Python library): http://qutip.org/

Introduction to Quantum Programming 17/40 Manipulation of quantum gates Where to go next?

I IBM Q Experience: https://quantumexperience.ng.bluemix.net/qx/editor I Packages/matrix manipulation libraries: I quantum-octave (Octave/Matlab): https://github.com/ZKSI/quantum-octave I QuTiP (Python library): http://qutip.org/ I Many more at Quantiki https://quantiki.org/wiki/list-qc-simulators

Introduction to Quantum Programming 17/40 Programming QRAM

Introduction to Quantum Programming 18/40 Programming QRAM What is QRAM?

QRAM Quantum Random Access Machine ≡

the sequence of elementary gates the description of algorithm in abstract model

QCL Quantum Computation Language (32 , seed 1156322590) [0/32] 1 |0> qcl> qureg a[10]; qcl> H(a);[10/32] 0.03125 |0> + ... + 0.03125 |1023> (1024 terms) qcl> CNot(a[2],a[5]);[10/32] 0.03125 |0> + ... + 0.03125 |1023> (1024 terms) qcl> list a; : global a = <0,1,2,3,4,5,6,7,8,9> qureg a[10] qcl> dump a[1]; qcl> : SPECTRUM a[1]: <1>0.5 |0>, 0.5 |1>qcl>

Quantium III

probability distribution classical controlling device for further analysis the outcome of measurement

Introduction to Quantum Programming 19/40 I compound quantum operations

I classical control of quantum operations

Programming QRAM Advantages of QRAM

I data abstraction

Introduction to Quantum Programming 20/40 I compound quantum operations

I classical control of quantum operations

Programming QRAM Advantages of QRAM

I data abstraction allocation of quantum memory ≡

Introduction to Quantum Programming 20/40 I classical control of quantum operations

Programming QRAM Advantages of QRAM

I data abstraction allocation of quantum memory ≡ I compound quantum operations

Introduction to Quantum Programming 20/40 I classical control of quantum operations

Programming QRAM Advantages of QRAM

I data abstraction allocation of quantum memory ≡ I compound quantum operations functions encapsulating sequence of quantum gates or quantum≡ primitives

Introduction to Quantum Programming 20/40 Programming QRAM Advantages of QRAM

I data abstraction allocation of quantum memory ≡ I compound quantum operations functions encapsulating sequence of quantum gates or quantum≡ primitives I classical control of quantum operations

Introduction to Quantum Programming 20/40 Programming QRAM Advantages of QRAM

I data abstraction allocation of quantum memory ≡ I compound quantum operations functions encapsulating sequence of quantum gates or quantum≡ primitives I classical control of quantum operations loops, ifs etc. mixed with quantum code ≡

Introduction to Quantum Programming 20/40 Programming QRAM Software architecture

(embeded) intermediate low-level QIR control pulses DSL representation

gate pyQuil Quil 19Q Acorn library

Introduction to Quantum Programming 21/40 I data abstraction allocation of classical and quantum registers based on→ qu(b d)its | I quantum functions custom elementary gates defined by matrices or compound→ statements I classical control of quantum memory by using host language →

Programming QRAM Quantum middleware

I embedded domain specific language C/Python/Wolfram/Haskell with library→ of functions

Introduction to Quantum Programming 22/40 I quantum functions custom elementary gates defined by matrices or compound→ statements I classical control of quantum memory by using host language →

Programming QRAM Quantum middleware

I embedded domain specific language C/Python/Wolfram/Haskell with library→ of functions I data abstraction allocation of classical and quantum registers based on→ qu(b d)its |

Introduction to Quantum Programming 22/40 I classical control of quantum memory by using host language →

Programming QRAM Quantum middleware

I embedded domain specific language C/Python/Wolfram/Haskell with library→ of functions I data abstraction allocation of classical and quantum registers based on→ qu(b d)its | I quantum functions custom elementary gates defined by matrices or compound→ statements

Introduction to Quantum Programming 22/40 Programming QRAM Quantum middleware

I embedded domain specific language C/Python/Wolfram/Haskell with library→ of functions I data abstraction allocation of classical and quantum registers based on→ qu(b d)its | I quantum functions custom elementary gates defined by matrices or compound→ statements I classical control of quantum memory by using host language →

Introduction to Quantum Programming 22/40 I auto-magic quantum memory management I integration with classical machine

Programming QRAM ...its advantages...

I easy to learn and use

Introduction to Quantum Programming 23/40 I integration with classical machine

Programming QRAM ...its advantages...

I easy to learn and use I auto-magic quantum memory management

Introduction to Quantum Programming 23/40 Programming QRAM ...its advantages...

I easy to learn and use I auto-magic quantum memory management I integration with classical machine

Introduction to Quantum Programming 23/40 I lack of expressibility

Programming QRAM ...and its disadvantages

I very similar to low-level code

Introduction to Quantum Programming 24/40 Programming QRAM ...and its disadvantages

I very similar to low-level code I lack of expressibility

Introduction to Quantum Programming 24/40 Programming QRAM Example 1: ProjectQ

I Python library developed by ETH (https://projectq.ch/) I offers various targets I hardware (IBM Q Experience) I resource counter (???) I graphical circuit representation

Introduction to Quantum Programming 25/40 Programming QRAM Example 1: ProjectQ

Introduction to Quantum Programming 26/40 Programming QRAM Example 1: ProjectQ

Nice features I Natural (for physicist) syntax for executing quantum gates. I Meta instructions for quantum-controlled quantum operations and support for reverse call

Introduction to Quantum Programming 27/40 Programming QRAM Example 1: ProjectQ

Some examples...

Introduction to Quantum Programming 28/40 Programming QRAM Example 1: ProjectQ

Metainstruction Control Execution of the code is based on the state of quantum register.

0 H | i

0 H | i

0 | i

Introduction to Quantum Programming 29/40 Programming QRAM Example 1: ProjectQ

Metainstruction Dagger Reverse execution of the quantum code.

0 H H | i

0 | i

Introduction to Quantum Programming 30/40 I pyQuil Python library for manipulating quantum programmes≡ in Quill. I Access to Rigetti 19Q-Acorn quantum computer! I More during the third day: Adam Szady, Quantum programming with (Py)Quil.

Programming QRAM Example 2: Rigetti Forest and pyQuil

I Quil quantum . ≡

Introduction to Quantum Programming 31/40 I Access to Rigetti 19Q-Acorn quantum computer! I More during the third day: Adam Szady, Quantum programming with (Py)Quil.

Programming QRAM Example 2: Rigetti Forest and pyQuil

I Quil quantum assembly language. ≡ I pyQuil Python library for manipulating quantum programmes≡ in Quill.

Introduction to Quantum Programming 31/40 I More during the third day: Adam Szady, Quantum programming with (Py)Quil.

Programming QRAM Example 2: Rigetti Forest and pyQuil

I Quil quantum assembly language. ≡ I pyQuil Python library for manipulating quantum programmes≡ in Quill. I Access to Rigetti 19Q-Acorn quantum computer!

Introduction to Quantum Programming 31/40 Programming QRAM Example 2: Rigetti Forest and pyQuil

I Quil quantum assembly language. ≡ I pyQuil Python library for manipulating quantum programmes≡ in Quill. I Access to Rigetti 19Q-Acorn quantum computer! I More during the third day: Adam Szady, Quantum programming with (Py)Quil.

Introduction to Quantum Programming 31/40 High-level programming Domain specific languages

Level 2 Domain specific language with data and function abstraction.

I QCL (http://tph.tuwien.ac.at/~oemer/qcl.html) I LanQ (http://lanq.sourceforge.net/) I QPL anc cQPL (https://arxiv.org/abs/quant-ph/0511145) I Scaffold (https://github.com/epiqc/ScaffCC)

Introduction to Quantum Programming 32/40 I Architecture independent programming language for quantum computers.

High-level programming Example 1: QCL – focus on quantum computing

I First release in 1998, last in 2014 (http://tph.tuwien.ac.at/~oemer/qcl.html).

Introduction to Quantum Programming 33/40 High-level programming Example 1: QCL – focus on quantum computing

I First release in 1998, last in 2014 (http://tph.tuwien.ac.at/~oemer/qcl.html). I Architecture independent programming language for quantum computers.

Introduction to Quantum Programming 33/40 I Different types of quantum memory for better optimization. I Quantum conditions — quantum-controlled execution (generalization of controlled gates). I Various types of compound statements (related with memory management): quantum operators, quantum functions, procedures.

High-level programming Example 1: QCL – focus on quantum computing

Features I Syntax for reversibility (uncomputing).

Introduction to Quantum Programming 34/40 I Quantum conditions — quantum-controlled execution (generalization of controlled gates). I Various types of compound statements (related with memory management): quantum operators, quantum functions, procedures.

High-level programming Example 1: QCL – focus on quantum computing

Features I Syntax for reversibility (uncomputing). I Different types of quantum memory for better optimization.

Introduction to Quantum Programming 34/40 I Various types of compound statements (related with memory management): quantum operators, quantum functions, procedures.

High-level programming Example 1: QCL – focus on quantum computing

Features I Syntax for reversibility (uncomputing). I Different types of quantum memory for better optimization. I Quantum conditions — quantum-controlled execution (generalization of controlled gates).

Introduction to Quantum Programming 34/40 High-level programming Example 1: QCL – focus on quantum computing

Features I Syntax for reversibility (uncomputing). I Different types of quantum memory for better optimization. I Quantum conditions — quantum-controlled execution (generalization of controlled gates). I Various types of compound statements (related with memory management): quantum operators, quantum functions, procedures.

Introduction to Quantum Programming 34/40 I quconst — cannot be modified, I quvoid — has to be empty before the call, I quscratch — has to be empty before and after the call.

High-level programming Example 1: QCL – focus on quantum computing

Advanced quantum memory management using types: I qureg — basic type for quantum registers,

Introduction to Quantum Programming 35/40 I quvoid — has to be empty before the call, I quscratch — has to be empty before and after the call.

High-level programming Example 1: QCL – focus on quantum computing

Advanced quantum memory management using types: I qureg — basic type for quantum registers, I quconst — cannot be modified,

Introduction to Quantum Programming 35/40 I quscratch — has to be empty before and after the call.

High-level programming Example 1: QCL – focus on quantum computing

Advanced quantum memory management using types: I qureg — basic type for quantum registers, I quconst — cannot be modified, I quvoid — has to be empty before the call,

Introduction to Quantum Programming 35/40 High-level programming Example 1: QCL – focus on quantum computing

Advanced quantum memory management using types: I qureg — basic type for quantum registers, I quconst — cannot be modified, I quvoid — has to be empty before the call, I quscratch — has to be empty before and after the call.

Introduction to Quantum Programming 35/40 I qufunct — used to implement irreversible functions, I operator — compound quantum operation.

High-level programming Example 1: QCL – focus on quantum computing

Types of quantum functions: I procedure — classically controlled quantum computation,

Introduction to Quantum Programming 36/40 I operator — compound quantum operation.

High-level programming Example 1: QCL – focus on quantum computing

Types of quantum functions: I procedure — classically controlled quantum computation, I qufunct — used to implement irreversible functions,

Introduction to Quantum Programming 36/40 High-level programming Example 1: QCL – focus on quantum computing

Types of quantum functions: I procedure — classically controlled quantum computation, I qufunct — used to implement irreversible functions, I operator — compound quantum operation.

Introduction to Quantum Programming 36/40 High-level programming Example 1: QCL – focus on quantum computing

Some examples...

Introduction to Quantum Programming 37/40 I Functional paradigm. I No publicly available implementation. I Syntax for creating quantum communication channels by sharing (entangled) qubits.

High-level programming Example 2: cQPL – focus on quantum communication

I QPL (formal specification) and cQPL (implementation of QPL, https://arxiv.org/abs/quant-ph/0511145)

Introduction to Quantum Programming 38/40 I No publicly available implementation. I Syntax for creating quantum communication channels by sharing (entangled) qubits.

High-level programming Example 2: cQPL – focus on quantum communication

I QPL (formal specification) and cQPL (implementation of QPL, https://arxiv.org/abs/quant-ph/0511145) I Functional paradigm.

Introduction to Quantum Programming 38/40 I Syntax for creating quantum communication channels by sharing (entangled) qubits.

High-level programming Example 2: cQPL – focus on quantum communication

I QPL (formal specification) and cQPL (implementation of QPL, https://arxiv.org/abs/quant-ph/0511145) I Functional paradigm. I No publicly available implementation.

Introduction to Quantum Programming 38/40 High-level programming Example 2: cQPL – focus on quantum communication

I QPL (formal specification) and cQPL (implementation of QPL, https://arxiv.org/abs/quant-ph/0511145) I Functional paradigm. I No publicly available implementation. I Syntax for creating quantum communication channels by sharing (entangled) qubits.

Introduction to Quantum Programming 38/40 What next?

I IF D-Wave GOTO Andy Mason and Sheir Yarkoni, Tutorial on programming the D-Wave system I IF IBM GOTO Ram Duˇsi´cHren, IBM Q Experience: Hands-on workshop I IF Rigetti GOTO Adam Szady, Quantum programming with (Py)Quil

Introduction to Quantum Programming 39/40 Q?

Q? https://github.com/jmiszczak/qprog-tutorial

Introduction to Quantum Programming 40/40