Incorporating Analogies and Worked Out Examples as Pedagogical Strategies in a Computer Science Tutoring System