It’s vital that we play with ideas, from grade school to grad school and beyond. Curiosity and adaptability enable us to address even the most complex problems—they also make life a whole lot more interesting. The overarching goal of these tutorials is to help you develop as a creative thinker.

A foolish consistency is the hobgoblin of little minds…

— Ralph Waldo Emerson

Each tutorial comprises a mixture of mathematical notation and computer code. The premise—drawn from constructionism—is that students learn more deeply by creating personally meaningful products. To that end, we’ll use the JavaScript programming language and p5.js, a software “sketchbook” for the web.

Code Sections

Code-heavy sections are marked with , the angle brackets commonly found in markup languages like HTML.

Protip: You can view this page’s HTML in Chrome or Firefox by right-clicking and selecting “View Page Source” from the menu.

Math Sections

Math-heavy sections are marked with , the Greek letter lambda. Besides looking cool, they’re used all over the place.

Review Sections

Review sections are marked with , a big ol’ pencil. Each tutorial prompts you to synthesize your learning by figuring out how to explain the topic to a beginner. The practice is based on a technique developed by physicist Richard Feynman.

All source code is licensed under the MIT License. Text and images are free to remix under the terms of a Creative Commons Attribution 4.0 International License.