Great Ideas in Computer Science, 2nd Edition by Alan W. Biermann