Programming for Lovers owes a debt of gratitude to a number of people who helped make it possible.

My experience in teaching programming derives from teaching a Programming for Scientists course to undergraduates and master’s students from scientific backgrounds at Carnegie Mellon University, which I was fortunate to inherit from Carl Kingsford. Teaching Programming for Scientists since 2015 has greatly informed my development of Programming for Lovers, and I would like to thank all of my wonderful students over the years, who made me a better instructor as I found my footing as a programming instructor.

Chapter 1 grew from previous work with Pavel Pevzner, the co-author of Bioinformatics Algorithms: An Active Learning Approach ( If you enjoyed this project, then I think you would love Pavel and my textbook or the online courses that it powers.

The Go gopher is courtesy of Renee French.

This course is a bootstrapped labor of love, and Alexey Guzey along with NewScience provided a grant to help us get up and running.

I greatly appreciate all of the 2,800 learners who joined me for a trial run of Programming for Lovers in fall 2019, when we gave $2,500 to charitable outreach causes in computer science. Special thanks go to a few learners who helped their peers learn where I fell short: Mark Mammel, Bill Bourne, John D. Cox, and Vos H.

Mustafa Guler and uber-learner Mark Mammel gave some amazing comments on the text. Katyanna Quach helped me understand which features I needed to add. Students in Carnegie Mellon’s PreCollege Program in Computational Biology and MS in Computational Biology completed part of the course as preparatory material and showed me that it would work in two very different student groups.

But above all others, I must thank the haters. To my dear haters, you keep me motivated every day. Without you, Programming for Lovers would not exist.


Love P4❤️? Join us and help share our journey!