
Begin your quantum computing journey from scratch, mastering mathematics, physics, and Python, then write code, build circuits, and run quantum algorithms on real computers and simulators.
Understand what quantum computers do, using superposition, interference, and entanglement to gain advantages. Learn to compose circuits and write Python code with Qiskit to run on IBM quantum computers.
Explore mathematical foundations essential for quantum computing by revisiting statistics, probability, and matrices, with a brief refresher for non-experts.
Understand how classical computers store data as ones and zeros with transistors and binary. See how languages become machine code and how images are encoded in binary and ascii.
Explore probability basics, including P(A), P(A and B), P(A or B), and independent or mutually exclusive events, as part of math fundamentals for quantum computation.
Explore the fundamentals of statistics, including mean, median, minimum, maximum, variance, and standard deviation, and learn how outliers influence data in quantum computing contexts.
Explore complex numbers for quantum computing, mastering the imaginary unit i, operations on complex numbers, complex conjugates and squared magnitude, and division using conjugates in matrix-based calculations.
learn about matrices, their rows and columns, and how to perform addition, subtraction, scalar multiplication, and matrix multiplication with real and complex numbers for quantum computations.
Explore matrix operations essential to quantum computing, learning how to multiply matrices, verify dimensions, and distinguish tensor products from ordinary multiplication, with preparation for the identity matrix.
Explore linear transformation in quantum computing using unitary matrices and adjoints to realize reversible operations. Recognize Hermitian matrices as irreversible and represent state vectors as column vectors for rotations.
Explore qubits and fundamentals of quantum mechanics, including superposition, interference, and entanglement, to understand why we study this field and how quantum computers work, run circuits on real quantum computers.
Explore the physics behind quantum computing, focusing on superposition and interference through the double-slit experiment and qubits, including wave function collapse.
Explore entanglement as a correlation between two qubits, showing how measuring one qubit's spin up or down instantly reveals the other, enabling very big calculations in quantum computers.
Explore qubit states represented as column vectors, including zero and one states, spin down and up, and superposition, using ket notation and inner products to predict measurement outcomes.
Explore multi qubit states built from tensor products and cat notation, interpreting P00, P01, P10, P11 through superposition and entanglement, and prepare for matrix operations and ket notation.
Learn Python from scratch to write code for quantum computers, with no prior experience required. Master the fundamentals and explore frameworks and libraries for data science, cybersecurity, and web development.
Install Anaconda on macOS with Python 3, then launch Anaconda Navigator to run a local Jupyter notebook, create Python notebooks, write and run code in cells, and save work.
Write your first Python code in a Jupyter notebook, perform basic arithmetic, learn integers versus floats, and use exponentiation and the modulo operator, preparing for variables in the next lecture.
Explore variables in Python: store and reuse numbers, handle user input, convert strings to integers (casting), and compute a circle’s circumference using radius, pi, and type handling.
Access and manage Python notebooks on GitHub, including cloning, downloading, and opening ipynb files in a local Jupyter environment. Learn to run and edit cells to practice coding.
Learn how to work with strings in Python, from defining variables and types to using escape characters, length, and print, with insights for ethical hacking tools.
Master advanced string operations in Python, including zero-based indexing and slicing with start, stop, and step, negative indexing, and reversing strings for ethical hacking tools.
Explore how variables expose attributes and methods in Python, using strings and integers in Jupyter notebooks, and learn practical examples like capitalize, split, and adding strings together, and indexing.
Explore Python lists, contrasting mutability with strings, and manipulate lists using append, pop, and reverse; combine lists, multiply by integers, and mix data types in a single list.
Explore nested lists in Python by creating lists within lists, accessing elements with multi-level indexing, and applying slicing to extract sublists, preparing you for complex data structures.
Discover Python dictionaries: pair keys and values in curly braces, access with square brackets, and use mixed keys and values, including lists and nested dictionaries.
Explore sets in Python, ensure unique elements by converting lists to sets, create empty sets with set(), and add items with set.add, while distinguishing sets from dictionaries.
Master tuples, immutable list-like objects created with parentheses, and compare them with lists to see why external libraries favor tuples. Learn to use count and index methods to locate elements.
Explore Python logical comparisons, including greater than, less than, equal to, not equal, and their use with floats, then master and, or, not for combined conditions before if controls.
Learn how to use if statements in Python to check conditions, with indentation-based code blocks, and control flow using else and elif, illustrated by comparing x and y.
Continue exploring if statements in Python, using strings, integers, booleans, and or operators; learn elif, else branches and boolean logic for ethical hacking tools.
Master practical usage of if statements across strings, lists, and dictionaries using the in operator to test membership and handle exact matches.
Learn how to use for loops in Python to iterate over lists, strings, and tuples. Perform operations like multiplication and remainder, and filter even numbers with if statements.
Continue exploring for loops with practical usages, from lists of tuples to dictionaries, including unpacking tuples in a single loop and iterating dictionary items, keys, and values.
Explore break, continue, and pass keywords in Python for loops, demonstrating how break stops the loop, continue skips an element, and pass serves as a placeholder to avoid errors.
Learn how the while loop runs code while a condition holds, with examples counting from zero to five and using break, continue, and f-strings to show progress.
Learn useful Python methods for lists, including range for list creation, casting to list, slicing with start, stop, and step, and using enumerate to pair indices with elements.
Learn to generate random numbers with Python's random module using randint for values between 0 and 1000, shuffle lists, and zip lists, casting the result to a list.
Explore advanced list techniques, including creating empty lists, appending elements, and using single-line list comprehensions to transform strings and numbers, with examples like the string Metallica.
Explore Sublime Text on Windows for Python development, install the editor, save files as .py, adjust font settings, and use autocompletion, build, or the terminal to run code.
Learn to run Python scripts from the Windows command prompt, navigate directories with cd and dir, and execute files with python example.py, then preview the Mac Sublime Text workflow.
learn to set up and use Sublime Text on Mac to write Python code, save as .py, adjust font, and run code with build tools, including Hello World.
Learn to run Python code in the Mac terminal, navigate directories with pwd, cd, and ls, and run example.py to see real output.
Explore how to define functions that take inputs and return outputs, set default values, and distinguish between printing and returning results through examples of summation and string processing.
Learn about functions and methods in Python, why they are the same thing, define with def, call to execute, return outputs, and explore built in functions.
Learn to handle arbitrary arguments and keyword arguments to build flexible functions that sum multiple inputs and perform key-value checks, enhancing dynamic input handling.
Explore Python's map and filter to apply functions to lists and strings, using a divide function and a Metallica example, and compare with for loops.
Explore Python scope, understanding how local, enclosing, global, and built-in levels determine variable values. See examples with functions, nested functions, and the global keyword to modify variable scope.
Learn how to define classes and create instances in Python. Manage attributes and methods with __init__ and self.
Learn how to define methods inside a class and use self to reference the current instance, plus setting default class attributes like job and instrument in a musician example.
Create a dog years class to show practical class usage, including an init method, self attributes, default values, a calculation method, and computing human years from dog age.
Explore inheritance in object-oriented programming by comparing class one and class two, showing how methods and init are inherited, overridden, and reused across instances.
Explore spatial methods, or dunder and magic methods, by defining init, str, and len in a fruits class to customize print and the instance's string and length representations.
Explore Python modules, packages, and libraries, and learn to install and import them with pip. Use NumPy and Matplotlib to generate and visualize data for ethical hacking contexts.
Create a Python module with a single function, save as a .py file, and import it into a new project to use the function.
Explore how direct and imported calls differ in Python by using the special __name__ variable, with concrete examples showing yoda.py and anakin.py and behavior when run as main.
Explore Qiskit to build your first quantum circuit, write your initial lines of code, and run them on an actual quantum computer.
Learn about classical gates—buffer gate, not gate, end gate, or gate, nand, nor, xor, xnor—and their truth tables to build intuition for quantum gates and circuits with Python and Qiskit.
Sign up for the IBM quantum experience to obtain an API key and run your code on real quantum computers using the circuit composer.
Explore how the Hadamard gate creates superposition and how a CNOT gate entangles qubits, using circuit diagrams, state vectors, and tensor products in quantum circuits.
Learn to use qiskit to build quantum circuits and run code on real machines using terra, aer, ignis, aqua after signing up with IBM quantum and an API token.
Write your first quantum code Hello Quantum by implementing the Hadamard and CNOT gates to entangle two qubits, then measure and run on a Qiskit simulator.
Finalize a two-qubit circuit with Hadamard and CNOT, visualize it with Matplotlib, and run it on a Qiskit Aer simulator to obtain entanglement results, displayed as a histogram.
Learn how to access real quantum computer properties and run circuits on hardware using IBMQ, including obtaining an API token, loading accounts, and selecting backends by qubits and job status.
Run your circuit on a real quantum computer using IBM Qiskit and monitor the job status. Learn how real hardware introduces quantum noise and errors compared to simulators.
Explore the Toffoli gate, a three-qubit gate with two controls and one target that applies x to the target only when both controls are one, like a three-qubit Cnot.
Explore quantum teleportation and superdense coding, building on qiskit and qubits to introduce quantum algorithms and prepare for upcoming sections.
discover how the Z gate performs a phase flip, turning ket one into minus ket one, and explore its role among pauli gates with examples in Qiskit.
Explore the Bloch sphere and two-qubit rotations to understand phase and gate effects, using Hadamard, CNOT, and rotation gates with state-vector and Bloch visualizations.
Explore how superdense coding uses entanglement to transfer two classical bits with one qubit, and simulate gates like Hadamard, CNOT, X, and Z to see outcomes.
Learn quantum teleportation by transferring an unknown qubit state from Alice to Bob using entanglement, Hadamard and CNOT gates, measurements, and controlled gates, while observing no cloning of quantum states.
Teleport a quantum state from q0 to q2 using a Qiskit circuit with three qubits and classical bits, including entanglement, measurements, and conditional corrections, verified via histogram.
Explore the Bernstein-Vazirani algorithm as our first quantum algorithm, alongside superdense coding and quantum teleportation, and see how it demonstrates quantum advantage over classical solutions in some problems.
Explore quantum algorithms with real-world impact and learn how the Bernstein-vazirani algorithm finds a binary number in a single shot, outperforming classical computers with superposition, entanglement, and interference.
Apply the Bernstein-vazirani algorithm in Qiskit to build a circuit that finds a secret bit string using hadamard gates, cnot gates, and an ancilla qubit, with visualization.
Adapt the quantum circuit to the secret number length by adjusting qubits and classical bits, applying Hadamard and CNOT gates with reverse bit ordering; demonstrates Bernstein-Vazirani's quantum advantage.
Explore Deutsch's algorithm to understand the advantage of quantum computers over classical ones, and preview other real-life quantum algorithms to tackle practical problems.
Explore the Deutsch algorithm and see how quantum computers outperform classical ones by determining whether a function is constant or balanced in a single shot, using qubits and reversible oracles.
Implement the Deutsch algorithm in Qiskit by building a two-qubit circuit, applying Hadamard and X gates, using CNOT as the oracle, and measuring first qubit to identify a balanced function.
Explore Grover's search algorithm and how quantum computers can tackle real life daily problems as they improve in the upcoming years. Let's get started.
Explore Grover's search algorithm by contrasting classical search in an unsorted list with a quantum approach, highlighting the oracle, execution count, and the square root of n improvement.
Explore Grover's search algorithm on Qiskit using two qubits, oracle and reflection circuits, and phase flips to amplify the winning state, with hands-on gate construction.
Apply Grover's search to a dinner party constraint using Qiskit Aqua's abstraction, guided by a logical expression Oracle to invite maximum guests despite conflicts.
Explore Shor's algorithm as the course's core, delving into its mathematical foundations and proofs to reveal what happens behind the curtains, and consider future automation with Python libraries.
Explore Shor's algorithm and its ability to factor large numbers, threaten RSA encryption, and spur the shift to post-quantum encryption, using modular arithmetic and greatest common divisor.
Demonstrate Shor's algorithm with Qiskit to factor numbers and illustrate RSA breakability using a few Python lines, highlighting quantum instance, backends, quantum Fourier transform, and quantum phase estimation.
Explore the quantum Fourier transform, showing how it converts the computational basis to the Fourier basis for qubits using the Hadamard gate and tensor products.
Learn how quantum phase estimation finds the phase theta, enabling modular exponentiation in Shor's algorithm, using Hadamard gates, controlled U rotations, and QFT dagger.
Welcome to the Complete Quantum Computing Course!
Quantum computers are expected to change our lives drastically in upcoming years. We know we can solve specific problems in minutes in Quantum computers while we can solve them in thousands of years in classical computers. If you want to get ahead of the technology and learn about future, then you are at the right place!
Throughout the course we will start from scratch and understand principals of quantum mechanics and how to use them in quantum computers. We will write our own codes to execute on real quantum computers using IBM Qiskit technology. If you have high school level of mathematical knowledge, you can take this course.
Training is given by Atil Samancioglu, who has more than 250.000 students worldwide on Programming & Cyber Security along with the Codestars, serving more than 1 million students online. Atil is co-founder of Academy Club & Pera Games and he also teaches programming in Bogazici University in Turkey.
Some of the topics that will be covered throughout the course:
Quantum Computer and Classical Computer principals
Probability, Statistics, Matrices
Superposition
Entanglement
Interference
Qubit
Superdense Coding
Quantum Teleportation
Bernstein Vazirani Algorithm
Deutsch Algorithm
Shor Algorithm
Grover Algorithm
Python from Scratch
Quantum Fourier Transform
Quantum Phase Estimation
Training will start from completely zero and you will be able to reach the trainer in Q&A section if you have anything in your mind. All materials used in the training will be shared via GitHub and Udemy. Throughout the course we will use real Quantum Computers as well as simulators using IBM Qiskit framework. Python programming language will be delivered from scratch to all the way up to the details.
When you complete this training you will be able to understand theory and practice of Quantum Computing, write your own circuits and execute codes on real quantum computers. You will easily adapt your quantum knowledge to other Quantum computers rather than IBM. Since IBM is the only provider for quantum computers on cloud, without paying any fee right now, all examples will be executed on IBMQ.
This course is eligible for the Codestars Certificate Authority (CCA) certificate. Students can take the official exam via codestarscom, and those who pass the quiz will receive their CCA certificate. (more details in the course!)
Happy coding!