Introduction to Programming and Problem Solving