diff --git a/learning/courses/quantum-computing-in-practice/introduction.ipynb b/learning/courses/quantum-computing-in-practice/introduction.ipynb index 7f48b132dac..ed1bdd71ba7 100644 --- a/learning/courses/quantum-computing-in-practice/introduction.ipynb +++ b/learning/courses/quantum-computing-in-practice/introduction.ipynb @@ -65,7 +65,7 @@ "We'll have more to say about this later!\n", "\n", "IBM® researchers published a paper in 2023 that showed, for the first time, that a quantum computer can compete with state-of-the-art classical techniques for simulating a particular physical model.\n", - "It's results can still be matched by advanced techniques running on classical computers — but it bested brute-force algorithms,\n", + "Its results can still be matched by advanced techniques running on classical computers — but it bested brute-force algorithms,\n", "and it also offers a new data point to which different simulation methods (which are not exact and don't all agree in their predictions) can be compared." ] }, @@ -76,11 +76,11 @@ "source": [ "### A focus on larger quantum processors\n", "\n", - "Prior users of IBM quantum hardware may have noticed that the smaller processors we previously made available to the public have been take offline, making way for larger processors (having 100+ qubits).\n", + "Prior users of IBM quantum hardware may have noticed that the smaller processors we previously made available to the public have been taken offline, making way for larger processors (having 100+ qubits).\n", "Those smaller processors could easily be simulated classically.\n", "So, although they represented publicly accessible stepping stones in an advancing technology, they could not possibly demonstrate quantum utility: anything that could be done with them could just as easily be done with a classical simulation.\n", "\n", - "At around 100 qubits, however, this is no longer the case; quantum processors of this size can no longer be simulated classically.\n", + "At around 100 qubits, however, this is no longer the case. In general, quantum processors of this size can no longer be simulated classically.\n", "This represents a phase-transition of sorts, into a new era of quantum computing technology where the *potential* for outperforming classical computation exists.\n", "This is where IBM has chosen to focus — to look for quantum computational power and reach toward an eventual quantum advantage.\n", "\n", @@ -95,7 +95,7 @@ "source": [ "### Audience and course goals\n", "\n", - "This course if for anyone that aims to develop new applications for quantum computers, wants to scale up their current work in quantum computing, or learn how to use quantum processors within their workflow.\n", + "This course is for anyone that aims to develop new applications for quantum computers, wants to scale up their current work in quantum computing, or learn how to use quantum processors within their workflow.\n", "This includes not just physicists and computer scientists, but also engineers, chemists, materials scientists, and anyone else with an interest in mastering quantum computing hardware.\n", "\n", "The course will be hands-on and focused on the practical use of quantum computers.\n", @@ -181,7 +181,7 @@ "While that may sound exaggerated, this is the wall we're approaching.\n", "\n", "The solution is not to give up and say, \"Well, that’s as good as it gets.\"\n", - "This goes against humans nature.\n", + "This goes against human nature.\n", "Instead we must look to the physical world for new computational tools, which is where quantum computing comes into play." ] }, @@ -215,7 +215,7 @@ "For example, it's too costly and impractical to simulate a car driving through wind, so instead car manufactures actually build tunnels with blowing wind and drive cars through them to test their performance.\n", "That is, they create wind rather than simulating it.\n", "Building a quantum computer to study the physical world is kind of like building a wind tunnel to study how wind affects cars.\n", - "Quantum computers can directly emulate the laws of Nature on a molecular level because they act in accordance with those law,\n", + "Quantum computers can directly emulate the laws of Nature on a molecular level because they act in accordance with those laws,\n", "which is to say that they emulate Nature rather than simulating it through formulas and calculations.\n", "\n", "Others followed up on Feynman's ideas — and they linked these ideas with a theory of *quantum information* that\n", @@ -269,7 +269,7 @@ "\n", " - **Size.** More qubits are obviously better, but only if increasing the number doesn't degrade performance\n", " (which can be the case). In actuality, we want more, good quality qubits that don’t interfere with one another\n", - " through crosstalk when we don’t want them too. The way the qubits are connected to one another is also important, and\n", + " through crosstalk when we don’t want them to. The way the qubits are connected to one another is also important, and\n", " figuring out how best to do this represents a challenge for superconducting qubit circuits.\n", "\n", " - **Quality.** Another important metric we observe, to track performance improvement over time, is 2-qubit gate fidelity.\n", @@ -299,7 +299,7 @@ "\n", "Quantum computing is often contrasted with classical computing, as something distinctly different from it and in competition with it.\n", "But from a broader lens we can see quantum computing as simply one more chapter in a long story.\n", - "It is our nature as humans to seek out new ways to compute and to harnessing the power that the natural world provides us with to do this.\n", + "It is our nature as humans to seek out new ways to compute and to harness the power that the natural world provides us with to do this.\n", "We've been doing this for centuries.\n", "Quantum computing offers us a new tool in the endeavor and it is up to us to discover how we can leverage the power it offers us." ] diff --git a/learning/courses/quantum-computing-in-practice/mapping.ipynb b/learning/courses/quantum-computing-in-practice/mapping.ipynb index 7d9ef6b18c0..ae44b3c3313 100644 --- a/learning/courses/quantum-computing-in-practice/mapping.ipynb +++ b/learning/courses/quantum-computing-in-practice/mapping.ipynb @@ -32,7 +32,7 @@ "In Lessons 2 and 3 of this course, we mentioned that the mapping stage is the first of four total steps in the Qiskit patterns framework. From these lessons, you may remember that the goal of mapping is to translate or rewrite a computational problem into a cost function or expectation value that we can evaluate using a quantum computer.\n", "\n", "In Lesson 3 we discussed one concrete example with max-cut, a computationally hard, but very common, problem in combinatorial optimization. In that example, we went through several steps to translate the initial graph problem into one that could be solved on a quantum computer. We transformed the problem of finding the maximum number of cuts in the graph into a cost function, rewrote that cost function as a Hamiltonian, and then prepared a trial quantum state whose ground state corresponded to the maximum cut. Finally, we constructed a quantum circuit representing the trial quantum state of interest, and then added the specific gates to allow the state to evolve over time.\n", - "This sequence of steps was all part of mapping. While the exact steps were unique to the max-cut problem, the same general procedure can applied to many other applications, such as quantum chemistry and quantum simulations.\n", + "This sequence of steps was all part of mapping. While the exact steps were unique to the max-cut problem, the same general procedure can be applied to many other applications, such as quantum chemistry and quantum simulations.\n", "\n", "Mapping can be difficult. There isn’t a one-size-fits all strategy for every single problem, so it can be intimidating. In this lesson, we’ll look at some general considerations for mapping, and then dive into some representative example problems to demonstrate the various ways to map a problem to a quantum computer.\n", "\n", diff --git a/learning/courses/quantum-computing-in-practice/running-quantum-circuits.ipynb b/learning/courses/quantum-computing-in-practice/running-quantum-circuits.ipynb index 3d95f1aa6e4..80a029a8da3 100644 --- a/learning/courses/quantum-computing-in-practice/running-quantum-circuits.ipynb +++ b/learning/courses/quantum-computing-in-practice/running-quantum-circuits.ipynb @@ -69,7 +69,7 @@ "\n", "![Example simple quantum circuit](/learning/images/courses/quantum-computing-in-practice/running-quantum-circuits/simplecircuit.avif)\n", "\n", - "One important characteristic of a circuit is its depth. The depth of a quantum circuit is the minimum number of “layers” of quantum gates, executed in parallel, required to complete the circuit. Quantum gates can be executed in parallel (at the same time) whenever they don't have any qubits in common. But if two or more gates act of the same qubit then we can't perform them in parallel — they must be performed in two separate layers, one after the other.\n", + "One important characteristic of a circuit is its depth. The depth of a quantum circuit is the minimum number of “layers” of quantum gates, executed in parallel, required to complete the circuit. Quantum gates can be executed in parallel (at the same time) whenever they don't have any qubits in common. But if two or more gates act on the same qubit then we can't perform them in parallel — they must be performed in two separate layers, one after the other.\n", "\n", "There's another, less obvious, way to determine the depth of a circuit, by playing a sort of game. The rules are simple: starting from any qubit wire on the left, you must travel to the right and count the number of gates you encounter in your path. You may hop to a neighboring wire only when it is connected to your current wire by a multi-qubit gate. The goal is to maximize the number of gates you encounter along your path. This maximal number also happens to be the depth of the circuit.\n", "\n", @@ -111,7 +111,7 @@ "\n", "Then we optimize our circuit for the selected hardware. First, we need to lay out and route our circuit efficiently. Layout refers to mapping the virtual qubits in the circuit to the physical qubits on the processor. Routing refers to tweaking the circuit so that the connectivity between virtual qubits in the circuit matches the connectivity of the physical qubits on the processor. There are a couple of things to keep in mind during the layout and routing stage.\n", "\n", - "1.\tNot all qubits are connected. Some are very far away from one another on the chip, and we need to reduce or eliminate long-distance interactions wherever possible. You could apply a sequence of SWAP gates between neighboring qubits to move the qubits information around, but SWAP gates are costly and prone to errors, so there may be betters ways of doing this. Try to avoid too many costly SWAP gates.\n", + "1.\tNot all qubits are connected. Some are very far away from one another on the chip, and we need to reduce or eliminate long-distance interactions wherever possible. You could apply a sequence of SWAP gates between neighboring qubits to move the qubits information around, but SWAP gates are costly and prone to errors, so there may be better ways of doing this. Try to avoid too many costly SWAP gates.\n", "\n", "2.\tLayout and routing are iterative processes. You can do it by hand, but there's also a Qiskit tool called `mapomatic`, which can make recommendations for a physical qubit layout based on approximate error rates. The transpiler (which we'll discuss shortly) can also make an informed suggestion.\n", "\n", diff --git a/learning/courses/quantum-computing-in-practice/simulating-nature.ipynb b/learning/courses/quantum-computing-in-practice/simulating-nature.ipynb index 8b2e28d7d43..979a237315d 100644 --- a/learning/courses/quantum-computing-in-practice/simulating-nature.ipynb +++ b/learning/courses/quantum-computing-in-practice/simulating-nature.ipynb @@ -110,8 +110,8 @@ "\n", "If you have a system with distinguishable particles, like $1/2$ spins fixed on a lattice, which we took a simple look at above, the Hamiltonian is often already written in a language compatible with qubits. The Pauli-Z operator, for instance, naturally describes a spin's up or down, and no special encoding is needed.\n", "\n", - "When simulating indistinguishable particles of fermions or bosons, it is necessary to apply an encoding transformation. These particles are used to describe within a special mathematical framework called `second quantization`, which tracks the occupation number of each quantum state by introducing `creation` and `annihilation` operators, where the creation operator $\\hat{a}_i^\\dagger$ adds one particle to state $i$ while the annihilation operator $\\hat{a}_i$ removes one particle from state $i$. Based on this second quantization framework, the fermion can be transformed by Bravyi-Kitaev and Jordan-Wigner. Jordan-Wigner transformation defines the fermionic creation operator\n", - "$\\hat{f}_j^\\dagger = \\Bigl( \\prod\\limits_{k \\lt j}{(-Z_k)} \\Bigr)\\Bigl( \\frac{X_j + i Y_j}{2} \\Bigr)$ which fill the $j$-th quantum state with a fermion and fermionic annihilation operator $\\hat{f}_j= \\Bigl( \\prod\\limits_{k \\lt j}{(-Z_k)} \\Bigr)\\Bigl( \\frac{X_j - i Y_j}{2} \\Bigr)$ which empties a fermion from the $j$=th states. You can find more details of this Jordan-Wigner transformation at our [Quantum Computing in Practice, episode 5 - Mapping](/learning/courses/quantum-computing-in-practice/mapping). Similarly, bosons also require their own encoding methods, such as the Holstein-Primakoff transformation, to be represented by qubits.\n", + "When simulating indistinguishable particles of fermions or bosons, it is necessary to apply an encoding transformation. These particles are described within a special mathematical framework called `second quantization`, which tracks the occupation number of each quantum state by introducing `creation` and `annihilation` operators, where the creation operator $\\hat{a}_i^\\dagger$ adds one particle to state $i$ while the annihilation operator $\\hat{a}_i$ removes one particle from state $i$. Based on this second quantization framework, the fermion can be transformed by Bravyi-Kitaev and Jordan-Wigner. Jordan-Wigner transformation defines the fermionic creation operator\n", + "$\\hat{f}_j^\\dagger = \\Bigl( \\prod\\limits_{k \\lt j}{(-Z_k)} \\Bigr)\\Bigl( \\frac{X_j + i Y_j}{2} \\Bigr)$ which fill the $j$-th quantum state with a fermion and fermionic annihilation operator $\\hat{f}_j= \\Bigl( \\prod\\limits_{k \\lt j}{(-Z_k)} \\Bigr)\\Bigl( \\frac{X_j - i Y_j}{2} \\Bigr)$ which empties a fermion from the $j$-th state. You can find more details of this Jordan-Wigner transformation at our [Quantum Computing in Practice, episode 5 - Mapping](/learning/courses/quantum-computing-in-practice/mapping). Similarly, bosons also require their own encoding methods, such as the Holstein-Primakoff transformation, to be represented by qubits.\n", "\n", "Ultimately, whether the path is direct or requires a translation, the goal is the same: to express the system's Hamiltonian in the form of Pauli spin operators that a quantum computer can understand and execute.\n", "\n", @@ -316,7 +316,7 @@ "# 12 parameter values for Rx between [0,p/2].\n", "#Reshape to outer product broadcast with observables\n", "\n", - "parameter_values = np.linespace(0,np.pi/2,num_params).reshape((num_params,1))\n", + "parameter_values = np.linspace(0,np.pi/2,num_params).reshape((num_params,1))\n", "num_params = parameter_values.size\n", "```\n", "\n",