This is an introductory course about designing solutions for computation problems using the quantum computing models. It has been shown that these models allow us to solve certain problems more efficiently compared to classical platforms (like Digital circuits or Turing machines). On the other hand, there are certain scenarios where this model is siimlar or even worse than classical platforms. In this course a student will learn about the models and interesting solutions (circuits, algorithms) for some problems from the perspective of computer science. The first half of the course will introduce the postulates of quantum computing, operations and operators and basic structure of circuits and algorithms on the circuit model and the Turing machine model. We will also cover some simple but amazing solutions like quantum teleportation, super-dense coding and Deutsch-Jozsa algorithm. The second half of the course will cover important algorithmic tools like the quantum Fourier transformation, amplitude amplification and eigenvalue estimation and discuss important algorithms like Grover's search, Shor's factoring, BB84 protocol which bring significant efficiency compared to classical algorithms. Depending upon time and interest, some recent advances will be covered. Students may have to read a recent/classical research paper and/or simulate some of their algorithms and circuits on some quantum circuit simulator (e.g., Microsoft LIQUi simulator) to get a better feel about the system.

1. Students are able to understand the principles of quantum computing.

2. Students are able to understand different quantum computing models used in different applications like search, numerical algorithms, cryptography, etc..

3. Students are able to Design and/or analyse quantum algorithms and circuits.

4. Students are able to explain and/or implement simple algorithms and circuits from research papers.