The Keras hello-world. keras.Sequential([layer, layer, layer]) is the API the textbook puts on page 1, and 80% of small-to-medium models really are this simple. We build it from scratch, train MNIST, and look hard at when this API stops being the right tool.
A list is a model
The Sequential model is the simplest way to build a neural network in Keras: a linear stack of layers where the output of each layer feeds straight into the next, first to last, no detours. The mental model is literally a Python list — you hand Keras an ordered list of layers and it wires them end to end for you.
That's the whole idea, and its power is that it solves the most common case with almost no ceremony. A standard MLP, a plain CNN, an RNN stack — these are all just "do this, then this, then this," and Sequential is the most honest representation of that shape.
Two ways to spell it
There are two equivalent constructors (see the Code section): pass the full list to keras.Sequential([...]), or start empty and call model.add(layer) one at a time. The list form reads best when you know the whole architecture up front; add() shines when you're building a stack programmatically in a loop.
The one rule that decides everything
When it works: single input tensor, single output tensor, no branching, no skip connections, no shared layers. The moment your data flow forks — two inputs, a residual connection, a layer reused in two places — Sequential physically cannot express it, because a list has no way to say "and also feed this back over there." That hard boundary is actually useful: it tells you exactly when to graduate to the Functional API, which is the last lesson of this track.