Welcome to Green Tea Press, publisher of Think Python, Think Bayes, and other books by Allen Downey.
Our books are available under free licenses that allow you to copy and distribute the text — you are also free to modify it, so you can adapt the books to different needs and help develop new material.
These books are available in a variety of electronic formats; some are also for sale in hard copy. If you are enjoying the free versions, please consider buying me a coffee.
Python
Think Python: How to Think Like a Computer Scientist
An introduction to programming using Python, one of the best programming languages for beginners. The third edition includes guidance for learning to program with virtual assistants like ChatGPT. The second edition of Think Python is still available here.
Data Structures and Information Retrieval in Python
The best of the data structures curriculum organized around a motivating example: building a search engine.
Data Science in Python
An introduction to data science designed for people with no programming experience, this book presents a small, powerful subset of Python that allows you to do real work in data science as quickly as possible. It includes Jupyter notebooks where you can read the text, run the code, and work on exercises to practice what you learn.
Think Bayes: Bayesian Statistics in Python
An introduction to Bayesian statistics using simple Python programs instead of complicated math.
Think Stats: Exploratory Data Analysis
An introduction to exploratory data analysis. Like the first edition, this book emphasizes simple computational tools for exploring real data. It includes several new topics, including regression, time series analysis, and survival analysis. It presents basic use of NumPy, SciPy, Pandas, and StatsModels.
An introduction to tools and practices for working with astronomical data. Topics covered include SQL queries with complex joins, Astropy and Pandas, coordinates and other quantities with units, and visualizing data. This book includes Jupyter notebooks where you can read the text, run the code, and work on exercises to practice what you learn.
Think DSP: Digital Signal Processing in Python
An introduction to digital signal processing with applications to sound and image processing.
Think Complexity 2e: Exploring Complexity Science with Python
An introduction to complexity science, which includes small-world graphs, scale-free networks, cellular automata, fractals and pink noise, self-organized criticality, and agent-based models.
Java
Think Java: How To Think Like a Computer Scientist
New edition, revised and updated by Chris Mayfield and Allen Downey, and published by O’Reilly Media.
Think Data Structures: Algorithms and Information Retrieval in Java
Build your own Web search engine—including a crawler, indexer, and search interface—while learning about data structures and algorithms in Java.
Physical modeling
Modeling and Simulation in Python
Models of discrete systems, like population growth, first-order systems, like epidemics and thermal systems, and second-order systems, like mechanics. Designed for people who have not programmed before. This book includes Jupyter notebooks where you can read the text, run the code, and work on exercises to practice what you learned.
Use MATLAB to predict and explain the behavior of physical systems. Intended for people with no programming experience.
Operating systems
Think OS: A Brief Introduction to Operating Systems
An introduction to Operating Systems for programmers. Uses the C programming language.
Learn about software synchronization by solving a series of puzzles.
How to Think…
How to Think Like a Computer Scientist is an introductory programming book for people who have never programmed before, available for several programming languages:
Think C++: How To Think Like a Computer Scientist
How To Think Like a (Functional) Programmer: OCaml Version
Python for Software Design: How To Think Like a Computer Scientist
How To Think Like a Computer Scientist: Learning with Python
(this book has now been replaced by Think Python).
About free books
If you are thinking about writing a free book, here are reasons you should and suggestions about how: Free Books: Why Not?.