🗺 The Atlas

Learn Python, T-shaped

First the whole field, broad and shallow. Then deep stems drive down into one domain at a time — each climbing Bloom's six levels, ending in something you build.

The one idea

Everything is an object, and a name is just a label tied to one.

A variable is not a box that holds a value — it is a name bound to an object that lives elsewhere. Assignment rebinds the name; it never copies the object. Once you see that, mutability, identity, default arguments, and copying all stop being surprises.

The ladder every stem climbs

L1

Remember

recall

L2

Understand

explain

L3

Apply

use

L4

Analyze

compare

L5

Evaluate

judge

L6

Create

build

The 8 domains

🧬Deep stem ready →

The Object Model

Names, objects, identity vs. equality, and mutability — the layer everything else sits on.

Create: An immutable Money value object with correct __eq__/__hash__, gated by a property test.

📦Deep stem ready →

Built-in Data Structures

list, dict, set, tuple — their cost models and when each is the right reach.

Create: A frequency-count pipeline that picks the right structure at each step, justified by Big-O.

🔁Deep stem ready →

Functions & Scope

First-class functions, closures, *args/**kwargs, and the LEGB scope rule.

Create: A retry decorator with configurable backoff, preserving the wrapped function's metadata.

🏛️Deep stem ready →

Classes & Protocols

Dunder methods, dataclasses, properties, and duck typing over rigid inheritance.

Create: A Vector type implementing the numeric protocol so it works with +, *, and len().

🌀Deep stem ready →

Iteration & Laziness

Iterators, generators, comprehensions, and why lazy beats eager at scale.

Create: A streaming log parser that processes a multi-GB file in constant memory.

🛡️Deep stem ready →

Errors & Resources

Exceptions as control flow, context managers, and cleaning up deterministically.

Create: A transactional file-writer context manager that rolls back on failure.

Deep stem ready →

Concurrency

The GIL, threads vs. asyncio vs. processes, and matching the model to the bottleneck.

Create: A concurrent URL fetcher that picks asyncio for I/O-bound work and proves the speedup.

🔧Deep stem ready →

Testing & Tooling

pytest, type hints, profiling — the production concerns that keep code honest.

Create: A tested, type-checked module with a profiling report justifying one optimization.