Programming paradigms for Computer Science