A Cognitive Model For Problem Solving In Computer Science