CS304 : Formal Languages and Automata Theory