1. Understand the concepts and applications of finite automata 2. Understand and reason about the concepts of language grammars, and regular expressions in computer programming 3. Use computational complexity theories such as P, NP and NP-Complete to analyse the efficiency of algorithms see attached pdf element 1 for the question and making criteria.