Acknowledgments

This textbook would not exist without the communities that built the tools and ideas it teaches.

To the Python community: Thank you for creating a language that is powerful enough for professionals and welcoming enough for beginners. Python's design philosophy, summed up in The Zen of Python (type import this at the Python prompt to read it) — "Readability counts," "Simple is better than complex," "There should be one-- and preferably only one --obvious way to do it" — shaped not just the code in this book but its pedagogical approach. Special thanks to the Python Software Foundation for keeping the language free and open.

To the open-source community: Nearly every tool this book teaches — Python itself, Git, Jupyter, pytest, pip, and the libraries you will meet in Part VII — is open source. The ethos of open source — that knowledge improves when it is shared — is the reason this textbook is free. The developers and maintainers who give their time to those projects and thousands of others make modern computing possible. This book stands on your shoulders.

To the CS education research community: Decades of research on how students learn to program informed the structure of this book. The emphasis on threshold concepts, spaced retrieval practice, productive struggle, and multiple representations draws from the work of countless researchers who study what actually helps novices become competent programmers. The work of the ACM SIGCSE community, the ITiCSE working groups, and the CS education researchers who publish their findings openly shaped every chapter.

To instructors and students: If you teach from this book or learn from it, we want to hear from you. Tell us where an explanation lost you, where an example broke, where a fact has gone out of date, or what you wish a chapter covered. Corrections and suggestions from the people who actually use a textbook are what turn a first edition into a good one.

To future contributors: This is an open educational resource. If you find a typo, a broken code example, a confusing explanation, or a gap in coverage, you can help fix it. The best textbooks are living documents, and this one is designed to grow with its community. Your pull request is welcome.

And to every student who opens this book wondering whether computer science is for them: it is.