CSE 3315 Theory of Computing