12/1/18

Week #48's Wednesday Evening Training: a "klusavond" with a lot of math, workers and automata theory

In this week's Wednesday Evening Training: a "klusavond" with miscellaneous topics.

A "klusavond"?

Well, that's a typically Dutch word for a good old fashioned evening in which everybody works on his own projects and we have some demo's, presentations and discussions on various topics. Some weeks ago, during our Wednesday Evening Training evenings on Quantum computing and OpenGL, we decided that we definitely needed some refreshment of our basic math knowledge on vector calculus and complex numbers. Also, we also wanted to have a greater sense of the kind of problems that quantum computers can solve, that's why we wanted also to go deeper into the limits of the problem-solving capacity of classic computers. That required us to have some refreshment on automaton and problem theory as well. And what would be a Wednesday Evening Training evening be without programming? So we also added some explanation, a demo and some hands on labs on JavaScript workers.



On the math...

On the math, our Quantum computer champion Julian van Velzen and our OpenGL champion Quincy Jacobs had some nice exercises prepared for us. We worked out these assignments on the whiteboard together. Quincy even had programmed some nice online vector calculation simulations, which you can find in the resources below. Thanks Quincy, Julian and Bart van Beek, this is certainly useful for our workshops on OpenGL and Quantum computing!

The problem solving power of Automatons

Next, I gave some explanation on the various kinds of automatons and their ability to solve problems. 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. They are able to solve multiple classes of (mathematical) 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. We did a walk through of these automaton classes and the problem classes that they can solve. Ultimately we discussed the problem class a classical Turing Machine based computer can never solve, but a Quantum Computer can.
More on this in my article on "Quantum computing: an introduction", I'll do an update shortly.


















JavaScript workers: dedicated workers, shared workers and service workers

Basically, a "worker" is a JavaScript program running in the background, that is: in a separate thread in your browser. That has the clear advantage that it does not affect the performance of your web page, but is limited, e.g. that t is not able to interact directly with your web page. Workers are, for example, used for running (asynchronous) "services" in the background of your web page, fetching resources, doing calculations, et cetera. In Progressive Web Apps (PWA), they form the backbone of an application. See my blogpost "This week's Wednesday Evening Training: Progressive Web Apps (PWA) and an intermezzo on cryptography" for more information on PWA's and some links to resources on PWA's. We discussed three types of web workers: dedicated workers, shared workers and service workers. In short: dedicated web workers (the most primitive type) only works for 1 web page, shared workers (a bit more advanced) can be used by multiple web pages (from the same origin) and service workers (the most advanced) can actually handle requests to your web page (from the origin). With service workers, you're able to create offline web sites (PWA) that can even support push messaging. By the way: browser support on shared workers does not look good (more on this), use Service workers instead.
This evening , we did a walk through of all types of workers above and some nice hands on labs on Service workers (see the links below).
We'll definitely continue with Service workers in our next Wednesday Evening Training session on Progressive Web Apps.

Further reading

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

On the math
QuincyJacobs/Vector-drawing-js: For explanation purposes during linear algebra: https://github.com/QuincyJacobs/Vector-drawing-js

On the Automaton theory
Quantum computing: an introduction (and a lot of links to resources): https://hansrontheweb.blogspot.com/2018/11/quantum-computing-introduction.html
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
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/

On Web Workers
Introduction, applications and code: https://html.spec.whatwg.org/multipage/workers.html
This week's Wednesday Evening Training: Progressive Web Apps (PWA) and an intermezzo on cryptography: https://hansrontheweb.blogspot.com/2018/10/this-weeks-wednesday-evening-training_18.html

Dedicated Workers:

Shared Workers:

Service Workers:


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 #html #javascript #quantumcomputing

No comments:

Post a Comment