Mathematical Thinking in Computer Science