In the physical world, many people solve problems through analogy - rehashing and reusing solutions to old problems that we have seen to solve new problems that look and feel familiar. In computer science, the study of how to solve specific problems by focusing on the general shared traits between such problems is what computer scientists call abstraction. This is a natural extension of the decomposition skills that Code Campers learnt in the previous Jr Python 2. Once a problem has been decomposed, the kids will proceed to identify patterns and the shared traits between each decomposed part. Where a repeated pattern exists, the same solution can be applied to each occurrence of that problem. This iterative process of solving decomposed problems with the same solution repeatedly in order to solve a larger problem mirrors the structure of a recursive algorithm. Applying the concept of recursion to functions, in what is commonly known as recursive functions, Code Campers will learn how to write functions that call on or refer to itself to create an infinite loop of instructions that will not stop until a condition is met. Through this course, kids will strengthen their ability to think logically, practi ce creating abstractions of complex problems and apply their ability to write and use functions in more complex and interesting ways. This approach to problem solving with computer science is what enables graphical animation coders to make fractal patterns and epidemiologists to trace the spread of infectious diseases.