By the end of this course you should:
-
Be well prepared for
CSC544
and several other advanced classes, such as:
-
CSC448
Compiler Design (which uses both REs and CFGs)
-
CSC535
Semantics of Programming Languages (which provides an
alternative view of the same subject)
-
SE431
Formal Software Specification and Development (which
studies formal logics)
-
SE533
Software Validation and Verification (which uses automata)
-
SE547
Foundations of Computer Security (which uses automata)
-
Have a deep understanding of basic formal models of
batch computation (Finite and Pushdown Automata).
-
Have a deep understanding of basic formal languages
(Regular and Context-Free Languages).
-
Be able to state and prove fundamental properties of DFAs,
NFAs, PDAs, RLs and CFLs.
-
Be able to use Regular Expressions and Context-Free
Grammars in programming.
-
Be able to use Finite and Pushdown Automata in
programming.
-
Know where to find more information on basic models of
reactive computation: Mealy and Moore Machines,
Statecharts, and Process Algebras.
-
Have an appreciation for the subtlety of non-determism.