Appendix D — A 90-day plan
Thirty to sixty minutes a day. Each week ends with something you can run.
| Weeks | Focus | Build |
|---|---|---|
| 1 | Part 0, Ch 1–3: setup, the REPL, names and objects, numbers, text, bytes | rewrite three small shell scripts you use in Python |
| 2 | Ch 4–7: control flow, functions, collections, exceptions | the Ch 10 checkpoint; wordfreq (Ch 11) |
| 3 | Ch 8–9, 12: files, modules, the log analyzer | logstat on a real server log |
| 4 | Ch 13–15: generators, decorators, classes, dataclasses | a streaming JSONL filter; a @retry decorator with tests |
| 5 | Ch 16–18: the data model, protocols, type hints | add mypy --strict to week 3's project |
| 6 | Ch 19–21: stdlib, pytest + Hypothesis, packaging with uv | pygrep (Ch 23) as an installable package with CI |
| 7 | Ch 24–27: LRU cache, CPython internals, memory, the GIL | lru two ways; measure threads on the GIL and 3.14t builds |
| 8 | Ch 28–29: processes, asyncio | hasher (Ch 32); the 1000-client asyncio echo test |
| 9 | Ch 30–31 + Part IV: frameworks' "magic", profiling, syscalls, processes, /proc |
pyps, supervisor, atomicwrite; profile one of your scripts with py-spy |
| 10 | Part V: sockets, DNS, HTTP, clients, FastAPI, TLS | dnsq, tinyhttp, the mTLS pair, healthcheck |
| 11 | Part VI: Python's attack surface, crypto, web security, supply chain | authsvc + tests; pip-audit and ruff -S in CI; detect |
| 12 | Ch 53–56: NumPy, pandas/Polars, matplotlib, scikit-learn | the ticket classifier; redo logstat in pandas and Polars |
| 13 | Ch 57–62 + Part VIII + Ch 72: autograd, PyTorch, HF, data pipelines, LLM apps, requests internals, the capstone |
tinygrad; the PyTorch MLP; RAG + agent over your notes; lifecycle.py |
Then continue with the AI guide, doing every "Practice" section in the Python you now know, and its six-month plan.