CSE191: Automata Practicum (Spring 2015)

Instructor: Daniele Micciancio
Lectures: Monday 9:00-9:50am in CENTER 222

Welcome to "CSE191: Automata Practicum", a companion course to be taken concurrently with CSE105: Introduction to the Theory of Computation, where you will turn mathematical definitions and constructions into working computer programs.

Most of the mathematical definitions and theorems studied in Automata and Computability Theory classes have a direct translation into (useful) computer programs. For example, the mathematical definitions of DFAs and NFAs easily translate into corresponding data structures. The recursive definition of the function computed by a DFA is easily translated into a computer program that given a DFA and an input string, outputs True or False.

Translating mathematical definitions and theorems into computer programs is especially easy when using a high level programming language, like haskell. If you have never used Haskell before, don't worry. While some prior knowledge of haskell, or other functional programming languages, may be useful, it is not required. We will use only a very small subset of the features of the Haskell programming language, and you can pick it up as we use it in class.

Lectures and Reading Assignments

Haskell code written in class, and supporting files, will be posted below after each lecture: