• Stars
    star
    150
  • Rank 247,323 (Top 5 %)
  • Language
    Jupyter Notebook
  • Created about 6 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

โš› 10 week Practical Course on Quantum Information Science and Quantum Computing - with Qiskit and IBMQX

Teach Me Quantum

A university-level course on Quantum Computing and Quantum Information Science that incorporates IBM Q Experience and Qiskit. This course is adequate for general audiences without prior knowledge on Quantum Mechanics and Quantum Computing (see prior knowledge), has an estimated average duration of 10 weeks at 3h/week (see duration) and is meant to be the entrypoint into the Quantum World.

This course is Open-source and appropriate for both autodidacticism as well as classroom teaching by educators, professors and lecturers in their own classes. Given the dynamic nature of the topic, any open-source contributions and future improvements are welcome.

๐Ÿ† This project was the winner of IBM Q Teach Me Quantum award!

Course Overview

Prior Knowledge

Students of this course are expected to be familiar with (this can be done while going through the course):

  • Python language
  • Jupyter Notebook environment
  • Some linear algebra: inner and outer products, eigenvalues, norms, transpose, adjoints (complex conjugates), tensor product, ...

Learning Goals

After completing this course, students should be able to:

  • Understand the basics of Quantum Mechanics
  • Know how a computing model can be built around Quantum Mechanics
  • Understand the advantages, disadvantages and implications of Quantum Computing
  • Understand Quantum Information Science and how it contrasts with classical information theory
  • Leverage QISKit towards research and development in the Quantum World
  • Understand the empirical differences between Quantum Simulators and real Quantum Devices (such as those available in IBMQ)
  • Design, interpret and deploy quantum circuits (simulators and real processors)
  • Know and describe a few of the most common quantum algorithms: Deutsch, Grover, Shor
  • Be able to quickly understand new quantum algorithms based on the same principles: Simon, ...
  • Be able to quickly understand new principles of quantum computing: Adiabatic, ...
  • Understand the impact that the advance of quantum computers can have on the world as we know it
  • Understand High Level applications of near-end quantum algorithms, namely how to use qiskit-aqua for solving real world problems
  • Move on to deeper waters, by exploring according to their heart's desire!

Duration

  • Estimated average duration of 10 weeks at 3h/week
  • Duration is flexible depending on level of depth a teacher imposes on each week.
  • Usually 1h theory + 2h practice, except for:
    • week 0 (1h + 0h = 1h)
    • week 1 (1h + 1h = 2h)
    • week 9 (2h + 0h = 2h)
  • Estimated total time: 25h to 30h.

Customizing Slides

Reusing Slides

The materials in this course can be adapted to specific classes, contexts, schools,... to the desire of the educators.

The author, date and instute properties of each presentation is defined in the respective macros.sty file (this file is an exact copy for each week). If you want to update global settings for all weeks (like the author, update links colors, update code snippets display, ...) you can use the sh replicate_macros.sh (linux) | replicate_macros.bat (windows) to replicate the changes from a copy of the file for every week's folder (the source file must be in the utils folder, there is already an updated version of macros.sty in there).

The constraint for using this materials is to replace the \author[]{} command by the following command: \author[LASTNAME]{FIRSTNAME LASTNAME,\\ \scriptsize{based on slides by \textbf{Miguel Sozinho Ramalho}}} with the update author info.

Animating Slides

Each .pdf file for slides is static, but if you want to include animations you can do so by replacing the document class in the first line of the main.tex files by \documentclass[handout]{beamer}) and following these instructions.

Adding Notes to Slides

This can also be accomplished by appending the following lines before \begin{document}:

\usepackage{pgfpages}
\setbeameroption{show notes}
\setbeameroption{show notes on second screen=right}

Compiling LaTeX files

To achieve this use any LaTeX compiler of your choice, if you have pdflatex you can simply do pdflatex main.tex on each week's latex folder.

Presenting Slides with Notes and/or Animations

To present the slides with notes or with animations will only work with an external program, I advise dannyedel/dspdfviewer which also has dual screen and timer functionality.


Aditional notes

Each week's slides has a particular theme, that is to help students distinguish between them and strengthen the learning process by fostering association.

Final remarks

This was an excelent oportunity to both teach and learn. I have sought to come up with a methodology of how I wanted my quantum education to have been, hopefully this will help others with similar learning tastes. If not, oh well, shift happens...

More Repositories

1

election-watch

๐Ÿ—ณ๏ธ+๐Ÿ‘€ A platform to protect elections in a disinformation world.
Jupyter Notebook
44
star
2

SigTools

๐Ÿ“† Sigarra Tools | An extension that makes the information system of the University of Porto slightly better.
JavaScript
37
star
3

twitter-watch

๐Ÿฆ Highly configurable Twitter data collection framework
Jupyter Notebook
34
star
4

desarquivo

Portuguese web archive for justice, journalism and truth | Arquivo.pt para justiรงa, jornalismo e verdade
Vue
32
star
5

feup-iart-summary

Artificial Intelligence Course - Summaries, Exams, Minitests and Comic Sans
Prolog
22
star
6

json-tv-quotes

๐ŸŽฅ A comprehensive and community built list of quotes from movies and tv shows
TypeScript
21
star
7

sigpy

๐Ÿ”จ Python Module: Sigarra API based on Recursive Web Scraping Parser (wtf)
Python
20
star
8

ninja-challenge

๐Ÿฑโ€๐Ÿ‘ค Some thoughts on the problems of a JS security contest โ›ฉ๏ธ
12
star
9

my-slack-workspaces

Browser extension that lists slack environments. easy.
JavaScript
9
star
10

Pocket-ReadingTime-Estimation-Visualization

โŒš Calculate the amount of time each Pocket Article will take reading by adding a tag like "10 min"
Python
9
star
11

did-facebook-leak-my-phone

Website to check if facebook leaked your phone
Jupyter Notebook
8
star
12

grover-max-cut

Implementation of a new Quantum Oracle for solving the Max-Cut Problem with Grover Search Algorithm
Jupyter Notebook
7
star
13

feup-mfes-summary

Some useful Alloy tips and tricks to get around in MFES
Alloy
6
star
14

feup-lbaw

University Subject - Monstrous project done with Laravel and some of its features
PHP
6
star
15

bithackathon

Code and Ideas for BIT Hackathon by SONAE MC for team Pyto
Vue
6
star
16

fcup-abi

Algorithms for Bionformatics - Python Module to handle biological sequences and run common algorithms and techniques
Python
4
star
17

feup-plog

๐Ÿ”บ University Subject - Logic Programming (Programaรงรฃo em Lรณgica) - LYNGK board game + Constraint Satisfaction Problem
Prolog
4
star
18

fcup-bdcc

Big Data & Cloud Computing - PySpark, Dask, GCP, ...
HTML
3
star
19

feup-iart

Muticlass classification of Frog Species ๐Ÿธ using Deep Neural Networks in TensorFlow, based on their calls ๐Ÿ”‰
Jupyter Notebook
2
star
20

feup-mfes

Alloy4fun from 0 to reality
JavaScript
2
star
21

poc-touchain

POC aiming at increasing transparency in EU-level organizations
HTML
2
star
22

feup-comp

Pattern identifying tool
Java
2
star
23

linkedin-analysis-of-a-polarizing-post-on-abortion

How to scrape a linkedin post + what we can learn from it.
Jupyter Notebook
2
star
24

Pyhparser

๐Ÿ Hackathon and Data Extraction Python parser. Reads text and files into accessible variables.
Python
1
star
25

nextoi

Next To Implement App | sorting personal projects in an overfitted manner
TypeScript
1
star
26

feup-rcom

Univeristy Subject - Computer Networks (Redes de Computadores)
C
1
star
27

cgd-analysis

Caixa Geral de Depรณsitos (CGD Bank) on a Jupyter Notebook - import your csv movements and watch the magic happen
Jupyter Notebook
1
star
28

hackacity2019

Team PYTO's work at Hackacity 2019.
Jupyter Notebook
1
star
29

my-public-ip-api

Use gh-pages as an API for the public IP (typically for dynamic IPs) of your home network
Python
1
star
30

hungary-orban-emails

Collection of emails sent from the Hungarian gov and Viktor Orbรกn to the citizens of Hungary
Python
1
star
31

dft-bot

Digital footprint tracking (telegram/slack/discord) bot that makes command line tools easy to use
Python
1
star
32

twitter-response-codes

extractor of twitter response codes into usable json format
Python
1
star
33

feup-cal

๐Ÿšš University Project - Algorithm Design and Analysis - Garbage Truck Route Generation
C++
1
star
34

feup-lcom

University Project - Computer Laboratory
C
1
star
35

uoe-extreme-computing

No, no coding under freezing temperatures, it's more like advanced distributed systems.
Jupyter Notebook
1
star
36

theMatrixApp

Take the right pill and the money remains yours
Java
1
star
37

optimizing-debts-repayment

Using Operations Research to minimize transactions in a debt network
Python
1
star
38

deputados-portugal-jan-2022

Dados recolhidos e organizados sobre os deputados eleitos a 30 de janeiro de 2022.
HTML
1
star