The Art and Science of Problem Solving: An Introduction to Programming Skills