Developing and using Azure Quantum assignments for quantum computing courses
This past summer I was very fortunate to work with Mariia Mykhailova and Microsoft Quantum on designing two sets of Q#-based quantum computing assignments for two graduate-level courses at Purdue. Designing these assignments presented some interesting challenges and I thought what could possibly be a better place to discuss that than in this year’s Q# Holiday Calendar! Each course came with its own considerations so I will be splitting this blog post into two sections, one for each course. Both of these courses and the materials I contributed are available on edX. I’ll be linking them below so be sure to check them out!
Introduction To Quantum Science and Technology – Dr. Mahdi Hosseini
This course was definitely my favorite of the two courses I designed material for. Introduction to Quantum Science and Technology covers quantum physics in relation to quantum computing and communication protocols. Interestingly, it does not cover quantum algorithms or quantum programming! Considering that our end goal was to create Azure Quantum-based assignments, this posed a unique set of design constraints. Namely, we needed to leverage Q# and the Microsoft Azure platform WITHOUT requiring students to write a single line of code.
The solution we came up with was to create Q# interactive workbooks. The basic structure of these workbooks was as follows. Students would typically start by reading a write-up that provided context and related back to the material they were learning in class. Next, they would be presented with Q# code implementing an example or protocol. Then they would submit this code to Azure Quantum simulators or hardware and view visualizations of the program output. The last step for the student was to answer questions tying the code they are running to concepts in the course. This structure ended up working out very well. I think an example will do a great job illustrating our design philosophy.
In class, students learn about the physical realization of quantum gates on different architectures. For assignment 1 we wanted to relate this to the way we reason about these gates in an abstract manner.
Next, we dive into an application of these ideas with an example Q# program which demonstrates how this abstract model allows us to reason about quantum computation.
Lastly, the students have to answer some questions which tie things together.
It is really exciting to know that these materials have already been used at Purdue. The first session of this course using these materials is wrapping up right now. Fortunately, this has also allowed me to gather some data on student reception of the materials. So I’ll let the students speak as to whether we did a good job.
And my favorite response
I really enjoyed the assignments. Thinking about noise in quantum systems in such a straightforward way was great. I also like to relate the technology hardware to the algorithm itself, although quantum programming layer of abstraction is useful to learn about first! Being able to dial in to a real quantum machine was quite awesome.
So in short, I am happy to say that the reception has been positive. It is great to know that people are enjoying something I helped to build.
Applied Quantum Computing III: Algorithm and Software – Dr. Pramey Upadhyaya
I also had a blast writing the assignments for Applied Quantum Computing III: Algorithm and Software. This course corresponds to the last 5 weeks of a 15-week course at Purdue. The first 10 weeks are an introduction to quantum mechanics and quantum computing physics. Then for the last part of the course, students get a crash course in quantum algorithms and quantum programming. This made the task of designing these assignments a bit easier since we had the freedom to ask students to write code. We settled on a typical programming assignment structure where students were asked to implement different quantum algorithms using Q# and then run them on Azure Quantum simulators and/or hardware. The list of topics covered includes Simon’s algorithm, Bernstein-Vazirani algorithm, Grover’s algorithm, and Quantum Approximate Optimization Algorithm (QAOA).
Unlike the previous course, these assignments have yet to be used. So it remains to be seen how students will react to these quantum programming assignments. Maybe I am biased 🙂 but I think they will enjoy learning about quantum programming using the powerful tools provided by Microsoft QDK and Microsoft Azure. I am certainly looking forward to seeing the feedback once the assignments are implemented in this coming Spring semester.