Pedagogy, Strategies & Tools for Teaching Computer Science