# Computational Theory

### Course Focus:

**Knowledge**

Use logic and set theory to model data and systems.

Know the theoretical foundations of computation, the formal concept of algorithm, and the existence of undecidable problems.

Know the classes of formal languages, associated computational models, and the relationship between them.

Understand the concept of Turing universality.

**Know-How**

Model the state space of systems or abstract data types with set theory and first order logic.

Distinguish countable from non-countable sets.

Model systems using finite automata (DFA and NFA).

Construct a finite automata from a regular expression and conversely.

Construct a DFA equivalent to a NFA.

Define context free languages using grammars.

Construct LL and LR parsers.

Recognize (un)decidable computational problems.