This course examines the basic principles of complexity theory. It refreshes the basics of algorithm analysis (the analysis of resource usage of given algorithms) and of the principal formal properties of algorithms (correctness, completeness, optimality). Specifically, it gives an overview of the principal notations and methods for characterizing non-recursive and recursive algorithms. The course also provides an overview of the main issues problem complexity, that is, the study of the cost of solving interesting problems, given a suitable model of computation. Within this topic, we overview the principal models of computation used to characterize problem complexity (e.g., Turing Machines), their equivalence to computable functions (Church-Turing Thesis), and the principal problem complexity classes (NL, LOG, P, NP, PSPACE, EXPTIME, EXPSPACE).
Course period: May 16 - May 31, 2022. The course will be in form of virtual workshops with intense lectures as follows:
May 16: 10:15-12:00, lunch break, 13:15-15:00
May 17: 10:15-12:00, lunch break 13:15-15:00
May 30: 10:15-12:00, lunch break, 13:15-15:00
May 31: 10:15-12:00, lunch break 13:15-15:00