The Python Atlas
A decision-first curriculum from Python fundamentals to production engineering.
Python is easy to start and deep enough to reward years of study. This curriculum teaches both: the language you type and the engineering judgment behind reliable software.
How to use this curriculum
Read a concept, predict what each example will do, run it, then change one assumption. The exercises are part of the lesson—not optional review.
New to Python
Start with values, collections, control flow, and functions.
Know the syntax
Study the object model, typing, abstractions, and generators.
Build maintainable software
Learn project structure, algorithms, debugging, and dependency choices.
Master async and the standard library
Use pathlib, datetime, collections, asyncio, and synchronization.
Ship practical systems
Test, package, call APIs, use databases, and analyze data.
The learning loop
- Model — explain the behavior before running the code.
- Build — write the smallest complete version.
- Test — prove normal, boundary, and failure behavior.
- Inspect — use logs, a debugger, types, and profiling data.
- Refactor — improve names and boundaries without changing behavior.
What “advanced” means here
Advanced Python is not shorter syntax. It is the ability to:
- choose a collection from access patterns and invariants;
- recognize when a function, class, protocol, generator, or context manager fits;
- separate CPU work, blocking I/O, and asynchronous I/O;
- make timeouts, cancellation, transactions, and resource ownership explicit;
- test behavior at the cheapest useful layer;
- select a dependency from evidence instead of popularity;
- keep code obvious enough for another developer to change safely.
Recommended setup
Install Python 3.12 or newer and uv, then create a scratch project:
uv init python-atlas-lab
cd python-atlas-lab
uv add --dev pytest pytest-cov ruff mypy
uv run python --versionKeep one repository for your exercises. Commit after each lesson so your history becomes a record of how your design decisions improved.
Choose your route
| If you want to… | Begin with… |
|---|---|
| learn programming from zero | Foundations |
| understand Python internals and design | Core language |
| organize and debug larger projects | Software engineering |
| write concurrent I/O programs | Standard library & async |
| test, package, build APIs, or analyze data | Tooling, web & data |