**CSC 4170****: Lecture Notes**** **

Introduction (Chapter 0)

Finite automata (Section 1.1)

Nondeterminism (Section 1.2)

Regular expressions (Section 1.3)

Nonregular languages (Section 1.4)

Context-free grammars (Section 2.1)

Pushdown automata (Section 2.2)

Non-context-free languages (Section 2.3)

Turing machines (Section 3.1)

Variants of Turing machines (Section 3.2)

The definition of algorithm (Section 3.3)

Decidable languages (Section 4.1)

The universal Turing machine (Section 4.2)

The halting problem (Section 5.1)

Mapping reducibility (Section 5.3)

Decidability of logical theories (Section 6.2)

Turing reducibility (Section 6.3)

Measuring Complexity (Section 7.1)

The Class P (Section 7.2)

The Class NP (Section 7.3)

Space Complexity (Chapter 8)