Java and Algorithmic Thinking for the Complete Beginner: Learn to Think Like a Programmer