Theory of Computation
People
Description
COURSE OBJECTIVES
The class introduces the fundamental mathematical properties of computer hardware, software, and certain applications thereof.
COURSE DESCRIPTION
The course explores what can and cannot be solved on a computer, how quickly, with how much memory, and on which type of computational model. The class is divided into two major parts: computability theory and complexity theory. Computability theory deals primarily with the question of whether a problem is solvable at all on a computer. Complexity theory considers how efficiently the problem can be solved. Two major aspects are considered: time complexity and space complexity, which respectively address a problem of how many steps does it take to perform a computation, and how much memory is required to perform that computation.
LEARNING METHODS
The theory subjects have strong connections with engineering practice. In addition to theory lectures, the course will offer practical exercises and labs which will involve experimentation with various tools.
EXAMINATION INFORMATION
There will be a written final exam covering both theory and practice of computability and complexity theories.
PREREQUISITES
- Algorithms & Data Structures
- Automata & Formal Languages
REFERENCES
- Introduction to the Theory of Computation; Michael Sipser, 2006, second edition (Required)
Education
- Bachelor of Science in Informatics, Elective course, Lecture, 3rd year