Introduction to Algorithms and Programming
Decomposition is the practice of splitting up a larger problem into smaller problems and repeating until the problems are small enough to be solved.
Pattern matching is the practice of making observations, looking for similarities in those observations and considering how such similarities could help develop solutions.
An abstraction is a list of essential and necessary characteristics for a subject, activity or process in order to represent real world problems in a format that can be solved by computers.
An algorithm is a list of steps which generates the correct output for a given set of input.