Task Lists for Regular Languages Unit 1.0 Tasks Ability to determine if a string x is in the language described by a regular expression r. Ability to draw the computation of a Finite Automaton M on an input string x. Ability to draw the computation of an NFA M on an input string x. Ability to draw the computation of an NFA-/\ M on an input string x. 1.5 Tasks Ability to “program” with finite automata and regular expressions for simple languages L - given a target language L, write an FA M such that L(M) = L - given a target language L, write a regular expression r such that L(r) = L Ability to “debug” with finite automata and regular expressions for simple languages L - given an FA M, give a natural English language description of L(M) - given a regular expression r, give a natural English language description of L(r) 2.0 Tasks Ability to execute the basic algorithms that we have encountered in this unit - take finite automaton M and construct new finite automaton M' which accepts L(M)' - take 2 finite automata M1 and M2 and construct a new finite automata M3 such that L(M3) = L(M1) op L(M2) where op is union, intersection, set difference - convert an NFA into an FA - convert an NFA-/\ into an NFA - convert a reg. exp r into an NFA-/\ - ability to parse a regular expression by identifying “last” operator - ability to combine 2 arbitrary NFA-/\’s to make a new one which recognizes union, concatenation, or Kleene closure 2.5 Tasks Ability to read and understand “parameterized” descriptions of languages - understanding role of variables and parameters and their “binding” or “scope” {an bn | n > 0}: numbers of a’s and b’s are equal because n is identical {an | n > 0} concatenate {bn | n>0} produces {anbm | n,m > 0}, not {an bn | n > 0} Distinguishability idea of strings - understanding of what it means for two strings to be distinguishable/indistinguishable with respect to a given language L or automaton M - extension of above idea into understanding how languages and automata partition Sigma* into a finite number of equivalence classes - ability to extend above ideas and apply Myhill-Nerode Theorem to prove that a given language is not regular Proof Techniques - understanding of generic element proof technique and how it is used in this course - ability to recognize when proof by counterexample is sufficient Complete mastery of above tasks should give a student a 75 (a 2.5) on the exam. 3.0-4.0 Tasks Higher level understanding of principles behind the above algorithms - NFA to FA conversion - what is the idea behind the transformation - why can it always be done - what do the new states in the FA represent - NFA-/\ to NFA conversion - what is the idea behind the transformation - when does the initial state need to be made accepting in the new NFA - reg exp to NFA-/\ conversion - idea of a recursive algorithm: recursive case and base cases - understanding of why the various operators are handled the way they are - LFA closed under union, intersection, set difference proofs - the idea that we are running both FA's in parallel - understanding the idea the idea of how we handle what the new accepting states should be - LFA closed under set complement - the idea of doing the same thing and just switching yes and no - understanding why this construction does NOT work for NFAs Understanding of nondeterminism and determinism in computational models - deterministic computational model: next action is always well defined - computation produces a path because there is always only one next action - nondeterministic computational model: next action is not always uniquely defined, - computation produces a tree because there can be more than one next action - ability to recognize nondeterminism - any real/implemented model is deterministic Understanding of Myhill-Nerode Theorem - what exactly is the Myhill-Nerode Theorem saying - connections to ideas of distinguishability and partitioning of Sigma* - what Myhill-Nerode Theorem is NOT saying (regular languages are finite languages) - An understanding of what languages are regular and what languages are not regular Proof Techniques - ability to perform a new generic element proof technique not seen before - ability to prove/disprove new closure property type statements - counterexamples - set property proofs - constructive proofs Ability to learn a new algorithm on your own - FA minimization algorithm Ability to see how Kleene's Theorem applies to real life - string searching - lexical analysis