Advanced Theory of Computation