I recently read this lesson and enjoyed it, but it felt like there was too much emphasis on memorizing, and not enough on actually understanding stuff. In my humble opinion, understanding should always come first.

For example, there is the part that explains that the "ket" vector is the amplitudes arranged vertically, and the "bra" vector is the same amplitudes arranged horizontally, but their imaginary parts have a sign flipped. On one hand, thank you! This is the part that in my previous experience no one ever bothered to explain: everyone either only talks in metaphors with no math, or writes equations that use these symbols without an explanation what they mean. And it's quite simple and it only takes one sentence to explain.

On the other hand, what is the actual meaning of flipping the sign of the imaginary part of the amplitude? Why are we even doing that? Took me a moment, and then I realized: oh, that's just a mathematical trick how to express the (square of) length of a complex number without having to talk about its real and imaginary parts explicitly. Like, if you have a complex number "x = a+bi", you could say that the square of its length is "aa+bb", but you could also say it is "x'x" (where x' = a-bi). And the "<xyz|xyz>" is a sum of them, which is supposed to be normalized to 1.

But this second part was not explained in the lesson. To be fair, the authors said that you were supposed to know the math before reading this. But there is a difference between knowing enough math to understand what it means to flip the sign of the imaginary part of a complex number, and understanding why are you doing that specific operation in this specific context.

Similarly, the reader is told at the beginning that |0> is vector [1 0], and |1> is vector [0 1]. Later at some moment there are also introduced things like |00> and [1 0 0 0], and you are supposed to guess how they map to each other, which is not really difficult, but why not say it explicitly? (It would help to know whether |01> is [0 1 0 0], and |10> is [0 0 1 0] or the other way round.)

The explanation that I would like to hear is something like: If you have N possible classical outcomes, you represent it by a vector with N positions, each position containing the amplitude of one classical outcome. (So you have 2-sized vectors for 1 qubit, 4-sized vectors for 2 qubits, 8-sized vectors for 3 qubits, etc.) The mapping between the classical outcomes and the positions in the vector is completely arbitrary -- by convention we use [1 0] for "the value is 0", and [0 1] for "the value is 1", but it would also work the other way round. With the matrices that represent quantum gateways, the rows and columns need to match the vectors; the columns represent the situation before applying the gate, and the rows represent the situation after applying the gate.

I had to read the lesson carefully three times, until I understood all these details. And I am grateful for that, because with most other lessons merely "reading carefully three times" would not be enough for me to understand. But, ironically, it defeats the meta-lesson about the effectiveness of spaced repetition -- if instead I only read the lesson once and then kept doing the spaced repetition, I would remember the selected key sentences, but I would have no idea about what half of that actually means. I would definitely not be able to actually apply any of the mathematical knowledge in real life; for example, I would remember the 2x2 matrix for Hadamard gate, but I would have no idea how to change it into a 8x8 matrix necessary for "we have three qubits, and the Hadamard gate is applied to the second one".

So my impression is that the parts about quantum physics are awesome, but the parts about spaced repetition are... actually kinda harmful for people who desire to learn.