Exploring the Science of Computing by J. Thomas Allen & Kenneth Abernathy