-
Couldn't load subscription status.
- Fork 151
Description
Current ExploringDeutschJozsaAlgorithm tutorial can not be used with the modern QDK. It would be nice to have it available as part of the new katas experience.
It has a lot of content (4 separate notebooks!)
Steps:
- Split the tutorial in two: Deutsch algorithm and Deutsch-Jozsa algorithm
- From current part I, I would drop the tasks on implementing classical tasks, and keep just the problem definition for Deutsch-Jozsa algorithm tutorial.
- Current part II would become Deutsch algorithm tutorial, I'd keep the oracle implementation examples but add demos to show what these examples do to states, using 0.6|0> + 0.8|1> (currently the oracles are just compiled, not executed).
- Current part III would become Deutsch-Jozsa algorithm tutorial. I would drop the videos and the section that explores inputs other than constant and balanced functions, it seems like too much. I would also convert some of the oracle examples into exercises to give the learner more practice.
- Drop current part IV, since it focuses on Azure Quantum job submission, and we cannot do that from the website.
- The images (Deutsch algorithm) have to be redesigned to match the overall theme of the site.
- The solution descriptions need to be written, since the original tutorials don't have them.
- Ideally we'd need AllowAtMostNCallsCA equivalent to verify how many oracle calls the solution did (Support AllowAtMostNCallsCA operation to limit the number of operation calls that can be done in the code #1154), but we can have the first version without this.
Open question: how to merge this with the old DeutschJozsaAlgorithm kata?
DeutschJozsaAlgorithm kata predates ExploringDeutschJozsaAlgorithm tutorial, so it uses different notations (marking oracles instead of phase oracles). It also predates the Oracles tutorial, so a lot of the material is already covered there, including conversion from marking to phase oracle. However, it has some unique content - Bernstein-Vazirani algorithm (this one has a lot fewer resources covering it than DJ, so it's good to keep it) and nice marking oracles.
I would suggest the following:
- Add Bernstein-Vazirani algorithm as the last task to Deutsch-Jozsa algorithm tutorial (the math is exactly the same, only the interpretation differs, so it makes sense to keep them together rather than doing a standalone tutorial) - need to pull in some math about applying Hadamard gates to an arbitrary state for this, since we're taking a shortcut in DJ tutorial looking at just one state
- Add marking in tasks 1.5, 1.6, 1.8 to the future MarkingOracles kata
### Tasks
- [ ] https://github.com/microsoft/qsharp/pull/1228
- [ ] https://github.com/microsoft/qsharp/pull/1231
- [ ] https://github.com/microsoft/qsharp/pull/1605
- [ ] https://github.com/microsoft/qsharp/pull/1578