These are notes for a Theory of Computation course. The goal is to introduce the undergraduates to basic concepts of Theory of Computation and to provoke their interest in further study. Model-dependent effects are systematically ignored. Concrete computational problems are considered only as illustrations of general principles. The notes can be used by an instructor designing a course or by students who either know the material and want to refresh the memory or are exceptionally bright and have access to an instructor for questions. Each subsection takes about a week of the course.