Files
Vincent Bourdon 9af114e391 Initial import
2026-06-09 16:14:55 +02:00

2.9 KiB

Task 13 — Curriculum module 4 (2 qubits et intrication)

Index: README. Spec: design.

Goal

Append module 4 (3 exercises on Bell state and CNOT semantics) to curriculum/curriculum.json.

Prerequisites

  • Task 12 merged.

Files

  • Modify: curriculum/curriculum.json

Steps

  • Step 1: Insert after module 3
,
{
  "id": 4,
  "title": "2 qubits et intrication",
  "lessons": [
    {
      "id": 1,
      "title": "Le circuit de Bell et l'intrication",
      "concept": "Deux qubits peuvent être 'intriqués' : mesurer l'un détermine instantanément le résultat de l'autre. L'état de Bell est le prototype de l'intrication.",
      "example_circuit": "OPENQASM 3.0;\ninclude \"stdgates.inc\";\nqubit[2] q;\nbit[2] c;\nh q[0];\ncx q[0], q[1];\nc = measure q;",
      "what_to_observe": "Lance avec 1000 shots. Tu dois voir uniquement '00' et '11' en quantités égales — jamais '01' ou '10'.",
      "exercises": [
        {
          "id": "4-1-a",
          "prompt": "Crée un état de Bell entre 2 qubits : la mesure doit donner uniquement '00' ou '11'.",
          "hint": "H sur q[0], puis CX q[0]→q[1].",
          "criteria": {
            "required_outcomes": [
              {"bitstring": "00", "min_ratio": 0.4},
              {"bitstring": "11", "min_ratio": 0.4}
            ],
            "forbidden_outcomes": ["01", "10"]
          },
          "feedback_pass": "Excellent ! Tu as créé l'état de Bell.",
          "feedback_fail": "Tu dois voir uniquement '00' et '11'. Utilise H q[0] puis CX q[0],q[1]."
        },
        {
          "id": "4-1-b",
          "prompt": "CNOT sans superposition : pars de |00⟩ et applique CX. Que vois-tu ?",
          "hint": "Sans H, q[0] reste |0⟩.",
          "criteria": {
            "required_outcomes": [{"bitstring": "00", "min_ratio": 0.99}],
            "forbidden_outcomes": ["01", "10", "11"]
          },
          "feedback_pass": "Correct ! CNOT avec contrôle=|0⟩ ne change rien.",
          "feedback_fail": "Tu dois obtenir '00' systématiquement."
        },
        {
          "id": "4-1-c",
          "prompt": "Prépare q[0]=|1⟩ avec X, puis applique CX. Que voit-on sur q[1] ?",
          "hint": "CNOT flip la cible quand le contrôle est |1⟩.",
          "criteria": {
            "required_outcomes": [{"bitstring": "11", "min_ratio": 0.99}],
            "forbidden_outcomes": ["00", "01", "10"]
          },
          "feedback_pass": "Parfait ! |10⟩ devient |11⟩ après CX.",
          "feedback_fail": "Avec q[0]=|1⟩, le CNOT doit flipper q[1]."
        }
      ]
    }
  ]
}
  • Step 2: Verify
cargo test tutor::tests::curriculum_json_deserializes_with_module_1 2>&1 | grep "test result"

Expected: test result: ok. 1 passed.

  • Step 3: Commit
git add curriculum/curriculum.json
git commit -m "feat: add curriculum module 4 (2 qubits et intrication)"