Snap! is a block based language created by the University of California at Berkeley and used in their first year computer science courses, as well as the high school AP Computer Science Principles Beauty and Joy of Computing curriculum. You might think of as Snap! as Scratch‘s older wiser cousin – perfect for learning computer science, engaging in more mathematical programming, and creating more complex coding projects.

For years, I have believed there to be an assortment of sophisticated programming projects that should be part of every child’s educational experience. Writing a program to graph a linear equation supports timeless algebraic curricula and is an excellent introduction to0 software design. Best of all, it is an opportunity to communicate the formalisms of algebra to the computer. By teaching this to the computer, students better understand the mathematics. When you learn that you can program your own tools, you are inspired to engage in even more sophisticated mathematical explorations.

I’ve done similar projects in Logo and MicroWorlds over the past years.

This project is possible in Scratch (with barely any modifications), but the next project, generating an X Y table for a linear equation is not. Therefore, I decided to use Snap! in the context of the 7th grade class I taught today.

Here you may download and use the handout based on my classroom experience with kids. I attempted to commit the process to paper. I will likely create a handout for creating the X Y table too. In the meantime, can you figure out how to do it yourself?

[Note: I declare what Y equals rather than just inserting the equation into the y coordinate in order to make the y = …x clearer for kids]


Gary S. Stager, Ph.D. is an award-winning teacher educator, speaker, consultant and author who is an expert at helping educators prepare students for an uncertain future by super charging learner-centered traditions with modern materials and technology. He is considered one of the world’s leading authorities on learning-by-doing, robotics, computer programming and the maker movement in classrooms. Dr. Gary Stager is co-author of Invent To Learn — Making, Tinkering, and Engineering in the Classroom and the founder of the Constructing Modern Knowledge summer institute. He led professional development in the world’s first 1:1 laptop schools and designed one of the first online graduate school programs. Learn more about Gary here.


Coding & Physical Computing Masterclasses in California!

Thinking and learning are strong proud words. When educational publishers or policy-makers seek to modify such terms, (re: design thinking, discovery learning, computational thinking…), the result seems less than the individual parts.

We get “design thinking” without any design; “computational thinking” without computation; “discovery learning” where the only acceptable discoveries are the ones the teacher (or textbook) already anticipated.

Increases in agency or student empowerment remain rhetorical and pedagogical progress, illusory.

I am too often reminded of the Sir Joshua Reynolds quote hanging all over Thomas Edison’s laboratories, “There is no expedient to which a man will not resort to avoid the real labor of thinking.”

Piaget teaches us that “knowledge is a consequence of experience.” Schools and teachers serve students best when the emphasis is on action, not hypothetical conversations about what one might do if afforded the opportunity.

Papert was sadly correct when he said, “When ideas go to school, they lose their power.”

Let’s say that the lessons IDEO employees gleaned from designing the latest toothpaste tube could actually be applied to education (a preposterous supposition, but let’s roll with it). By the time those ideas move from the latest blog post or conference workshop to the classroom, kids are left with an elaborate process in which brainstorming and affixing Post-It notes to walls becomes a means to solving hypothetical problems or PowerPoint reports about a topic they care little about for a non-existent audience.

Actions taken by the system, like school or classroom redesign or schedule redesign may be fantastically beneficial, but are too often conflated with the benefits of learning by being designing something personally meaningful. In other words, the adults may have learned something by being designers, but are depriving youngsters of that same quality of experience. At a time when learning is too often viewed as the direct causal result of having been taught, system-level design becomes conflated with student learning. Arranging ceiling lights in the shape of constellations to reinforce the STEM focus of the school is hardly the same as students learning science by being scientists. Doing science leads to richer learning experiences and is profoundly different from being taught about it in a room with pictures of scientists on the wall or carpet tiles arranged in fractal patterns.

Image credit: https://flic.kr/p/cL9Gi

Image credit: https://flic.kr/p/cL9Gi

Teachers, and by extension students, become consumed by hitting all of the steps in the “design process” and remembering those stages at the expense of deeper experiences in creativity, design, engineering, or computing. I am alarmed by how many schools celebrate that they allow kids to choose a topic to write a report about (paper, blog post, or PowerPoint) and then confuse such coercive, traditional, and inauthentic experiences with remarkable feats of empowerment or school reform.

It is sad and dangerous to give folks the illusion of agency without actual power or meaningful options.

Candidly, I have not been enthusiastic about teaching “computational thinking” to kids. In nearly every case, computational thinking seemed to be a dodge intended to avoid computing, specifically computer programming.

“There is no expedient to which a man will not resort to avoid the real labor of thinking.”

(Sir Joshua Reynolds)

Programming is an incredibly powerful context for learning mathematics while engaged in being a mathematician. If mathematics is a way of making sense of the world, computing is a great way to make mathematics.

Most of the examples of computational thinking I’ve come across seemed like a cross between “Computer Appreciation” and “Math Appreciation.” However, since smart people were taking “computational thinking” more seriously, I spent a great deal of time thinking about a legitimate case for it in the education of young people.

Here it is…

Computational thinking is useful when modeling a system or complex problem is possible, but the programming is too difficult.

Examples will be shared in other venues.

While waiting for the 5th grade class to settle  down between recess and their holiday party, I wrote this project starter for creating arithmetic flashcard software in MicroWorlds. While the “math” isn’t particularly interesting or open-ended, there are plenty of opportunities for the students to improve and augment the software.

Bad drill and practice doesn’t become good because it is programmed in Logo, or by kids. However, the person who learns the most from “educational” software is the person who made it.

I thought of doing this because “practice multiplication facts” has been written on the classroom board for months. If the kids “write the software, perhaps they’ll think about multiplication a bit.

This is also an opportunity for introducing concepts, like percent, in order to create a cumulative score.

Download the PDF project starter by clicking the link below:

 A “Math” Game Only A Mother Could Love (PDF)