Understanding Programming and Logic (Understanding Computing) by Matthew Anniss