The document discusses the theory of computation topics of undecidability, recursive and non-recursive languages. It defines recursive, recursively enumerable (RE), and non-RE languages, and provides examples. Recursive languages are decidable by a Turing machine halting for all inputs. RE languages are decidable for strings in the language but a Turing machine may not halt on strings not in the language. Non-RE languages have no Turing machine to enumerate them. The document also discusses Turing machine encodings, universal Turing machines, and reductions between decision problems.