Algebraic Thinking: A Problem Solving Approach