Computer Science Pedagogy: a philosophy, a guideline, a discussion