Start here

What this site is

A structured curriculum that takes you from zero to research-capable EEG analysis, in eight levels. The through-line is judgment: knowing what data should look like and recognizing when something is wrong. It is not tool documentation and not a math course. MNE-Python is the vehicle; EEGLAB and FieldTrip equivalents appear in each lesson’s “In other tools” sidebar.

Everything here runs free: open datasets, open-source tools, no accounts.

Who it is for

Graduate students, postdocs and engineers entering EEG analysis; practitioners who learned through a GUI and want to script reproducibly; BCI and neurotech engineers who need the neuroscience judgment they skipped. Assumed: basic Python (functions, NumPy arrays), high-school algebra and trigonometry. No prior signal processing, no prior EEG.

How the ladder works

Each level adds one capability and its failure mode — no technique is introduced without showing what it looks like when misapplied. Two or three spine datasets recur across every level so familiarity accumulates. Every level has at least one “look at the data and decide” exercise (the judgment thread), and statistics appear where they are used before consolidating in Level 6.

All eight levels are written: 56 lessons and 8 capstones, with 26 widgets, 31 pitfall entries and 59 notebooks. The author reviewed every page on 2026-09-19 and they are published.

Some published pages still carry TODO(confirm) markers, and they are left deliberately visible. A marker means one specific claim has not yet been checked against a primary source — not that the page is unfinished. A page that has any says so at the top, with a count. Treat a marked claim as provisional and follow the citation rather than quoting the sentence.

Two tiers of interactivity

Widgets (the Labs) run in your browser instantly with no kernel. They work on short real snippets of public datasets and do their signal processing on-device. Each has a “What to look for” checklist, a Reset button, a Share-state button that encodes the widget’s state in the page URL so you can send a view to someone, and a Fullscreen button.

Notebooks are the practice tier. Each lesson with a notebook shows a card with three buttons: Open in Colab (disabled, because the repository is private and Colab cannot read it), Download the .ipynb, and View rendered HTML. Notebooks download only the subset of a dataset they need, from the dataset’s official source, and run top-to-bottom in a clean environment.

Setup

In the browser only. Nothing to install; widgets and rendered notebooks work as they are.

Colab. Open a notebook’s Colab link; its first cell installs pinned dependencies. Colab’s free tier is the reference environment (each notebook is designed to run in under 10 minutes there).

Locally. Create a Python environment (Python 3.10 or later; TODO(confirm) the exact minimum), then install the pinned dependencies from notebooks/requirements.txt. MNE-Python is the core dependency; each notebook’s first cell lists what else it needs. The shared helpers in notebooks/_shared/helpers.py fetch spine-dataset subsets into a local cache.

Exercises

Each lesson has at least one checkable exercise: numeric (with a tolerance and units), multiple-choice, multiple-select, drag-to-order, a checklist, a drill graded by a widget, or a free-response with a model answer to compare against. Checking happens in your browser with immediate feedback. It is not anti-cheat and is not meant to be: the point is to find out whether you can do the thing.

How progress is stored

Progress — lessons marked complete, exercise results, capstone self-assessments — is stored only in your browser’s localStorage. There are no accounts and nothing is sent to a server. This means progress is per browser and per device: clear your browser data and it is gone. Use the progress tracker’s Export button to save a JSON file and Import to restore it or move it to another device.

Learning paths

If you have a specific goal, the four paths filter and order the ladder for ERP research, oscillations, decoding and BCI, and real-time and low-channel systems. Paths do not add content; lesson pages keep their own prerequisite links.

Datasets

This site uses only publicly licensed datasets. It never redistributes a dataset: it ships short snippets and precomputed products with provenance, notebooks that download subsets from official sources, and a directory that helps you find, cite and license-check every dataset it knows about. Each snippet’s license and source are shown under the widget that uses it.

Your progress

0 lessons complete · 0 exercises recorded · 0 capstone rubrics — stored only in this browser, never sent anywhere.

When importing