An Obsidian vault covering classical data structures, algorithms, and the recurring problem-solving patterns behind most interview / LeetCode-style questions. 42 concept notes, 42 spaced-repetition decks, 380 cards.
The notes are the underlying knowledge, not problem write-ups — LeetCode already owns problem-solving. This is the layer that makes the problems easy.
- Install Obsidian.
- Open folder as vault → pick this repo's root.
- Obsidian will ask whether to enable community plugins. Say yes.
The two plugins it needs ship with the repo, already configured — nothing to install:
| Plugin | Why it's needed |
|---|---|
| Spaced Repetition | Turns the decks into a reviewable flashcard queue. |
| Dataview | Powers the auto-generated note lists in the Maps. |
Without them the notes still read fine as plain markdown; you just lose the review queue and the Map indexes.
Two parallel halves, plus an index.
Maps/ ← start here
DSA.md ← domain root hub
Data-Structures.md
Algorithms.md
Problem-Solving-Patterns.md
Knowledge/DSA/ ← the knowledge (read these)
Data-Structures/
Algorithms/
Problem-Solving-Patterns/
Review/DSA/ ← the flashcards (review these)
...one -Deck.md per concept note
Read from Knowledge/, review from Review/. Every concept note has a
matching deck, and each deck's frontmatter carries a source: field pointing
back at the note it was distilled from. Learn the concept first, then let the
cards stop it decaying.
If you're starting from scratch, open Maps/Study-Order.md. It sequences all 42
notes so that each one is readable by the time you reach it — the Maps are a filing
system, not a curriculum, and reading them top-to-bottom lands you on Dijkstra before
you've met a heap or a graph.
Otherwise start at Maps/DSA.md and navigate down — the Maps carry the full
membership list for each cluster.
DSA is a domain. Both trees are keyed by domain at their first level
(Knowledge/<Domain>/, Review/<Domain>/), so further domains — System Design,
ML Systems, ML — slot in alongside it without anything moving.
With Spaced Repetition enabled, the cards are tagged
#flashcards/computer-science/.... Command palette (Ctrl/Cmd-P) →
"Spaced Repetition: Review flashcards". It builds a queue and reschedules
each card as you grade yourself.
The queue starts empty — no scheduling history is baked in, so every card is fresh for you.
Card format is the plugin's multiline style: question, a lone ? on its own
line, then the answer.
As you review, the plugin writes scheduling comments (<!--SR:...-->) straight
into the deck files. If you're tracking this repo in git, that means every
review session shows up as dozens of modified files.
Run this once, and git will quietly strip those comments from commits while leaving them on disk, so reviewing never dirties your working tree:
git config filter.stripSR.clean "sed -e '/^[[:space:]]*<!--SR:/d'"The .gitattributes already points the deck files at this filter; git just
won't run a filter it hasn't been told the definition of (clean filters can run
arbitrary code, so they deliberately don't survive a clone). Skip it and nothing
breaks — your review history simply gets committed along with everything else.
Conventions live in CLAUDE.md — read that before writing notes, especially the
-Deck suffix rule, which is load-bearing and not obvious.
A new domain (System Design, ML Systems, …) is three things and no restructuring:
a Knowledge/<Domain>/ tree, a mirrored Review/<Domain>/ tree, and a
Maps/<Domain>.md root hub. Create them when the first note exists, not before.
DS&A is the first domain, not the only one. The layout is deliberately domain-keyed so these can land as peers beside it, with nothing moving:
- System Design — the classic interview surface: caching, sharding, replication and consistency, queues, rate limiting, the CAP trade-offs. Same shape as here: concept notes that teach the why, decks that stop it decaying.
- ML System Design — the applied layer. Serving and inference, feature stores, training/serving skew, evaluation and drift. Systems questions that happen to be about models — not ML theory.
Nothing is scaffolded ahead of time; there are no empty folders waiting to be filled.
A domain appears the day its first note is written. The recipe is the three steps
above, plus an entry in Maps/Study-Order.md once it has enough notes to need a path
of its own.