Allen B. Downey, Ph.D., is an Associate Professor of Computer Science at the Olin College of Engineering in Needham, Massachusetts. He has taught at Wellesley College, Colby College, and UC Berkeley. He has a doctorate in computer science from UC Berkeley and a Master's degree from MIT. Dr Downey is the author of a previous version of this book, titled How to Think Like a Computer Scientist: Learning with Python, which he self-published in 2001.