Programing for problem Solving