Theory of Computing by Carl Smith & Efim Kinber