Design of Computer Programs by Peter Norvig