My Final Project

This is my final project for my Independent Study in Quantum Computing, which I did by completing the year-long IBM Quantum Computing class. I programmed this from scratch using HTML, CSS, and JavaScript which I've learned on my own.
This is a website designed to explain Quantum Computing to total beginners as a way of showing some of what I've learned. As Richard Feynman said, if you can't explain something simply, you don't understand it well enough.

What is Quantum Computing?

Quantum Computing is a way of solving problems that conventional computers struggle with. By utilizing the unique traits of quantum mechanics, Quantum Computers are able to solve certain problems far more efficiently than a conventional computer.

What's the difference between a normal computer and a Quantum computer?

A normal computer works by storing bits, 1s and 0s, which are either on or off, and using millions of these for everything a conventional computer does. A quantum computer uses a qubit, which exists as both a 1 and a 0. The range of probabilities from these qubits allow a dedicated quantum computer to solve equations that normal computers would take trillions of years to solve. This is called Quantum Supremacy, where a quantum computer is far more effective than a conventional one for certain problems.

Why are Quantum Computers useful?

As previously stated, quantum computers can solve certain problems far more efficiently than conventional computers. Some examples of these problems include biological or chemical research, as cells and molecules are extremely complex.
One of the most likely problems that quantum computers will be able to solve are optimization problems. While a normal computer might have to try a huge number of potential solutions one after another, a quantum computer can test thousands of potential solutions all at once. This is also useful in data analysis, where huge amounts of data can be sorted through an analyzed by a quantum computer in a fraction of the time it would take a conventional computer.
However, for all of the benefits quantum computers might provide, there are dangers.

Quantum Computers and Encryption

All of modern encryption relies on the fact that conventional computers are very good at solving some problems one way, but terrible at solving them in reverse.
An example of this is multiplying or dividing prime numbers. For example, it's very easy for a computer to do 23 x 11 = 253. However, if told to find what two prime numbers multiply to make 253, the best the computer can do is trial and error.
So, if a computer is given 253 and knows that one of the factors is 23, it's very easy for the computer to divide to get 11. Modern encryption uses much larger prime numbers, like 902989718728963395097502476067441869584443. Using every computer in the world at once, trial and error would still take longer than the heat death of the universe to figure out.
However, a quantum computer could potentially break encryption quickly, compromising the basic infrastructure of the internet. To counter this, quantum cryptography is being developed, which would protect against attacks by quantum computers. This field is rapidly advancing, and we likely won't know the results for years to come.

Programming a Quantum Computer

For programming IBM Quantum computers, I used a modified version of Python, a conventional computing language. There are different "transformations" that work similarly to how conventional computing gates work.
As an example, a Pauli-X gate functions similarly to a NOT gate in conventional computing. In conventional computing, it outputs the opposite of what is put in (1 beccomes 0, 0 becomes 1). It has a similar function in quantum computing.
Programming a quantum computer is a very complex subject, so I'm skimming over a great deal of detail here, but much of how quantum programming is written is based off the existing standards for conventional computing.