Welcome to the Quantum World (Week 0)


Core 1 - Introduction to Quantum


  Rúben André Barreiro


Brief Description of this Course


  • This course it's suitable also to, beginner and intermediate users, with strictly minimum necessary background at Mathematics, Linear Algebra, Computer Science/Engineering and Programming (most specifically, using Python environments), with no strictly necessary background at Quantum Physics/Mechanics (but, it's strongly recommended).

  • If you're familiar with the basic concepts of Quantum Physics/Mechanics, you're encouraged to move forward in this course, to the Core 2 - Introduction to Quantum Computing.

  • If you already have some background and experience of what Quantum Computing it's all about and feel comfortable with it, you should feel completely free to move forward in this course, to the Core 3 - Discovering the Quantum Computing.

  • This course will be focused on learning by doing, in a step by step fashion, like "Quantum Computing for Dummies". So, don't be nervous!!! A little sense of humor throughout this course, in several occasions, will help you to try to relax a little, I hope!!!

  • It was used, reviewed and adapted some articles, papers, tutorials and examples (among many others) in several topics, which have applications of Quantum Computing, in order to build and develop the materials for this course.

  • Some of the examples and images used in this course was completely designed and built by myself, in order to try to make the understanding of its contents much easier and simpler for the user and/or reader.

  • Initially, it will be addressed the basic fundamentals and concepts of, Quantum Physics/Mechanics and Quantum Theory, which are in the basis of the study and research of Quantum Computing.

  • Then, it will be explained on which consists the Quantum Computing and the important advantages and results which it can bring to the society. It will be also addressed, the differences of it, in comparison to Classical Computing, its challenges, its Current State of Art and the R&D areas on which it will applied, in a near future.

  • Finally, it will be explored some more complex features, solving some exercises based on Quantum Computing, using IBM Q Experience, Qiskit, Google Cirq, Microsoft Quantum Development Kit (Microsoft QDK), Q# (Q-Sharp), among many other Frameworks/Tools, in a more efficient fashion, in comparison with Classical Computing, using its inherent properties.



*** © Rúben André Barreiro - Learning Quantum Computing (Online Web Course) - All rights reserved ***


Course Overview



*** © Rúben André Barreiro - Learning Quantum Computing (Online Web Course) - All rights reserved ***


Important and Relevant Bibliography


The strongly recommended Bibliography for this course it's the following:

  • Quantum Computation and Quantum Information - Michael Nielsen and Isaac Chuang:

    • University of Cambridge Press (10th Anniversary Edition, 2010)

    • Considered commonly as ”The Bible” of the Quantum Computing

  • Quantum Information Processing: From Theory to Experiment - Dimitris Angelakis, Matthias Christandl, Artur Ekert, Alastair Kay and Sergeu Kulik:

    • IOS Press (2004)

    • NATO Advanced Study Institute on Quantum Computation and Quantum Information

  • Quantum Computing: A Gentle Introduction - Eleanor Rieffel and Wolfgang Polak

      The MIT Press (2011)

  • From Classical to Quantum Shannon Theory - Mark Wilde:

      Cambridge University Press (2019)



Other possible (less important) Bibliography for this course it's the following:

  • Quantum Information Theory and The Foundations of Quantum Mechanics - Christopher Timpson:

    • The Queen's College (Trinity Term, 2004)

    • A thesis submitted for the degree of Doctor of Philosophy at the University of Oxford

  • Quantum Walks for Computer Scientists - Salvador Venegas-Andraca:

    • Morgan & Claypool and Quantum Information Processing Group, Tecnológico de Monterrey, Campus Estado de México (2008)

  • Quantum Computation: Lecture Notes - Ashley Montanaro:

    • School of Mathematics of University of Bristol (Spring, 2008)

  • Quantum Computing: Lecture Notes - Ronald de Wolf:

    • QuSoft, CWI and University of Amsterdam (2019)

  • Quantum Mechanics: An Introduction - Walter Greiner:

    • Springer (4th Edition, 2000)

  • Quantum Physics - Stephen Gasiorowicz:

    • Wiley (3rd Edition, 2003)



*** © Rúben André Barreiro - Learning Quantum Computing (Online Web Course) - All rights reserved ***


The Necessary Frameworks/Tools for this Course



  • Anaconda - https://www.anaconda.com/

    • Platform Distribution for Data Science, Machine Learning and Deep Learning, performed in Python/R environments




  • Python - https://www.python.org/

    • Interpreted, object-oriented, high-level programming language with dynamic semantics, high-level built in data structures, combined with dynamic typing and dynamic binding, make it very attractive for Rapid Application Development, as well as for use as a scripting or glue language to connect existing components together



  • IPython (Interactive Computing) - https://www.ipython.org/

    • Rich architecture for interactive computing, in Python environments with a powerful interactive shell, a kernel for Jupyter, support for interactive data visualization and use of GUI toolkits, flexible, embeddable interpreters to load into your own projects and high performance tools for parallel computing



  • Binder - https://mybinder.org/

    • Notebooks in an executable environment, making the source code immediately reproducible by anyone, anywhere



  • Colab - https://colab.research.google.com/

    • Free Jupyter Notebook environment that requires no setup and runs entirely in the cloud



  • Jupyter Notebook - https://jupyter.org/

    • Framework/Tool to develop open-source software, open-standards, and services for interactive computing across dozens of programming languages



  • Jupyter Books - http://jupyterbook.org/

    • Framework/Tool to build an online book using a collection of Jupyter Notebooks and Markdown files



  • Cython - https://cython.org/

    • Optimising static compiler for both the Python programming language and the extended Cython programming language (based on Pyrex)



  • Jython - https://jython.org/

    • Java implementation of Python that combines expressive power with clarity



  • Matplotlib - https://matplotlib.org/

    • Python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms



  • NumPy - https://numpy.org/

    • Fundamental package for scientific computing with Python, containing a powerful N-dimensional array object, sophisticated (broadcasting) functions, tools for integrating C/C++ and Fortran code and useful linear algebra, Fourier transform, and random number capabilities



  • Pandas - https://pandas.pydata.org/

    • Open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language



  • PyTorch - https://pytorch.org/

    • Open source machine learning framework that accelerates the path from research prototyping to production deployment



  • SciKit Learn - https://scikit-learn.org/stable/

    • Free software machine learning library for the Python programming language



  • SciPy - https://www.scipy.org/

    • Python-based ecosystem of open-source software for mathematics, science and engineering



  • SymPy - https://www.sympy.org/en/index.html

    • Python library for symbolic mathematics computation



  • TensorFlow - https://www.tensorflow.org/

    • End-to-end open source machine learning platform



  • QuTip - http://qutip.org/

    • Open-source software for simulating the dynamics of open quantum systems



  • NetSquid - https://netsquid.org/

    • The world's first network simulator that's capable of simulating the decay of quantum information over time together with noisy operations and stochastic feedback loops



  • SimulaQron - http://www.simulaqron.org/

    • Application level simulator for a Quantum Internet that allows you to program your own Quantum Internet applications



  • ProjectQ - https://projectq.ch/

    • Open-source software framework for quantum computing started at ETH Zurich



  • Quantum Inspire - https://www.quantum-inspire.com/

    • Quantum computing platform designed and built by QuTech, providing to users access to various technologies to perform quantum computations



*** © Rúben André Barreiro - Learning Quantum Computing (Online Web Course) - All rights reserved ***


Some Interesting Communities and Groups



*** © Rúben André Barreiro - Learning Quantum Computing (Online Web Course) - All rights reserved ***


The Author of this Course







*** © Rúben André Barreiro - Learning Quantum Computing (Online Web Course) - All rights reserved ***


Credits and Special Thanks



*** © Rúben André Barreiro - Learning Quantum Computing (Online Web Course) - All rights reserved ***


Proposed Exercises



Setup, Configuration and Usage of IBM Q Experience
1. Creation of an account in IBM Q Experience

  • i. Go to https://quantum-computing.ibm.com/, you will see the following Website's interface



  • ii. Click in the option of Create an IBMid account, on the right side of the Website's interface



  • iii. It will be shown the following Website's interface and respective form for the creation of a new IBMid acccount



  • iv. Fill the form for the creation of a new IBMid acccount with your personal data and information



  • v. After fill completely the form for the creation of a new IBMid acccount, click in the option of Continue



  • vi. Complete the following verification captcha



  • vii. Go check the e-mail used in the form for the creation of a new IBMid acccount, copy and enter the 7 digit verification code to the following text-area presented in the Website's interface shown and then, click in verify



  • viii. Fill one more last form asking you for more personal data and information



  • ix. Go check the e-mail used in the form for the creation of a new IBMid acccount, you should receive an e-mail with a confirmation of the creation of a new IBMid acccount successfully



  • x. After the creation of a new IBMid acccount, you can always login again, using the used credentials during the fulfillment of the form with your personal data and information




2. Configuration of an account in IBM Q Experience

  • i. After the creation of an account in IBM Q Experience, you should be able to see and access to your personal dashboard, presented as the following



  • ii. In the top right corner, you should be able to access the tab associated to your account settings/configurations



  • iii. Go there and click in My Account tab



  • iv. Then, you should be able to see the following Website interface, presenting some possible personal settings/configurations



  • v. And, you can also check your providers, i.e., the Quantum Computers/Processors which you have access to, and can use, to run your algorithms and simulations



  • vi. After, the creation of a new IBMid acccount and the respectively, first access to your IBM Q Experience account, you should immediately verify the e-mail used in the registration form, in order to be able to use all the features offered by the system



  • vii. After verifying the e-mail used in the registration form, your personal e-mail should appear as verified in the My Account settings/configurations interface



  • viii. And then, you also should be able to see your personal e-mail, in the tabs' menu on the top right corner




3. The Providers/Backends (Quantum Machines) available in your IBM Q Experience

  • i. In the right side of the Dashboard of your IBM Q Experience Website's interface, you can check the providers/backends which you have access to



  • ii. Selecting one of the providers/backends which you have access to, you can check its statistics/specifications



  • iii. You can also download the calibration status values of its several components, in .CSV format, similary to the following presented




4. Online Tools available in IBM Q Experience

  • i. In the left sidebar of your IBM Q Experience Website's interface, you can check the following tools:
    • Results
    • Circuit Composer
    • Qiskit Notebooks




  • ii. In the option Results, you can check the executions/simulations of you Quantum Circuits and Quantum Algorithms, which are executing or already executed









  • iii. In the option Circuit Composer, you can create and build your Quantum Circuits, or even, import them, through OpenQASM (Open Quantum Assembly Language), which is a Low-Level Language for expressing Quantum Circuits, and is one of the first programming languages for Quantum Computing













  • iv. In the option Qiskit Notebooks, you can see and use some tutorials, already given by the IBM Q Experience application, based on the interactive framework Jupyter Notebook, or even, create your own interactive tutorials of Quantum Computing












Setup, Configuration and Usage of Anaconda

⚠️ Notes:
  • The Anaconda distribution already contains some frameworks/tools by default, such as Python, NumPy, Matplotlib, among others

  • But it's strongly recomended to install each one of them separately




      

Setup, Configuration and Usage of IPython and Jupyter Notebook

⚠️ Notes:




Setup, Configuration and Usage of Qiskit

⚠️ Notes:




Setup, Configuration and Usage of Cython: C-Extensions for Python

⚠️ Notes:
  • You can see the Documentation/User's Guide here

  • And you can also, check some Tutorials here






Setup, Configuration and Usage of Jython: Python for the Java Platform

⚠️ Notes:
  • You can see the Documentation/User's Guide and some Tutorials here






Setup, Configuration and Usage of Matplotlib

⚠️ Notes:
  • You can see the Documentation/User's Guide here (in Online and PDF versions)

  • And you can also, check some Tutorials here






Setup, Configuration and Usage of NumPy

⚠️ Notes:
  • You can see the Documentation/User's Guide here (in Online and PDF versions)

  • And you can also, check some Tutorials here






Setup, Configuration and Usage of Pandas

⚠️ Notes:
  • You can see the Documentation/User's Guide here (in Online and PDF versions)

  • And you can also, check some Tutorials here






Setup, Configuration and Usage of PyTorch

⚠️ Notes:
  • You can see the Documentation/User's Guide here

  • And you can also, check some Tutorials here






Setup, Configuration and Usage of SciKit Learn

⚠️ Notes:
  • You can see the Documentation/User's Guide here

  • And you can also, check some Tutorials here






Setup, Configuration and Usage of SciPy

⚠️ Notes:
  • You can see the Documentation/User's Guide here

  • And you can also, check some Tutorials here






Setup, Configuration and Usage of SymPy

⚠️ Notes:
  • You can see the Documentation/User's Guide here

  • And you can also, check some Tutorials here






Setup, Configuration and Usage of TensorFlow

⚠️ Notes:
  • You can see the Documentation/User's Guide here

  • And you can also, check some Tutorials here






Setup, Configuration and Usage of QuTiP: Quantum Toolbox in Python

⚠️ Notes:
  • You can see the User's Guide Documentation here (in Online and PDF versions)

  • And you can also, check some Tutorials here





*** © Rúben André Barreiro - Learning Quantum Computing (Online Web Course) - All rights reserved ***