Introduction to Computation Theory: Divide and conquer