# Part Two: Introduction

In the second part of this book we are aiming to

- deepen our understanding of structural recursion, by using it in new contexts;
- learn how to manipulate collections of data using standard methods
`map`

,`filter`

,`flatMap`

, and`foldLeft`

; - define and use custom data structures of a particular kind known as algebraic data types; and
- learn a model for understanding data layout in memory, known as boxes and arrows diagrams.

We'll encounter these topics in the context of data science. Data science is the field concerned with finding interesting things in data. This brings together elements of computing, statistics, and graphic design (in the form of visualization.)

Data science allows us to address questions about the world such as **TODO: insert examples**
In this part we'll use a variety of data sets to explore these questions.
If you have particular data you're interested in exploring, I encourage you to do so in this part.
There is no better way to learn than to work on questions that are meaningful to you.

This part assumes little experience with statistics. When we meet statistcal concepts, we'll approach them from a computational, rather than mathematical, perspective. This means we'll get the computer to do the work for us, and we'll avoid a lot fancy mathematics that is typically found in statistics courses. I think this leads to a clearer understanding of these topics (particularly if you are a programmer!)

## Setup

To work through this part of the book, use the creative-scala-data-template from Github.