CSC236 Theory of Computation Exercises and assignments