The world is of full of problems that can be solved using programming. However some problems are more fun and challenging than others. If you are looking for some really interesting programming challenges I strongly recommend you to take a look at ProjectEuler.net.
Project Euler is a site with a lot of mathematical programming problems. The site contains around 300 problems, but new problems are added continuously. Each problem is designed to be solvable by a computer in less than a minute.
The first problem is:
If you find problem 1 too easy, don’t worry, it is just there to get you started (and hooked).
To submit your answer you need to signup as a member. Being a member is free and the site will keep track of which problems you have solved. After you have answered the first 25 problems correct, you level up and reach level 1. There are 6 levels with only 200 members on the 6th level also called Legend.
Being an active member of Project Euler will both improve you math skills as well as your programming skills. For each problem you need to find a solution that is mathematical correct and performs well.
Another bonus: The type of problems in project Euler is similar to some of the programming challenges given to job interviews. So if you are looking for a new job, you can use Project Euler to improve your skills.