I would like to thank the Colorado School of Mines and particularly the Department of Computer Science for their support in writing this textbook. Thank you to the Mines OER steering committee and the OER incentive grant program for their financial support. Thank you to Emily Bongiovanni for advice and encouragement in the early stages of this effort.
A special thank you goes to Jaidynn Fohr for proofreading and helping prepare this book . This book would not be the same without your many corrections and suggestions.
Thank you to Brad Miller and the other authors and maintainers of Runestone Academy for creating and advancing this amazing platform for textbook publishing.
Thank you to my family for your encouragement and support, and your patience with long writing sessions. Patty, Ian, and Tim, I love you so much.