How Computer Programming Works by Dan Appleman