Programming and Problem-Solving: Key Concepts and Program Structures