Introduction to Programming and Computational Problem Solving