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 need XWhat is X?What must it remember?What can happen to it?What must always hold?ExamplesRepresent the stateWhich structure?Each operationPseudocodeImplement oneTest with examplesEdge casesIntegrate
The principle — impl §78
If you do not know how to build the thing, make the thing smaller until you reach something you do know how to build.

"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

concept · depth 0

Implement a shopping cart

A temporary list of products a shopper intends to buy, with a count for each.

it needs — pick one to go down that way
Following the first need down to a primitive
  1. Implement a shopping cart needs to addItem: Put a product in the cart, or raise its count if it is already there.
  2. 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.
  3. 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).

concept
operation
sub-step
primitive

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.

SIMPLIFIED

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.