This course covers the theory of computation and application to complex and hard problems. Areas such as finite and push down automata, regular languages, regular expressions, context free languages, Turing machines, computability and complexity are studied in detail and applied to computational structures with real world applications. The science of language such as phrase and context free languages is covered in depth. The course includes a study in complexity theory and how it applies to hard computational problems This course also provides a complete overview of the use and design of common algorithmic structures and their performance as implemented in many different programming languages. The course includes an in-depth presentation of basic and advanced algorithms and areas such as Big O notation. Formal algorithms are developed by students in both Python and R and then compared analytically to determine effectiveness and efficiency. The course discusses the computability and speed of algorithms and the trade-off analysis required to select the best algorithm for the complex computational problem at hand. The course concludes with the application and transpersonal management of automata, computation, algorithms, and complexity in real world science, technology, and engineering scenarios and products.
MSCS3917: Automata and Algorithms
Class Program