Switching and Finite Automata Theory: Computer Science Series