Based on How To Think Like A Computer Scientist - 2nd Edition