Books by Daniel Zingaro
Algorithmic Thinking, 2nd Edition
Get in the game and learn essential computer algorithms by solving competitive programming problems, in the fully revised second edition of the bestselling original. (Still no math required!)
Learn to Code by Solving Problems
Learn to Code by Solving Problems is a practical introduction to programming using Python. It uses coding-competition challenges to teach you the mechanics of coding and how to think like a savvy programmer.