Patterns and Algebraic Thinking