On completion of this module students should be able to:- define and use general concepts like computation, algorithm, and language,- write definitions, use lemmas, and write and prove theorems in several branches of mathematics including the theory of computation, complexity theory, lambda calculus, and logic,- work in several models of computing including ?nite state machines, Turing machines, and automata,- understand and use notions of computability and decidability, and their limits, and- understand and explain the relationships between mathematical proof and computation.