problem definition in computer science