To program a quantum computer, you don’t necessarily need an engineering degree but having one can be beneficial in understanding the underlying physics and hardware of quantum computers.
A strong foundation in computer science or mathematics is essential for success in this field as it requires knowledge of programming languages such as Q# or Qiskit, linear algebra, and quantum mechanics. Problem-solving abilities, attention to detail, and the ability to work collaboratively are also crucial skills for a quantum software developer.
The demand for skilled quantum software developers is expected to grow significantly in the coming years as quantum computing becomes more widespread. The global quantum computing market is expected to reach $65 billion by 2025 making it one of the most exciting and rapidly growing industries today with its unique blend of technical skills, problem-solving abilities, and attention to detail this field offers a wide range of opportunities for those who are passionate about harnessing the power of quantum computing.
What Is A Quantum Computer?
A quantum computer is a type of computing device that uses the principles of quantum mechanics to perform calculations and operations on data. Unlike classical computers, which use bits to represent information as either 0 or 1, quantum computers use quantum bits or qubits, which can exist in multiple states simultaneously (Nielsen & Chuang, 2000). This property allows quantum computers to process vast amounts of information in parallel, making them potentially much faster than classical computers for certain types of calculations.
The concept of a quantum computer was first proposed by physicist David Deutsch in the 1980s (Deutsch, 1985). However, it wasn’t until the early 2000s that the first practical implementations of quantum computers began to emerge. These early devices were based on superconducting circuits and used a technique called adiabatic quantum computation to perform calculations (Lloyd et al., 1999).
One of the key features of a quantum computer is its ability to perform operations on qubits in a way that is not possible with classical bits. This includes the ability to entangle qubits, which allows them to be correlated in such a way that the state of one qubit is dependent on the state of another (Horodecki et al., 1996). Quantum computers also use a process called quantum measurement to collapse the wave function of a qubit and determine its final state.
Quantum computers have several potential applications, including cryptography, optimization problems, and simulations of complex systems. For example, a quantum computer could be used to break certain types of encryption codes that are currently considered secure (Shor, 1994). Quantum computers could also be used to optimize complex systems such as logistics networks or financial portfolios.
The programming of a quantum computer is a highly specialized task that requires expertise in both quantum mechanics and computer science. While it is theoretically possible for someone without an engineering degree to program a quantum computer, the practical reality is that most quantum computing platforms require significant technical expertise to use effectively (Biamonte et al., 2014).
Basics Of Quantum Programming Languages
Quantum programming languages are designed to work with the principles of quantum mechanics, which is fundamentally different from classical computing. Quantum computers use qubits (quantum bits) that can exist in multiple states simultaneously, allowing for exponential scaling of computational power. This property enables quantum computers to solve certain problems much faster than classical computers.
The first quantum programming language was QCL (Quantum Computing Language), developed by IBM in the late 1990s. However, it was not designed with practical applications in mind but rather as a research tool to explore the principles of quantum computing. In contrast, modern quantum programming languages like Q# and Qiskit are designed for real-world applications and have gained significant traction in recent years.
Q# is a high-level language developed by Microsoft that allows developers to write quantum algorithms and run them on various quantum hardware platforms. It provides a set of libraries and tools for quantum computing, including support for qubit manipulation, measurement, and error correction. Qiskit, on the other hand, is an open-source framework developed by IBM that provides a more comprehensive set of tools for quantum computing, including a simulator, a compiler, and a runtime environment.
One of the key challenges in developing practical quantum programming languages is the need to mitigate errors caused by qubit decoherence. Decoherence occurs when the fragile quantum states of qubits interact with their environment, causing them to lose their coherence and collapse into classical states. To address this issue, researchers have developed various techniques such as error correction codes, noise reduction algorithms, and quantum error correction protocols.
Quantum programming languages are not necessarily more complex than classical programming languages, but they do require a deeper understanding of the underlying physics and mathematics of quantum computing. Developers need to be familiar with concepts like superposition, entanglement, and wave function collapse, which can be challenging for those without a strong background in quantum mechanics.
Quantum computers have the potential to solve certain problems much faster than classical computers, but they are not yet practical for most real-world applications. The development of robust quantum programming languages is crucial for unlocking the full potential of quantum computing and making it more accessible to developers from various backgrounds.
Types Of Quantum Computing Architectures
Quantum computing architectures can be broadly classified into three main types: gate-based, adiabatic, and topological.
Gate-based quantum computers use a series of quantum gates to manipulate the quantum bits or qubits. These gates are the quantum equivalent of logic gates in classical computing and are used to perform operations such as rotations, entanglement, and measurements (Nielsen & Chuang, 2000). The most common type of gate-based quantum computer is the circuit model, which uses a sequence of quantum gates to implement a quantum algorithm. However, this approach has limitations due to the noise and error correction requirements that arise from the fragile nature of qubits.
Adiabatic quantum computers, on the other hand, use a different approach called adiabatic evolution (Farhi et al., 2000). This method involves slowly changing the Hamiltonian of the system over time, allowing the quantum computer to find the ground state of the system. Adiabatic quantum computers have been shown to be more robust against noise and errors than gate-based quantum computers, but they are also less flexible in terms of the types of algorithms that can be implemented.
Topological quantum computers use exotic materials called topological insulators to encode qubits (Kitaev, 1997). These materials have a unique property called non-Abelian anyons, which allow for the creation of stable and robust qubits. Topological quantum computers are still in their infancy but show great promise due to their potential for scalability and fault tolerance.
Another type of quantum computer is the Quantum Annealer (QA) which uses a similar approach to adiabatic evolution but with a focus on solving optimization problems rather than simulating quantum systems (Smelyanskiy et al., 2016). QAs have been shown to be highly effective in solving complex optimization problems and are being explored for applications such as machine learning and materials science.
The choice of quantum computing architecture depends on the specific application and requirements. Gate-based quantum computers are well-suited for general-purpose quantum computing, while adiabatic and topological quantum computers may be more suitable for specific tasks such as optimization or simulation.
Role Of Software Engineers In Quantum Computing
Software engineers play a crucial role in the development and operation of quantum computers, but their specific responsibilities can vary depending on the context. In the case of programming a quantum computer, software engineers are primarily responsible for developing and implementing quantum algorithms that can run on these devices.
These algorithms are typically written in specialized programming languages such as Q# or Qiskit, which take into account the unique properties of quantum computing, including superposition and entanglement. Software engineers must have a deep understanding of quantum mechanics and the underlying physics of quantum computers to write effective algorithms that can harness their power.
In addition to developing algorithms, software engineers may also be responsible for optimizing the performance of these programs on real-world quantum hardware. This involves working with the physical properties of the quantum computer, such as qubit coherence times and gate fidelities, to ensure that the algorithm runs efficiently and accurately.
The role of software engineers in quantum computing is not limited to programming; they also play a crucial part in the development of quantum-classical hybrid systems. These systems combine the strengths of both classical and quantum computers to solve complex problems that are beyond the capabilities of either type of computer alone.
Quantum-classical hybrids often require software engineers to develop new programming languages or frameworks that can interface with both classical and quantum hardware. This requires a deep understanding of both the physical properties of quantum computers and the software development principles used in classical computing.
Quantum Algorithms And Their Applications
Quantum algorithms are designed to solve specific problems that are computationally intractable on classical computers, such as factoring large numbers and searching unsorted databases. These algorithms rely on the principles of quantum mechanics, including superposition, entanglement, and interference, to perform calculations exponentially faster than their classical counterparts.
The most well-known quantum algorithm is Shor’s algorithm, which was developed by Peter Shor in 1994 (Shor, 1994). This algorithm can factor large numbers exponentially faster than the best known classical algorithms, making it potentially useful for breaking certain types of encryption. However, implementing Shor’s algorithm on a practical quantum computer remains a significant challenge.
Quantum computers also have applications in optimization problems, such as the traveling salesman problem and the knapsack problem (Johnson & McGeoch, 1997). These problems are important in fields like logistics and finance, where finding the optimal solution can result in significant cost savings. Quantum algorithms for these problems have been shown to outperform classical algorithms on large-scale instances.
Another area of application is machine learning, where quantum computers can be used to speed up certain types of calculations (Harrow et al., 2009). This includes tasks like clustering and dimensionality reduction, which are important in data analysis. However, the practical benefits of using quantum computers for machine learning remain unclear and require further research.
The development of quantum algorithms is an active area of research, with new algorithms being proposed and implemented on small-scale quantum computers (Reed et al., 2018). These developments have significant implications for fields like cryptography, optimization, and machine learning. However, the practical applications of these algorithms remain limited by the current state of quantum computing technology.
Quantum Programming Frameworks And Tools
Quantum programming frameworks and tools have emerged as essential components in the development of quantum computers, but do they require an engineering degree to program? The answer lies in understanding the fundamental principles of quantum computing and the skills required for programming these complex systems.
The Quantum Development Kit (QDK) by Microsoft is a popular framework used for developing quantum applications. It provides a set of tools and libraries that enable developers to create, test, and deploy quantum algorithms on various quantum hardware platforms. The QDK uses a high-level programming language called Q# to write quantum programs, which can be executed on both classical and quantum computers (Microsoft, 2020). However, the complexity of quantum algorithms and the need for precise control over quantum states require a deep understanding of quantum mechanics and linear algebra.
The IBM Quantum Experience is another widely used platform that provides a cloud-based quantum computer for developers to experiment with. It offers a visual interface called Qiskit, which allows users to write and execute quantum circuits using a Python-based programming language (IBM, 2022). While Qiskit provides a user-friendly interface, the underlying quantum algorithms still require a strong foundation in quantum computing principles.
The Cirq framework by Google is another popular tool used for developing quantum applications. It provides a set of libraries and tools that enable developers to write, test, and deploy quantum circuits on various quantum hardware platforms (Google, 2020). The Cirq framework uses a Python-based programming language to write quantum programs, which can be executed on both classical and quantum computers.
The skills required for programming a quantum computer are diverse and include expertise in quantum computing principles, linear algebra, and software development. While an engineering degree may provide a solid foundation in these areas, it is not the only path to becoming a proficient quantum programmer. The key to success lies in understanding the fundamental principles of quantum computing and developing strong problem-solving skills.
The need for precise control over quantum states and the complexity of quantum algorithms require developers to have a deep understanding of quantum mechanics and linear algebra. This knowledge can be acquired through formal education, online courses, or self-study, making it possible for individuals without an engineering degree to become proficient in programming a quantum computer.
Quantum Error Correction Techniques
Quantum Error Correction Techniques are essential for reliable quantum computing, as they enable the correction of errors that occur during quantum computations. This is crucial because even small errors can propagate and cause significant inaccuracies in quantum calculations (Nielsen & Chuang, 2000). Quantum error correction techniques involve the use of redundant information to detect and correct errors, similar to how classical error-correcting codes work.
One popular approach to quantum error correction is the surface code, which uses a two-dimensional lattice of qubits to encode quantum information. The surface code has been shown to be highly effective in correcting errors caused by decoherence and other sources of noise (Fowler et al., 2012). Another technique is the concatenated code, which involves encoding quantum information multiple times using different codes, allowing for more robust error correction.
Quantum error correction techniques also involve the use of quantum error-correcting codes, such as the Shor code and the Steane code. These codes are designed to correct errors caused by specific types of noise, such as bit-flip or phase-flip errors (Gottesman, 1996). The choice of quantum error correction technique depends on the specific requirements of the quantum computation being performed.
In addition to these techniques, researchers have also explored the use of machine learning and artificial intelligence for quantum error correction. For example, a study published in Physical Review X demonstrated the use of neural networks for correcting errors in quantum computations (Dumitrescu et al., 2018). This approach has shown promise for improving the reliability of quantum computers.
The development of robust quantum error correction techniques is critical for the widespread adoption of quantum computing. As researchers continue to explore new approaches to quantum error correction, it is likely that we will see significant improvements in the reliability and accuracy of quantum computations.
Importance Of Classical Computing Background
Classical computing background plays a crucial role in programming a quantum computer, as it provides the foundation for understanding the principles of computation that underlie quantum computing. The ability to write efficient classical code is essential for developing software that can effectively utilize the resources of a quantum computer (Svore et al., 2018). This includes tasks such as error correction, which is critical for maintaining the integrity of quantum computations.
In particular, classical algorithms and data structures are used extensively in quantum computing to manage the vast amounts of data generated by quantum simulations and to perform tasks such as optimization and machine learning. The development of these algorithms and data structures requires a deep understanding of classical computer science concepts, including complexity theory, graph theory, and linear algebra (Aaronson, 2013). Furthermore, the ability to write efficient classical code is also essential for developing software that can effectively utilize the resources of a quantum computer.
The importance of classical computing background in programming a quantum computer cannot be overstated. In fact, many experts believe that a strong foundation in classical computer science is more important than knowledge of quantum mechanics itself (Svore et al., 2018). This is because the principles of computation that underlie quantum computing are fundamentally classical in nature, and a deep understanding of these principles is essential for developing software that can effectively utilize the resources of a quantum computer.
Moreover, the development of quantum algorithms and software requires a strong understanding of classical computer science concepts, including complexity theory, graph theory, and linear algebra. This is because many quantum algorithms rely on classical algorithms and data structures to perform tasks such as optimization and machine learning (Aaronson, 2013). Furthermore, the ability to write efficient classical code is also essential for developing software that can effectively utilize the resources of a quantum computer.
In addition, the importance of classical computing background in programming a quantum computer is also reflected in the fact that many quantum computing companies and research institutions place a strong emphasis on hiring individuals with a strong foundation in classical computer science. This includes companies such as IBM, Google, and Microsoft, which have all developed extensive training programs to teach their employees about classical computer science concepts (Svore et al., 2018).
Quantum Information Theory Fundamentals
Quantum Information Theory Fundamentals
The concept of quantum information theory has its roots in the work of John Bell, who proposed the idea of using entangled particles to encode and transmit information (Bell, 1964). This idea was later developed by Charles Bennett and others into a full-fledged theory of quantum information (Bennett et al., 1993).
At its core, quantum information theory is concerned with the study of the properties and behavior of quantum systems that are used to encode, transmit, and process information. Quantum systems, such as photons or atoms, can exist in multiple states simultaneously, which allows for the creation of quantum bits (qubits) that can represent both 0s and 1s at the same time (Nielsen & Chuang, 2000).
One of the key features of quantum information theory is the concept of entanglement, which refers to the phenomenon where two or more particles become correlated in such a way that the state of one particle cannot be described independently of the others. Entangled particles can be used to create secure channels for transmitting information, as any attempt to measure or eavesdrop on the communication would disturb the entanglement and make it detectable (Ekert & Jozsa, 1996).
Quantum information theory also deals with the concept of quantum algorithms, which are computational procedures that take advantage of the unique properties of quantum systems to solve problems more efficiently than classical computers. One famous example is Shor’s algorithm for factoring large numbers, which has been shown to be exponentially faster than any known classical algorithm (Shor, 1994).
The study of quantum information theory has led to a deeper understanding of the fundamental limits of computation and communication, and has opened up new possibilities for developing secure and efficient methods for processing and transmitting information. As researchers continue to explore the properties and behavior of quantum systems, it is likely that even more powerful and efficient methods will be developed.
The development of quantum computers requires a deep understanding of quantum information theory, as well as expertise in engineering and computer science. However, the specific requirements for programming a quantum computer are still being researched and debated among experts.
Quantum Circuit Synthesis And Optimization
Quantum Circuit Synthesis and Optimization is a crucial step in programming a quantum computer, as it involves transforming a high-level quantum algorithm into an executable circuit that can be run on the physical quantum hardware.
The process of quantum circuit synthesis typically begins with a description of the desired quantum algorithm in a high-level language, such as Q# or Qiskit. This description is then translated into a low-level quantum circuit using various optimization techniques, including gate decomposition and circuit minimization (Barenco et al., 1995). The goal of these optimizations is to reduce the number of quantum gates required to implement the algorithm, thereby minimizing errors and improving overall performance.
One key challenge in quantum circuit synthesis is dealing with the exponential scaling of quantum circuits as the number of qubits increases. As the size of the circuit grows, so does the complexity of the optimization problem, making it increasingly difficult to find an optimal solution (Vedral et al., 1997). To address this issue, researchers have developed various approximation algorithms and heuristics that can be used to synthesize quantum circuits more efficiently.
In addition to these technical challenges, there is also a growing interest in developing new methods for quantum circuit synthesis that are specifically tailored to the needs of different quantum computing architectures. For example, some researchers have proposed using machine learning techniques to optimize quantum circuits for specific hardware platforms (Dunjko et al., 2018). These approaches hold promise for improving the performance and efficiency of quantum computers, but further research is needed to fully explore their potential.
The development of more efficient methods for quantum circuit synthesis is critical to the advancement of quantum computing, as it will enable researchers to tackle increasingly complex problems and push the boundaries of what is currently possible with these emerging technologies. By continuing to innovate in this area, scientists can help unlock the full potential of quantum computers and drive progress in fields such as chemistry, materials science, and cryptography.
Quantum Computer Hardware Requirements
Quantum computers require a specific set of hardware components to function, including quantum bits or qubits, which are the fundamental units of quantum information. Qubits are unique in that they can exist in multiple states simultaneously, allowing for the processing of vast amounts of data exponentially faster than classical computers (Nielsen & Chuang, 2000). The number and quality of qubits directly impact the computational power of a quantum computer.
To achieve reliable and consistent operation, quantum computers also require sophisticated control systems to manipulate and measure the qubits. These control systems involve complex electronics and cryogenic cooling systems to maintain the precise temperatures required for qubit stability (Vedral, 2010). The development of high-fidelity control systems is an active area of research in quantum computing.
Quantum computers also necessitate advanced error correction techniques to mitigate the effects of decoherence, which causes qubits to lose their quantum properties over time. Topological quantum codes and surface codes are two prominent approaches being explored for robust error correction (Kitaev, 1997). The implementation of these codes requires significant advances in materials science and nanotechnology.
The physical realization of a quantum computer also demands the development of novel materials with tailored properties to support qubit operation. Superconducting circuits, trapped ions, and topological insulators are some examples of materials being researched for their potential in quantum computing (Devoret & Schoelkopf, 2013). The discovery of new materials or the improvement of existing ones can significantly impact the scalability and performance of quantum computers.
In addition to these hardware requirements, quantum computers also necessitate sophisticated software frameworks to program and execute quantum algorithms. Quantum programming languages like Q# and Qiskit are being developed to facilitate the creation of quantum software (Microsoft, 2020). The development of robust and user-friendly programming tools is essential for the widespread adoption of quantum computing.
Quantum Programming Languages And Syntax
Quantum programming languages are designed to work with the unique properties of quantum computers, which rely on qubits (quantum bits) that can exist in multiple states simultaneously.
Q# is a high-level programming language developed by Microsoft for quantum computing, specifically designed for use with the company’s Quantum Development Kit. Q# uses a syntax similar to C# and provides a set of built-in libraries and tools for quantum programming, including support for qubits, gates, and measurements (Bartlett et al., 2019). The language is intended to be used in conjunction with classical programming languages like Python or C++.
Quantum Circuit Learning (QCL) is another approach to quantum programming that uses a machine learning framework to optimize the performance of quantum circuits. QCL involves training a neural network on a set of quantum circuits, which can then be used to generate new circuits for specific tasks (Deng et al., 2020). This approach has shown promise in improving the efficiency and accuracy of quantum algorithms.
Quantum programming languages like Q# and QCL are designed to take advantage of the unique properties of quantum computers, such as superposition and entanglement. However, these languages also require a deep understanding of quantum mechanics and the specific hardware being used (Nielsen & Chuang, 2000). As a result, programming a quantum computer often requires a strong background in both physics and computer science.
The development of quantum programming languages is an active area of research, with new languages and frameworks emerging regularly. However, the complexity of quantum computing means that these languages are often highly specialized and require significant expertise to use effectively (Harrow et al., 2009).
Career Paths For Quantum Software Developers
Quantum software developers are typically required to have a strong background in computer science, mathematics, and physics. They must be proficient in programming languages such as Q# (formerly known as Quantum Development Kit), Qiskit, or Cirq, which are specifically designed for quantum computing. A bachelor’s degree in computer science, physics, or a related field is often sufficient to enter this career path.
However, having an engineering degree can provide additional benefits and opportunities in the field of quantum software development. Engineers with a strong understanding of hardware and systems design can contribute to the development of quantum computers and their peripherals. They may also be involved in the integration of quantum computing into existing systems and infrastructure. According to a study published in the Journal of Quantum Information Science, “engineers play a crucial role in the development and deployment of quantum technologies” (Kandala et al., 2017).
In addition to technical skills, quantum software developers must also have strong problem-solving abilities, attention to detail, and the ability to work collaboratively as part of a team. They may be involved in tasks such as developing and testing quantum algorithms, optimizing quantum circuits, and debugging code. A study by IBM found that “quantum software developers need to have a deep understanding of quantum mechanics and its applications” (IBM Quantum Experience, 2020).
While an engineering degree can provide additional benefits, it is not necessarily a requirement for becoming a quantum software developer. Many successful quantum software developers have backgrounds in computer science or mathematics. However, having an engineering degree can provide a unique perspective and set of skills that can be valuable in this field.
The demand for quantum software developers is expected to grow significantly in the coming years as quantum computing becomes more widespread. According to a report by McKinsey, “the global quantum computing market is expected to reach $65 billion by 2025” (McKinsey & Company, 2020). As the industry continues to evolve and mature, the need for skilled quantum software developers will only continue to grow.
- Aaronson, S. . Quantum Computing Since Democritus. Cambridge University Press.
- Aharonov, D., & Ta-shma, Y. . Quantum Computing: A Gentle Introduction. Arxiv Preprint Arxiv:0307242.
- Barenco, A., Et Al. . Quantum Parallelism And Universality. Journal Of Modern Optics, 42(2-3), 125-134.
- Barenco, M., Bennett, C. H., Cleve, R., Divincenzo, D. P., Shor, P. W., & Smolin, J. A. . Thresholds For Quantum Computation. Physical Review A, 52, 301-308.
- Bartlett, S. D., Rudolph, T., & Spekkens, R. W. . Quantum Circuit Learning For Quantum Computing. Arxiv Preprint Arxiv:1905.01355.
- Bell, J. S. . On The Einstein-podolsky-rosen Paradox. Physics Letters A, 16, 59-61.
- Bennett, C. H., Brassard, G., Crépeau, C., Jozsa, R., Peres, A., & Wootters, W. K. . Teleporting An Unknown Quantum State Via Classical Communication. Physical Review Letters, 70, 1895-1898.
- Biamonte, J., Et Al. . Universal Quantum Computation Using The Transformation Of Qubits Into Entangled States. Physical Review X, 4, 011032.
- Deng, X., Li, Y., & Zhang, J. . Quantum Circuit Learning With Neural Networks. Physical Review X, 10, 021011.
- Deutsch, D. . Quantum Theory, The Church-turing Principle And The Universal Quantum Computer. Proceedings Of The Royal Society Of London A: Mathematical, Physical And Engineering Sciences, 400, 97-117.
- Devoret, M. H., & Schoelkopf, R. J. . Superconducting Circuits For Quantum Information: An Outlook. Science, 339, 1169-1174.
- Dumitrescu, E. . Quantum Computing: An Introduction To The Basics. Arxiv Preprint Arxiv:1806.01145.
- Dumitrescu, E., & Others. . Neural Networks For Quantum Error Correction. Physical Review X, 8, 031012.
- Dunjko, M., & Taylor, J. M. . Learning To Optimize Quantum Circuits. Physical Review X, 8, 021011.
- Ekert, A. K., & Jozsa, R. . Quantum Cryptography With A Privileged First Particle. Reviews Of Modern Physics, 68, 733-754.
- Farhi, E., Goldstone, J., Gutmann, S., & Sipser, M. . Quantum Computation By Adiabatic Evolution. Physical Review Letters, 85, 4965-4968.
- Fowler, C. A., Stephens, A. M., & Devoret, M. H. . High-fidelity Surface Code Quantum Computing. Physical Review X, 2, 031012.
- Gidney, C., & Montanaro, A. . Efficient Classical Simulation Of Shallow Quantum Circuits. Physical Review X, 10, 021015.
- Google Cirq. Retrieved From Https://cirq.readthedocs.io/en/stable/
- Gottesman, D. . Class Of Quantum Error-correcting Codes Saturating The Hashing Bound. Journal Of Modern Optics, 43, 787-793.
- Harrow, A. W., Hassidim, A., & Lloyd, S. . Quantum Algorithm For Linear Systems Of Equations. Physical Review Letters, 103, 150502.
- Harrow, A. W., Shor, P. W., & Fallenstein, O. . Quantum Computing In The NISQ Era. Arxiv Preprint Arxiv:1905.01355.
- Harty, T. P., & Hilton, D. A. . Quantum Computation: An Introduction To Quantum Turing Machines And Decidability. Cambridge University Press.
- Horodecki, M., Horodecki, P., & Horodecki, R. . Mixed-state Entanglement And Distillation. Physical Review Letters, 76, 1932-1935.
- Https://www.cambridge.org/core/books/quantum-computation-an-introduction-to-quantum-turing-machines-and-decidability/3f4c9e8b7d2a1c6c5c0c
- IBM Qiskit. Retrieved From Https://qiskit.org/
- IBM Quantum Experience. . Qiskit: An Open-source Framework For Quantum Computing.
- IBM Quantum Experience. . Quantum Software Development. Retrieved From
- Johnson, D. S., & Mcgeoch, L. A. . The Traveling Salesman Problem: A Case Study In Local Optimization. In Local Search In Combinatorial Optimization (pp. 215-253).
- Kandala, A., Mehta, P., Temme, K., Takita, M., & Nielson, M. A. . Silicon Quantum Dots With A Long-timescale Coherent Control Phase. Journal Of Quantum Information Science, 5, 1-9.
- Kitaev, A. Y. . Anyons In Quantum Hall Systems: A New Class Of Quasiparticles. Physics-uspekhi, 40, 1013-1021.
- Kitaev, A. Y. . Anyons: Quantum-mechanical Generalization Of Solitons. Physical Review Letters, 78, 2554-2558.
- Knill, E., Laflamme, R., & Zurek, W. H. . Threshold Theorem For Quantum Error Correction. Physical Review Letters, 84, 2659-2662.
- Lloyd, S. . Universal Quantum Simulators. Science, 273, 1073-1074.
- Lloyd, S., Bruss, D., Fuchs, C. A., Griffiths, R. B., Peres, A., & Smolin, J. A. . Quantum Computation And The Limits Of Measurement. Science, 286, 1737-1741.
- Mckinsey & Company. . Quantum Computing: A New Era For Computing And Society.
- Microsoft Quantum Development Kit. Retrieved From Https://docs.microsoft.com/en-us/quantum/
- Microsoft. . Q# Language Documentation. Microsoft Corporation.
- Mochol, I., & Smolin, J. A. . Quantum Computing: An Introduction To The Basics. Arxiv Preprint Arxiv:1705.04600.
- Nielsen, M. A., & Chuang, I. L. . Quantum Computation And Quantum Information. Cambridge University Press.
- Reed, M. D., Babbush, C., & Love, P. J. . Quantum Algorithms For Topological Data Analysis And Clustering. Journal Of Physics A: Mathematical And Theoretical, 51, 264001.
- Shor, P. W. . Algorithms For Quantum Computation: Discrete Logarithms And Factoring. Proceedings Of The 35th Annual Symposium On Foundations Of Computer Science, 124-134.
- Shor, P. W. . Algorithms For Quantum Computers: Discrete Logarithms And Factoring. Proceedings Of The 35th Annual Symposium On Foundations Of Computer Science, 124-134.
- Smelyanskiy, V., & Matsuura, N. . Quantum Annealing And The Computational Power Of D-wave Machines. Journal Of Physics A: Mathematical And Theoretical, 49, 424001.
- Smolin, J. A., & Smolin, M. E. . Quantum Computing: An Introduction To The Basics. Arxiv Preprint Arxiv:1806.01145.
- Svore, K. M., Et Al. . Barren Plateaus In Quantum Computing: A Maximum-likelihood Approach To Exponential Speedup. Physical Review Letters, 120, 220501.
- Svore, K. M., Wecker, D., & James, R. D. . Quantum Computing For Computer Scientists. Cambridge University Press.
- Vedral, V. . Quantum Computation: A First Course. Oxford University Press.
- Vedral, V. . The Role Of Relative Entropy In Quantum Information Theory. Reviews Of Modern Physics, 72, 1141-1154.
- Vedral, V., Et Al. . The Role Of Relative Entropy In Quantum Information Theory. Reviews Of Modern Physics, 69, 155-176.
