Many problems that we try to solve tend to take place in the real, physical world; much of problem solving using computer programming, however, takes place in the virtual solutioning space of a computer program. Data structures are the tools in computer programming that help us bridge this divide - allowing us to capture the features of real-world problems by expressing them as detailed data in our computer programs, which can then be manipulated towards a solution. 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 them is what computer scientists call abstraction. Code Campers will learn how to use the general, abstract data structures like lists and dictionaries by adapting them to fit the specific context of the problem at hand. This efficient approach to problem solving is what enables financial coders to create programmatic representations of stocks and bonds to model market prices, and bioinformatics researchers to code up the human genome to study its properties. After this course, students will be able to use data structures to fashion more complex, detailed and powerful computer programs. By applying their new knowledge across various contexts, they will develop the skills to discover the commonalities in the structures of problems in different domains and design general solutions to these problems.