Foundations of Computer Science: Concepts, Algorithms, and Problem Solving