While mathematical notation on paper is static—correct or incorrect—a computer program is active, and students can see its effects in real time. Computer programming can become a language for elementary-aged children to express their mathematical ideas and use computational thinking, and this process can be transformative in a mathematics classroom. Acts such as decomposing problems and generalizing from specific instances become more visible, enabling students to examine and debug their own thinking.

At EDC, we’ve been developing opportunities for children to explore key mathematical content through the block-based programming language Snap*!*. Our lessons are organized in mini-units aligned to grade-level standards, but engaging for students in grade-levels both above and below. In each mini-unit, children are programming in a Snap*!* ** microworld, **which is essentially a view with Snap

*!*that is developmentally appropriate for elementary students

*and*retains an authentic programming experience. In each mini-unit, children build and debug their own scripts in order to solve a series of highly engaging mathematical puzzles.

In our mini-units, computer science is integrated into young children’s mathematics experience in a way that is natural, developmentally appropriate, embedded in mathematics content, and supportive of the mathematics. These mini-units are being developed by EDC through National Science Foundation grants 1741792 and 1934161, and are being tested extensively in elementary classrooms so that we can best understand how children engage with and learn in these environments. Here are a larger set of mini-units for grades 2–5, along with accompanying teacher notes and classroom materials. Work is not “checked” as in tutorial apps and games. Children see the effects their code produces and make changes to their scripts as they move through the explorations, puzzles, and challenges.