Introduction to Theory of Computing (Fall 2017)