Go One Primitive Lower
Every time you press the button, the thing you do not know how to build is replaced by the smaller things it needs — until you reach something you already know. Then you build back up.
"I don't know how to implement a shopping cart" is not one gap; it is a stack of them, and only the bottom one is real. The walk below is over a real graph: concept → operation → sub-step → primitive. There is no rung below a primitive — the next step is a DSA lesson, not more abstraction.
Which thing do you not know how to build?
The §78 chain for this one: Implement a shopping cart → addItem → Find the existing item → Loop through a collection → Compare two ids
Where you are
Implement a shopping cart
A temporary list of products a shopper intends to buy, with a count for each.
- ↓ Implement a shopping cart needs to addItem: Put a product in the cart, or raise its count if it is already there.
- ↓ addItem needs to find the existing item: Look through the entries for one with this product id and hand it back if there is one.
- ↓ Find the existing item needs to loop through a collection: Visit every element of a list one at a time, from the first to the last. — a primitive, taught in Array
Teach me only what I need
impl §43 — the foundations this concept's prerequisites touch, and nothing else.
- VariablesA variable is a named place holding one value; assigning gives it a new one.array →
- Iteration and loopsVisiting every element of a collection in turn, doing the same thing to each.array →
- ConditionalsChoosing between two paths based on a yes/no check.array →
- FunctionsA named block that takes inputs and can be called from anywhere; the building block every operation becomes.recursion →
- Return valuesA function hands one value back to its caller; find returns the element or nothing.recursion →
- ArraysAn ordered list of values; each has a position, and you can read, add and remove by position.array →
6 of 16 foundations. Not recursion, not sorting, not the course — the shopping-cart needs these, and you can come back for the rest when a concept needs them.
The prerequisite graph
impl §42 — everything the concept needs, every node after the things it needs (a real postorder over the graph).
Click a node to jump to it; the primitives row is the boundary where Atlas hands over to DSA.
Missing foundations
impl §41 — say what you do not understand; Atlas routes it to the foundation, not to more abstraction.
the rule Atlas does not stack more abstraction on a gap. A missing foundation is routed to the lesson that teaches it, and the concept waits until you are back.
Six graphs, hand-built to mirror their concepts, and sixteen foundations matched by keyword. The routing is a keyword match, not an understanding of your sentence: "I don't want to sort this" still routes to sorting. Several foundations share one DSA lesson because that is the lesson that exists; the model does not invent ids to make the table one-to-one.