Theory of computation: a problem solving approach - Kavi Mahesh (Wiley, 2012)