11/24/18

Week #47's Wednesday Evening Training: Hands-on with Quantum Computing, a practical introduction using Qiskit (part 2)

This was actually our third Wednesday Evening Training on Quantum computing (for the other sessions, see the resources below. This evening, one of our Quantum Computer champions, Julian van Velzen, gave us a demo and walkthrough of a handson lab to solve a pattern matching problem.



In the handson labs, we implemented this algorithm ourselves using the Qiskit. This is an open-source quantum computing framework for leveraging today's quantum processors in research, education, and business (see the links to resources below).

To find a useful application of Quantum computing, you need to connect the theoretical math problems a Quantum computer can solve to real life problems and user stories. Think of matching problems, route optimizations et cetera for problems that cannot be solved efficiently or not at all by classical computers. We had an inspiring brainstorm on which type of problems and opportunities our clients could use Quantum computing.

 

At the end of the evening, had a nice discussion on the math involved. There a few topics that need refreshment, so we planned a math Intermezzo in next week;s Wednesday Evening Training.

In the next Wednesday Evening Training session on Quantum computing, we will continue our labs. There is a lot to learn!


Further reading

Do you want to read more on the topics in this post? Here are some links…

Past Wednesday Evening Trainings on Quantum computing (and a lot of resources!)
This week's Wednesday Evening Training: Quantum Computers are coming!: https://hansrontheweb.blogspot.com/2018/08/this-weeks-wednesday-evening-training_30.html
Week #44's Wednesday Evening Training: Hands-on with Quantum Computing, a practical introduction using Qiskit (part 1): https://hansrontheweb.blogspot.com/2018/11/week-44s-wednesday-evening-training.html

Quantum computing: an introduction and a lot of links to resources: https://hansrontheweb.blogspot.com/2018/11/quantum-computing-introduction.html

Video's on my YouTube Channel on Quantum Computers: https://www.youtube.com/watch?v=2B680d-qvhI&list=PLSiMhBs48YvWecXqKP00NGuiP5UD6RoCk

Past Wednesday Evening Trainings on all topics

You 'll find post of previous sessions here: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining


#wednesdayeveningtraining #capgemini #lifeatcapgemini #quantumcomputing #qiskit


 



11/14/18

Week #46's Wednesday Evening Training: An introduction to Python and its use

In this introduction, one of our Python experts Sebastiaan de Leeuw explained us the basics of Python. Python is a script language that you can use for for all sorts of applications. In our Wednesday Evening Trainings, for example, we allready encountered Python in IoT (scripting for the Raspberry Pi), Quantum computing and server side API scripting. But in data analysis / data science and artificial Intelligence / Machine learning Python is heavily used. You can even find games implemented in Python. Actually, platforms like YouTube, Spotify and NASA platforms are based on Python... so: professionals stuff with a community of 1-4 million users. Python is a versatile language, seems to me like a worthy successor of Basic.

By the way: Python was invented by Guido van Rossum, and the name was inspired by Monty Python.



Let's do it!

After having been explained the variable system, language structure, expressions et cetera, we did some hands on labs together. There is a lot of different IDE's and editors available for Python (see the resources below), for this evening we used Azure based Jupyter Notebooks. A Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code (e.g. Python), equations, visualizations and narrative text. In short: interactive and intelligent documents. See the resources for more on Jupyter Notebooks.

As a group lab, we implemented a basic N-gram analyzer in which comments on a discussion forum were usage of words from a fixed list were counted.

Interesting stuff, both Python and Jupyter!




Further reading

Do you want to read more on the topics in this post? Here are some links…

Python:
Python community & documentation: https://www.python.org/
My YouTube channel on Python: https://www.youtube.com/playlist?list=PLSiMhBs48YvXYl3Jsjnn3Zf_xra_8iyM-

IDE & tooling:
PyCharm (PyCharm is a dedicated Python and Django IDE providing a wide range of essential tools for Python developers, tightly integrated together to create a convenient environment for productive Python development and Web development.): https://www.jetbrains.com/help/pycharm
Python Tools for Visual Studio: https://en.wikipedia.org/wiki/Python_Tools_for_Visual_Studio
PyDev (Python IDE for Eclipse, which may be used in Python, Jython and IronPython development): http://www.pydev.org/
Microsoft Azure Notebooks: https://notebooks.azure.com
Comparison of integrated development environments that support Python: https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#Python
Notepad++ (my personal favorite, inclused Python grammar support): https://notepad-plus-plus.org
Jupyter Notebook Tutorial: Introduction, Setup, and Walkthrough: https://www.youtube.com/watch?v=HW29067qVWk
Anaconda (Python Data Science Platform, Python included, and also Jupyter notebook): https://www.anaconda.com/

Applications:
TensorFlow - An open source machine learning framework for everyone (the API is nominally for the Python programming language, although there is access to the underlying C++ API): https://www.tensorflow.org
Introduction to the Python Deep Learning Library TensorFlow: https://machinelearningmastery.com/introduction-python-deep-learning-library-tensorflow/
N-gram analysis: https://en.wikipedia.org/wiki/N-gram

Other topics:
List of Python software: https://en.wikipedia.org/wiki/List_of_Python_software



Week #44's Wednesday Evening Training: Hands-on with Quantum Computing, a practical introduction using Qiskit (part 1)

A very very very short introduction on Quantum computers

As progress on processing speed and miniaturization continues, we stuble on the phycical limits of modern binary digital electronic computers based on transistors. Using quantum physics, however, we can increase processing speed drastically. In digital computing data is encoded into binary digits (bits), each of which is always in one of two definite states (0 or 1). A quantum computer works with particles that can be in superposition. Quantum computers use Quantum Bits or Qubits, which can take on the value 0, or 1, or both simultaneously. This drastically speeds up processing. This, however, also poses some challenges... and limitations.

More on these challenges and limitations on Quantum computers in my blogpost: https://hansrontheweb.blogspot.com/2018/11/quantum-computing-introduction.html



Back to our Wednesday Evening Training on Quantum computing

This was actually our second Wednesday Evening Training on Quantum computing (for the first session, see my blogpost: https://hansrontheweb.blogspot.com/2018/08/this-weeks-wednesday-evening-training_30.html). This evening, two of our Quantum Computer champions, Julian van Velzen and Ilyas Sener, gave us a quick theoretical background and covered basic concepts such as superposition and entanglement. Julian gave us some nice demo's of Quantum computer algorithms and a code walkthrough of a Python implemented quantum algorithm to solve the Bernstein-Vazirani parity problem, without entanglement and run on real IBM Q Bluemix [ibmqx4] machine!



But there is no sitting down in the Wednesday Evening Training, using the basic conceptual understanding of Quantum computing, we started  programming ourselves using the IBM Qiskit. This is an open-source quantum computing framework for leveraging today's quantum processors in research, education, and business (see the links to resources below). At the end of the evening, we ran our first “hello world” quantum algorithm.

Interesting and game changing technology!

In the next Wednesday Evening Training session on Quantum computing, we will continue learning to develop by covering different basic quantum algorithms. Lot's of great stuff to be explored!




Further reading

Do you want to read more on the topics in this post? Here are some links…

On the basics of quantum physics:
My YouTube list on Quantum Computing: https://www.youtube.com/playlist?list=PLSiMhBs48YvWecXqKP00NGuiP5UD6RoCk

Past Wednesday Evening Trainings


You 'll find post of previous sessions here: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining

#wednesdayeveningtraining #capgemini #lifeatcapgemini #quantumcomputing #qiskit

Quantum computing: an introduction

A very very very short introduction on Quantum computers


(I'll be updating this post regularily based on the proceedings of our #wednesdayeveningtrainings)

As progress on processing speed and miniaturization continues, we stuble on the phycical limits of modern binary digital electronic computers based on transistors. Using quantum physics, however, we can increase processing speed drastically. In digital computing data is encoded into binary digits (bits), each of which is always in one of two definite states (0 or 1). A quantum computer works with particles that can be in superposition. Quantum computers use Quantum Bits or Qubits, which can take on the value 0, or 1, or both simultaneously. This drastically speeds up processing. This, however, also poses other challenges.

For quantum computers to work, you'll need them to work in a super-cooled condition. Also, calculation results may not be accurate. You'll need software to determine whether the result is correct.

Also, not all problems can be solved using Quantum computers. Quantum computers can solve complex problems in which all possibilities must be considered and a conclusion must be drawn from them. Consider very intensive applications such as simulations, route optimization and artificial intelligence.
See "More on Computing and problem solving power of computers" below for more on this.

Also, to "feed" Quantum computers with data and to "get" the results you will still need classic computing power. This could form a bottleneck.

Are there any Quantum Computers available yet?

Yes... there are... but they are experimental and you can't yet buy them in the store nor can you online. IBM, Microsoft, Google, Apple and other companies are already building devices (see the resources below).  These computers still have limited power. At this moment, you can use online simulators to experiment with. Also see the resources below for a few examples.

More on Computing and problem solving power of computers

Automatons, or abstract machines, abstract computers, are theoretical models of a computer hardware or software systems. They form the theoretical background of all modern computers. Using these models, we can say something about the type of problems that computers can solve, and how (efficiently) they can do that. There are multiple classes of automata, varying from primitive to powerful. The most commonly known are Combinational logic, Finite-state Machines, Pushdown automatons and Turing Machines. Turing Machines are the most powerful and they form the theoretical basis of our modern computers.

Non-computable problems

First of all, there are classes of problems that cannot be solved at all (non-computable problems). A good example of a non-computable problem is the Halting Problem. Given a description of a Turing machine and its initial input, it cannot be determined whether the program, given it's input, ever completes.
Let's put these aside for the moment. Let's focus on computable problems.

Computable problems

Turing Machines are able to solve multiple classes of (mathematical, computable) problems in a more or less efficient way. And there are classes of problems that Turing Machine based are not able to solve at all. There is a problem class that a classical Turing Machine based computer can never solve, but a Quantum Computer can. An example of a problem in that class is the "Forrelation problem". See "Finally, a Problem That Only Quantum Computers Will Ever Be Able to Solve" for more on this.

Further reading

Do you want to read more on Quantum Computing? Here are some links…

On the basics of quantum physics:
Quantum Computing Expert Explains One Concept in 5 Levels of Difficulty (an excellent way to start!): https://www.youtube.com/watch?v=OWJCfOvochA
My YouTube list on Quantum Computing: https://www.youtube.com/playlist?list=PLSiMhBs48YvWecXqKP00NGuiP5UD6RoCk
How it Works: Quantum Computing: https://www.youtube.com/watch?v=WVv5OAR4Nik
Qubit (the basic unit of quantum information): https://en.wikipedia.org/wiki/Qubit
Quantum information (information that is held in the state of a quantum system): https://en.wikipedia.org/wiki/Quantum_information
Quantum system: https://en.wikipedia.org/wiki/Quantum_system
Quantum mechanics: https://en.wikipedia.org/wiki/Quantum_mechanics
Quantum Computing Primer: https://www.dwavesys.com/tutorials/background-reading-series/quantum-computing-primer
Quantum Computing basics: What is Quantum Computing?: https://www.microsoft.com/en-us/quantum/what-is-quantum-computing
Quantum Computing Technology: https://www.microsoft.com/en-us/quantum/technology

On the basics of the underlying math:
The Mathematics of Quantum Computers | Infinite Series: https://www.youtube.com/watch?v=IrbJYsep45E
Automata theory: https://en.wikipedia.org/wiki/Automata_theory
Turing machine: https://en.wikipedia.org/wiki/Turing_machine
Computational complexity theory: https://en.wikipedia.org/wiki/Computational_complexity_theory
Theory of computation | Computable and non-computable problems: https://www.geeksforgeeks.org/theory-of-computation-computable-and-non-computable-problems/
Finally, a Problem That Only Quantum Computers Will Ever Be Able to Solve: https://www.quantamagazine.org/finally-a-problem-that-only-quantum-computers-will-ever-be-able-to-solve-20180621
Complex conjugate: https://en.wikipedia.org/wiki/Complex_conjugate
Invertible matrix: https://en.wikipedia.org/wiki/Invertible_matrix
Unitary matrix: https://en.wikipedia.org/wiki/Unitary_matrix
Hadamard transform: https://en.wikipedia.org/wiki/Hadamard_transform
Hadamard_product: https://en.wikipedia.org/wiki/Hadamard_product_(matrices)
Tensor product: https://en.wikipedia.org/wiki/Tensor_product
Bra–ket notation: https://en.wikipedia.org/wiki/Bra%E2%80%93ket_notation
Quantum Mechanics Concepts: 1 Dirac Notation and Photon Polarisation: https://www.youtube.com/watch?v=pBh7Xqbh5JQ
Conjugate transpose: https://en.wikipedia.org/wiki/Conjugate_transpose
What are theta, phi and lambda in cu1(theta, ctl, tgt) and cu3(theta, phi, lam, ctl, tgt)? What are the rotation matrices being used? https://quantumcomputing.stackexchange.com/questions/2707/what-are-theta-phi-and-lambda-in-cu1theta-ctl-tgt-and-cu3theta-phi-lam
Grover - A fast quantum mechanical algorithm for database search: http://arxiv.org/abs/quant-ph/9605043

On quantum computer hardware:
IBM Q initiative to build commercially available universal quantum computers: https://www.research.ibm.com/ibm-q
Introduction to the D-Wave Quantum Hardware: https://www.dwavesys.com/tutorials/background-reading-series/introduction-d-wave-quantum-hardware

On Quantum computer software development:
Software Architecture & environment: https://www.dwavesys.com/software
Qiskit (an open-source quantum computing framework for leveraging today's quantum processors in research, education, and business): https://qiskit.org/
What is Qconfig in QISKit and how do I set it up?https://quantumcomputing.stackexchange.com/questions/2062/what-is-qconfig-in-qiskit-and-how-do-i-set-it-up
Quantum information: https://en.wikipedia.org/wiki/Quantum_information
Quantum computing: https://en.wikipedia.org/wiki/Quantum_computing
Quantum circuit: https://en.wikipedia.org/wiki/Quantum_circuit
Quantum logic gates: https://en.wikipedia.org/wiki/Quantum_logic_gate
Quantum circuit: https://en.wikipedia.org/wiki/Quantum_circuit
Qubit: https://en.wikipedia.org/wiki/Qubit
Microsoft Quantum Development Kit: https://www.microsoft.com/en-us/quantum/development-kit and https://docs.microsoft.com/en-us/quantum/?view=qsharp-preview
The Q# Programming Language: https://docs.microsoft.com/en-us/quantum/quantum-qr-intro?view=qsharp-preview
Download Quantum Studio: http://quantum-studio.net/#download_qs
Qiskit: https://github.com/Qiskit

On quantum computer simulators:
IBM: https://quantumexperience.ng.bluemix.net/qx/editor
The QX Simulator: http://quantum-studio.net
Ready-to-use Linux Ubuntu Virtual Machine with QX installed: http://quantum-studio.net/#download_vm
Quantum Computing Playground: http://www.quantumplayground.net
QCEngine - active QC simulator: http://machinelevel.com/qc/
List of Quantum computer simulators: https://quantiki.org/wiki/list-qc-simulators
Another list of Quantum computer simulators: http://www.vcpc.univie.ac.at/~ian/hotlist/qc/simulation.shtml
Quantum computer simulator: https://qcsimulator.github.io/

Other resources:
Microsoft's Quantum Computing portal: https://www.microsoft.com/en-us/quantum
Microsoft's Quantum Computing, technologies (Physics, Materials, Devices, Control, Runtime): https://www.microsoft.com/en-us/quantum/technology
IBM Q Experience! Guides, demo's etc.: https://quantumexperience.ng.bluemix.net/qx/experience
Microsoft Quantum: https://www.microsoft.com/en-us/quantum
Microsoft Research on Quantum Computing: https://www.microsoft.com/en-us/research/lab/quantum/
Hello Quantum - Explore the building blocks of quantum mechanics through puzzles: http://helloquantum.mybluemix.net
Microsoft Quantum Development Kit Samples: https://github.com/Microsoft/Quantum
Microsoft Quantum Lab Delft: https://www.microsoft.com/en-us/research/group/microsoft-quantum-delft/

11/1/18

Last week's Wednesday Evening Training: a practical introduction to IoT with Arduino

What’s an Arduino? An Arduino is like a little computer (microcontroller) where you can read input of a (example) sensor and can control your output. Like lights, LCD screen, speaker etc. It’s easy to program the Arduino.




One of our IoT champions, Aishwarya Dhall, offers a good introduction training of the Arduino technology with some nice handson labs. She also shows and explains the exciting IoT projects she's done with Capgemini.

Exciting technology... definity to be continued!



This week (actually this evening), we took a dive into Quantum Computer technology using IBM tooling. My blogpost on tonight's session will be published shortly.


Try it yourself? Here are some pointers...

The official site: https://www.arduino.cc/
Keeping up to date: https://twitter.com/arduino
A nice intro video (in only 8 minutes): https://www.youtube.com/watch?v=BtLwoNJ6klE


Want to take a look at our previous Wednesday Evening Trainings?

Take a look here at my previous posts on this blog or at LinkedIn here: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining

#werkenbijcapgemini #lifeatcapgemini #capgemini #wednesdayeveningtraining #iot #arduino #softwareengineering