A course for someone who has never used a real computer — written for a kid moving from an iPad to a Linux desktop, and usable by anyone teaching the same jump.
It is the content half of omarchy-elementary, an Omarchy shell plugin that renders these lessons in a window beside a terminal. The plugin and the teaching are deliberately separate repos: you can fork this one, rewrite every lesson, and point the plugin at your copy without touching any code.
Nothing here is specific to that plugin, though. These are plain markdown files and a JSON index — readable on GitHub, in Obsidian, or in any editor.
| Section | Lessons | What it is for |
|---|---|---|
| Basics | 14 | The floor. Confidence, mouse, keyboard, launching, windows, workspaces, files, filenames, dialogs, copy/paste, right-click, deleting. |
| The Terminal | 7 | A light bridge, not a destination: the terminal as another window into the same files. |
| Arduino | 5 | Finding and handing off code someone else wrote — the computer half of arduino-missions, which teaches the circuits. |
| Spike | 3 | Blocks already known, then the same ideas typed out. |
| Games | 5 | The payoff, and some computing history: Commander Keen and Wolfenstein 3D. |
Basics unlocks everything and is not optional — you cannot pick an Arduino sketch, install a game, or use a terminal without knowing what a file is. The Terminal depends on Basics. Arduino and Spike run in parallel after it. Games sits at the end as the reward, and can be revisited whenever morale needs it.
This course teaches the computer. Its companion, arduino-missions, teaches the electronics — 22 built-and-tested missions with breadboard photographs, meant to be printed. They meet at the Arduino section here: this course covers finding the sketch, plugging in the board, and what uploading does; the missions take over at the wiring.
Two lessons of 34 are written: The Mouse and Filenames. The rest are placeholders that say so — the structure is real, the prose is not yet. Filenames is the one to read first if you want the intended voice: short sentences, one idea per heading, and a concrete "find it again tomorrow" test at the end rather than a quiz.
The course teaches how computers work in general and how one particular
machine works. The general idea goes in the prose; the specific keystroke goes
in a > [!machine] callout, so the machine-specific half stays visible and is
the part a fork rewrites.
course.json the index: sections, lessons, reading order
basics/*.md lesson bodies
cli/*.md
arduino/*.md
spike/*.md
games/*.md
course.json is the only file whose location is fixed. Lessons live wherever
its file paths point.
A lesson's progress is stored by section-id/lesson-id, never by filename, so
files can be renamed and reordered freely. Changing an id is what resets a
lesson to unread — treat ids as permanent once anyone has read the course.
Plain markdown, plus three extensions the reader understands:
| Syntax | |
|---|---|
==marked== |
Highlight — the thing on the page they must not miss |
> [!warning] Title |
Callout: an aside off the main thread |
> [!machine] Title |
The bit that is true of this computer specifically |
 |
A picture, with the alt text as its caption |
```bash |
A command to type, on its own selectable surface |
Full contract, including what does not render: docs/content-format.md.
A file may open with a # Title and carry YAML frontmatter; the reader drops
both, since it draws the title from course.json. They are kept so each lesson
still reads correctly on GitHub and in Obsidian.
Point the plugin at this repo:
omarchy bar set elementary curriculum https://github.com/gig3m/elementary-curriculum.gitOr at a path to your own clone. A local path is read in place and never pulled, which is the way to write lessons and see each save immediately.
CC BY 4.0 — fork it, rewrite it, teach with it. Attribution asked, nothing else.