Tutorials
Step-by-step tutorials for learning Piccolo.jl. Each tutorial builds on previous ones, introducing new concepts progressively.
Learning Path
For Beginners
If you're new to quantum optimal control or Piccolo.jl:
- Your First Gate - Complete walkthrough of X gate synthesis
- State Transfer - Learn about KetTrajectory for state preparation
- Multilevel Transmon - Work with realistic multilevel systems
For Experienced Users
If you're familiar with quantum control concepts:
- Multilevel Transmon - EmbeddedOperator and leakage suppression
- Robust Control - SamplingProblem for parameter robustness
Tutorial Overview
| Tutorial | Duration | Topics |
|---|---|---|
| Your First Gate | 15 min | Systems, pulses, trajectories, solving, analysis |
| State Transfer | 15 min | KetTrajectory, state preparation, coherent gates |
| Multilevel Transmon | 20 min | TransmonSystem, EmbeddedOperator, leakage |
| Robust Control | 20 min | SamplingProblem, parameter uncertainty |
Prerequisites
Before starting the tutorials, ensure you have:
- Julia 1.10+ installed
- Piccolo.jl installed:
using Pkg; Pkg.add("Piccolo") - CairoMakie for plotting:
using Pkg; Pkg.add("CairoMakie")
Test your setup:
using Piccolo
using CairoMakie
println("Setup complete!")What You'll Learn
Your First Gate
- Defining quantum systems with
QuantumSystem - Creating control pulses with
ZeroOrderPulse - Setting optimization goals with
UnitaryTrajectory - Solving with
SmoothPulseProblem - Analyzing results with
fidelity()and plotting
State Transfer
- Using
KetTrajectoryfor state-to-state transfer - Working with
MultiKetTrajectoryfor multiple state mappings - Understanding coherent fidelity for phase-sensitive gates
Multilevel Transmon
- Using
TransmonSystemfor realistic superconducting qubits - Defining subspace gates with
EmbeddedOperator - Suppressing leakage to higher energy levels
- Using
PiccoloOptionsfor leakage handling
Robust Control
- Creating system variants for parameter uncertainty
- Using
SamplingProblemfor robust optimization - Evaluating robustness across parameter ranges
- Combining robustness with time optimization
Running the Tutorials
Each tutorial is a complete, runnable Julia script. You can:
- Read online: Follow along in the documentation
- Run locally: Download the
.jlfile from thedocs/literate/folder - Copy-paste: Copy code blocks into your Julia REPL
Next Steps
After completing the tutorials:
- Explore Problem Templates for the full API
- Read Concepts for detailed documentation
- Check How-To Guides for specific tasks