xiaolai/the-craft-of-selfteaching

Learning Resources

A Chinese book that teaches self-teaching through Python, using Jupyter notebooks as both the subject and the practice ground.

18,293
17,866
Jupyter Notebook
7 years old

Worth reading if you want a structured, practice-heavy path into Python while also working on the habit of learning without a teacher. It is a book, not a tool, so judge it by whether its approach fits how you learn.

The problem

Someone who wants to learn programming often starts with scattered tutorials: install an environment, copy snippets, and lose the thread once the material moves past syntax. The harder problem is not the first chapter but what to do when a concept arrives before its prerequisites or when progress stalls. This book treats that gap explicitly, pairing a Python curriculum with chapters on reading, deliberate practice, handling forward references and staying focused. The reader works through notebooks rather than only reading prose, so the intended result is a habit of working things out rather than a certificate.

What's different

The core mechanism is the notebook format. Each chapter is a Jupyter notebook that mixes explanation with runnable code, and the README recommends installing JupyterLab so the book can be read with a better local experience. That makes the text something you can step through and modify, which suits the author's argument that programming is a practical entry point for self-teaching.

The content is not only a language course. The first part argues for self-teaching and for coding as an entry point, then covers values and operators, control flow, functions, strings, containers and files; the second moves into deliberate practice, function arguments, lambda, recursion, docstrings, modules, test-driven development and executable files; the third reaches classes, decorators, iterators and generators, regex and grammar notations such as BNF and EBNF. That range means the book doubles as a Python reference for a motivated beginner. The trade-off is that the narrative and the language material are interleaved, so a reader who only wants Python syntax has to skip a lot of argument, while a reader who wants learning theory has to work through code.

Who should try it

This fits a Chinese-speaking beginner who is willing to install a local environment and work through notebooks in order, especially someone who wants to build self-study habits rather than rush to a framework. It also suits a reader who already programs a little and wants a refresher on Python fundamentals with an emphasis on writing functions and tests.

It is a poor fit for someone who wants a quick reference or a browser-only course: the recommended path assumes a local JupyterLab setup, and a Markdown version exists for reading, but the notebook experience is what the book is built around. Readers not comfortable in Chinese should look elsewhere. Those who need a certificate or a fixed schedule should also check the book's stated approach before committing.

Requirements and limitations

The practical requirement is a working local Python and JupyterLab installation; the book's own appendix walks through installation and setup, and a separate appendix covers Visual Studio Code and Git. The Markdown version removes the need to open notebooks, but it also removes the ability to run cells in place, which is central to the practice.

The license is CC-BY-NC-ND, which permits sharing with attribution but not derivative works or commercial use; that matters if you plan to translate, remix or use the material in a paid course. The README also points contributors to a proof-of-work chapter before sending pull requests, so corrections go through a defined process rather than casual edits. Finally, the book was written around 2019 and its Python chapters reflect that period; a reader should expect to check current library and tool behavior rather than treat every appendix as a current setup guide. The repository has no declared license beyond the book's CC terms, so code reuse deserves a careful reading of those terms.

HotRepo's take

HotRepo's record is thin: it logged the project once, on the 2026-10-28 daily board at 18,231 stars with +143 that day, and the supplied sample covers only that single date. That is not enough to judge whether interest is rising, fading or steady, and the repository's age says nothing about whether its setup instructions still match current tooling. Before committing, check the Jupyter installation appendix against the JupyterLab version you plan to use, since that is the step most likely to have drifted.

Project source and documentation

Written by AI from the project's README, updated October 28, 2026. The project's own docs are the source of truth.