Professor: Álvaro e Henrique
Prerequisites: –
Hours: 60 hs
Credits: 4
Semesters: First and second semesters
Undergraduate Enrollment: –
Page Link: –
SUMMARY
Computability Theory: Model of Computation – Turing Machines. Church-Turing Thesis. Decidability. Reduction. Complexity theory: Time Complexity, Asymptotic analysis, worst-case analysis. Tractability – Edmond-Cobham Thesis. Time Complexity Classes. NP-Complete Problems. Space Complexity Classes
OBJECTIVES
This course will introduce Turing Machines as a model of computation and will study classes of problems that can or can not be solved by computers (computability theory) and how to classify the computable problems according to how efficiently they can be solved (complexity
theory). After successful completion of the course, the students are expected to: (i) understand what a model of computation is and understand the main model, (ii) be able to analyze whether a problem may have an algorithmic solution and if it is tractable, and (iii) know the main complexity classes.
PROGRAM
EVALUATION
Students will be submitted to two partial evaluations during the semester, each evaluation with 40% of the final grade. The other 20% will be obtained through class assignments. At the end of the semester, there will be an exam that can substitute the final score obtained. The possible grades are A (score >= 9.0), B (score >= 7.5 and < 9.0), C (score >= 6.0 and < 7.5), D (failed, scoreb< 6.0) or FF (failed, the student attended less than 75% of the classes).
BIBLIOGRAPHY
Sipser, Michael. Introduction to the Theory of Computation, Cengage Learning, 2013.
Harel, David. Algorithmics: The Spirit of Computing. MIT Press. 2004
Ferreira Filho, Wladston. Computer science distilled: learn the art of solving computational problems. Code Energy, 2017.