Problem Solving Techniques In Programming