I live on Galveston, an island about fifty miles south of Houston, Texas, and I wander down to the beach most days to enjoy the scenes painted by nature. Some days, the clouds in the east catch a bit of pink light and transform into gobs of cotton candy. Other days, the water glimmers. Each new variant helps to complete my mental model of the island, and I find this learning process beautifully satisfying. If you think about it, we all constantly develop models of how our world works, and we use those models to shape the world in turn.

Modeling can lead to many unexpected adventures. Sometimes, I look up at scenes like a sunshower (when rain falls while the sun is shining) and try to relate my impression of it via computation. I can’t draw (yet… growth mindset 👍🏽), but I can write computer programs, so I maintain a software sketchbook full of visual experiments like simulated rain. In one such experiment, I connected with an artist interested in sculpting with pieces that synchronize like members of a honeybee swarm. I wound up studying old code buried in an obscure master’s thesis before implementing a version that the artist could use to control the position, sound, and color of their work.

Then there are the more scientific projects I’ve tackled like those concerning flood risk. Given data on land and home elevations, past storm surges, and projected sea level rise, how would you quantify a community’s risk of catastrophic flood damage? I’ve collaborated with researchers at the Galveston Historical Foundation and the Wharton Risk Center to combine spatial analysis, statistics, and mapping in an effort to tell the full story.

My mission as an educator is to build students’ creative confidence and analytical ability. I’m an engineer by training, so I can’t help but look at instruction as a design problem. Hundreds of students have entered my classroom with diverse interests, experiences, and motivations. Engaging them all in a way that is both rigorous and inclusive is hard to do, and I don’t always succeed. The lessons that go well tend to have a few things in common: they are grounded in students’ interests, they promote self-expression, and they allow for multiple pathways to success.

For Learners

The material in these pages grew out of my Algebra 2, Precalculus, Fundamentals of Computer Science, and AP Computer Science A courses. Mathematical notation is complemented with computer code written in JavaScript so that you develop both modes of expression simultaneously. The exercises are structured to help you master foundational topics in simulation, analysis, and design. Among other projects, you will make interactive artwork, build games, and learn from real-world datasets.

Please allow me to offer two pieces of advice as you start this journey: First, complete every exercise, even if you get stuck on one and need to revisit it later. Second, learning is more fun with friends! Consider joining the Processing Foundation Discourse and/or the p5.js Discord.

Scope and Sequence

This book series highlights core topics from the traditional high school math curriculum. I also include a handful of advanced topics usually reserved for university study. To paraphrase Dr. Dre on the arrangement of albums, sequence matters almost as much as the content itself.

Volume 1 / Synchronization begins with counting and concludes with an introduction to Calculus. Along the way, you will also cover all of the topics seen in a first programming course.

Volume 2 / Learning begins by introducing complex numbers and concludes with an introduction to data science, one of the most exciting applications of math and code.

Learning Model

And now for the “how”. There is no playbook for developing people’s creative problem solving skills, but useful patterns have emerged. The following computational thinking process was outlined by Conrad Wolfram, CEO of Wolfram Research, in his book The Math(s) Fix:

Computational Thinking Process (Wolfram Model)

  1. Define Questions

  2. Abstract to Computable Form

  3. Compute Answers

  4. Interpret Results

Step 4 often reveals new questions or shortcomings of answers produced in Step 3, so it starts another iteration of the process. Thinking of learning in cycles brings to mind the “Creative Learning Spiral,” which Mitchel Resnick, Professor at the MIT Media Lab, outlined in his book Lifelong Kindergarten.

Creative Learning Spiral (Resnick Model)

  1. Imagine

  2. Create

  3. Play

  4. Share

  5. Reflect

Step 5 similarly tends to kick off another trip around the spiral. I’ll go out on a limb and claim that most worthwhile problems are not solved easily or directly. And it seems clear that serious problem solving requires time to plan, time to work, and time to reflect. My variation on the themes presented by Wolfram and Resnick is the following:

Computiful Model

  1. Define System

  2. Model with Math

  3. Prepare Data

  4. Code and Run

  5. Reflect on Results

Ready? Let’s start the first iteration.

Nick McIntyre
Galveston, December 2020