Unit Rates and Scratch

I’m back to teaching pre-algebra after a long time off – and the more things change, the more they stay the same! A key staple of middle school math is learning about rates – how they work, how to calculate unit rates, how to predict with rates, and different representations of rates – including tables, graphs, equations, and story problems. I love to make the connection between the story problem and the equation by doing a coding activity. For our final project on unit rates, I assigned the students a pair programming project in Scratch. The structure of the activity is really similar to what I’ve done in my 6th grade computer science classes.

  1. The background knowledge. We have a discussion about a specific situation involving rates – I chose “toilet paper math”, because what is a more confounding consumer decision than buying toilet paper? I picked a couple of examples of toilet paper packages from the weekly grocery ad and put them into a Google Doc for the kids here. https://docs.google.com/document/d/1zM4wwf2GDSEEaB31IWDeJPTqibtPsG1zLN_XA_k35uM/edit We had a class discussion about what clues on the package might help me figure out what toilet paper to buy. One class mentioned that I could figure out the number of squares / sheets of toilet paper in each package, and another class wanted to go by the number of square feet in the package. Together, we wrote a Scratch program that would help me figure out what toilet paper to buy. For the class example, I showed them how to use the “ask” block to get input, the “set” block to set variables to values, and operators to do math. We created variables for the price of the toilet paper, the number of square feet in the package, and the number of square feet you can get for a dollar. The main character would then report out the square feet per dollar unit rate to help us figure out our purchasing decision. Our class program is here: https://scratch.mit.edu/projects/291422012/editor
  2. The norms before the worktime launch. I explained to the students that when I was an engineer, we often used a protocol called “Pair Programming” to solve problems. As an adult, this meant I prairie-dogged my head up above the cubicle walls and shouted to my friend Jerry: “Jerry! Can you help me solve a coding problem? I can’t figure it out.” Then I would type at the computer while Jerry stood behind me and read over my shoulder, and we talked together about what the code did – line by line. It was really helpful to have a partner talk it over with me. I explained that in middle school, we can also use Pair Programming and some of the norms are pretty much the same. Then I showed the Code.org pair programming video on YouTube.
    https://www.youtube.com/watch?v=vgkahOzFH2Q After the video, we went over the do’s and don’t’s.
  3. I gave the students a choice of word problems having to do with Unit Rates, and their task was to solve one of them with a partner using the Pair Programming protocol. The choices are in this document: https://docs.google.com/document/d/1h8r2z0o2FtOr8N4IjqGaiNrhn_DGAJLIyNREeg9iR0g/edit  I change up the celebrities in the document every so often. Students love Marshmello and also Ariana Grande this year and I got some cute programs with these characters.I swear the Pair Programming video is magic. Students for the most part peacefully navigate partner work after watching and processing the video. I only had a couple of groups that had any trouble at all. This activity took a whole class period for most classes, and a little longer for one group. All of the students were engaged and trying hard, and most groups enjoyed the creative storytelling part of the project. I wish I had introduced Scratch sooner in this year’s math cohort, but we had a lot of manual math to do and so we’re just now starting to automate things. Now that the kids are on board with it, I can’t wait for the next project.Here are a few example programs the students made for the word problems.
    Marshmello’s road trip: https://scratch.mit.edu/projects/293136380/editor/
    Hagrid’s Animals (these students modified the prompt a little bit, but I really enjoyed how theirs turned out and they had fun with the creative storytelling): https://scratch.mit.edu/projects/292456078/editor/
    Ariana’s Carpet (this group of kids decided to include their favorite K-Pop star and I’m embarrassed to say I don’t know who this guy is): https://scratch.mit.edu/projects/293139904/editor/

    I really believe in computer programming as a modeling tool for math expressions. Students love the instant feedback and the creative storytelling, and I love that they can test many inputs and it is a check on their number sense. Often I see students modify their model when they try plugging in a few numbers and then they say “Wait a minute! That gas mileage doesn’t make sense!”

    Other programming languages work just as well. I’ve had older middle schoolers do a similar task in Processing and it really stretches their brains!


A class on engineering, electronics, and the Maker Mindset

At my school, rather than pass through grade levels, students have levels of autonomy – from “Explorers” who do mostly teacher-directed projects and products, to “Pathfinders” who do almost completely student-created projects and products, and job internships. I’m teaching an “Explorer” level class, so I’m introducing new learners to things they might not have known they would like but we’re asking them to try it. Other teachers with Explorer classes are doing things like creating pollinator boxes, producing a play, and studying floodplains. My venture project is called “Whimsical Inventions” and it’s a class about learning how to be a maker and a tinkerer. I began by presenting content about coding, electronics and circuitry, 3-D design, and doing research… but also teaching about the mindset of an inventor. Inventors solve problems, true, but inventors also make things because making things is joyful. We make stuff that is a little over-engineered because it makes us and others happy. We take everyday things and make them more beautiful, musical, entertaining, weird, or funny. If you’re making a thing to be happy, you’re more likely to take risks, to try something that might not work, to iterate on your design and make it better. This is the premise behind the class. To learn about coding, electronics, design, and engineering for the smiles.

As students finish with their final projects I am just feeling so blessed with the circumstances I got to teach in. The kids have come a long way with coding and Arduino. My makerspace is buzzing with 3-D printers and the laser cutter. Kids solder skillfully and safely. And they are doing a great job cleaning up and putting things away. I was lucky to get a class in which many kids were interested in the topic but many others just got placed there to try something new. My class is evenly split between boys and girls. It’s mixed-age with kids ranging from 6th grade to 10th grade. And I have gifted kids, kids with IEP’s, second-language learners, kids from all areas of town. It is just awesome. When I have a diverse group of learners I am a very happy teacher and this has been a phenomenal group.

And look at some of the fun stuff they’re making! One child is making a 3-D printed ferris wheel with a stepper motor and some LED’s. It’s coming along well! She downloaded the Ferris wheel design from Thingiverse.

Another student is making a motion-activated Moo machine. You know those cylinders that you tip upside down and it moos? He’s going to attach it to a servo and mount it in a stand with a motion sensor on it. When you walk by it will moo at you! Here’s the base beginning to print. He designed it himself!

A pair of students is making a light-up holder for your Instax photos. They’ve learned to solder and program these RGB LED strips and they’re going to mount some clips here to show off their photos. Another girl is using the same idea to make a light-up phone case. She has printed several iterations of the perfect phone case to make sparkly with the LED strips.

I have one pair of students that decided to make their own battery-powered car. They designed the car chassis themselves and soldered together the battery packs and switch and motors, and they’re doing to attach wheels and I’m just so excited to see how it turns out.

It’s just been fun. Part of our requirement for the project is that kids have to do a research project as well, and I’ve found that they really are engaged in their research which I didn’t expect. Early on in the class we did readings and watched videos on the value of tinkering and inventing useless things – we watched videos from Simone Giertz, Adam Savage, Ayah Bdeir and others. One of my favorites is this TED Talk from Steven Johnson which tells the story of how seemingly useless inventions can change the world. I’ve taught electronics classes before, but this is the first time I’ve really focused on teaching the mindset of an inventor, and I really think it has positively shaped the culture of the class. When I reflected on the times I learned the most and grew the most as a maker, those times tended to happen when I was making something I personally cared about but was just a fun side job, a useless invention. I hoped to give my students that same experience. I really believe most of them are, and it’s a very happy class to teach.

Sometimes when I’ve taught engineering classes before, the classes would end up being not very diverse (kids tend to sign up who already know they will like it, and I tended to have mostly boys in those classes), and I never felt like I had time to teach about maker culture. With a diverse class and making the culture/mindset front and center in the learning, it’s been a very fun experience and I can’t wait to show you how the exhibition products turn out.

Pre-calc, Trig, Physics, and Planetary Motion – a coding project

I mentioned earlier that I get the privilege of teaching pre-calc for the first time this year. As a capstone project for our unit on trig, I created a project on planetary motion. It had been on my radar since we studied conic sections and learned about how planetary motion is a real-world example of an ellipse. I browsed around for some examples of planetary motion simulators, and found this one written in Python.


The link above uses real-world values for masses of planets and the value of big G, but I thought the students would enjoy “playing God” and creating their own planets and velocities and creating the big G constant for their little universe. In the process we would learn about the physics of planetary motion and about how trigonometric functions can be used to model periodic motion in a coordinate plane. Yay math!

My pre-calc students have not yet had high school physics, so I had the opportunity to set the groundwork for some basic mechanics. I know I gained a lot by watching these little videos from Crash Course and PBS. I had the students watch them both, and we processed them afterward.


After this first video, the main mind-blowing concepts were: a) centrifugal force is kind of a “fake force”, it’s just the balancing force to centripetal force that pulls you inward, b) in a circular path, your velocity is tangent to the circle, and c) students knew that force could be described by the equation: F=ma, but after the video we talked about a special version of the formula that describes circular motion, F=mv²/r.

Together we wrote, earlier in the unit, a basic computer program on Khan Academy that made a little planet orbit around a bigger sun using trig functions to find the x and y coordinates. Fun but not an accurate planetary model. I’m not sure if the computer program playback will work here, but here’s the basic model.



Made using: Khan Academy Computer Science

Since we had briefly learned about Kepler’s laws during our unit on ellipses, I told the kids I wanted the model to change so it actually modeled planetary motion – faster when close to the planet, slower when farther away, making an ellipse with the “sun” at one focus. And to do that, we’d have to learn a little about how planets exert force on each other and how that impacts their motion. So we watched the next video.


So from this video, we learned many more mind-blowing things. Among them, there is ANOTHER formula for force: F=GMm/r². These formulas are all related to each other. We would now modify our computer simulation to show how they all work.

Ok so here are the basics of programming an animation. This structure is common to pretty much all game programming as well. You have setup code and then an animation loop, that runs over and over again. Most of the time, the animation loop runs around 60x per second.

In the setup code, we initialize all of our variables. In the animation loop, we’ll calculate all of the forces and accelerations and velocities and positions, and once everything is updated, we’ll re-draw the scene. You always re-draw the whole scene from the objects in the “back” (such as the background) to the objects in the “front” (such as the moving planets). For simplicity, my model doesn’t take into account the planet’s effect on the sun… just the sun’s effect on the planet.

Step 1: In the animation loop, draw the background and the sun. In the Khan Academy programming environment, (200,200) is the center of the canvas since the canvas is a 400×400 grid. This code places a circle, 40 pixels in diameter, right at the center. The fill() and background() commands are used for colors.

var draw = function() {
fill(164, 244, 245);


Step 2: In the setup code, create variables for the sun’s mass and the planet’s mass. I just told the kids to make up numbers, one a LOT bigger than the other, like 100 times bigger or more. I just made these up on the fly. The units are totally fake. Just have fun making up weird numbers.

var smass = 34782;
var pmass = 7.2;

Step 3: We need to place a planet. We’ll create variables for the planet’s x and y positions and draw a smaller circle at that position. I recommended to the students that they place the planet so that it is directly above, below, or to the left or right of the sun. In other words, the x or y coordinate is the same as the sun’s, but the other coordinate is different. My planet starts out 170 pixels ABOVE the sun (because the y axis is upside down).

Setup code:

var px = 200;
var py = 30;

Animation loop (at the end of the var draw function, before the last curly brace)

fill(153, 242, 126);
ellipse(px, py, 10, 10);

Step 4: You’ll need to calculate how far away you are from the sun at any time in order to correctly calculate the force. So make a variable to store this distance, and then re-calculate the distance every frame. Normally you would use the distance formula, sqrt((x2 – x1)² + (y2 – y1)²)  however Khan’s math library has a function called “dist” that simply takes the parameters x1, y1, x2, y2 and returns the distance between them.

Setup code:

var pdist;

Animation loop (before you draw the planet. I added a comment above this to show where we are doing all of the math)

pdist = dist(px, py, 200, 200);


Step 5: Now we have *almost* all of the information needed to calculate the force on our planet. We know the masses of the two planets and we know how far away they are at any time. We do NOT know big G, our gravitational constant. For now we’re going to make up a number. It’ll be wildly wrong. We will fix it in a bit. We’ll calculate force using our wrong constant for now. The students enjoyed thinking about how when you create your own universe you get to decide things like how big the universal gravitational constant is.

Setup code:

var G = 10;  // just make something up
var pforce;

Animation loop (after you calculate distance but before you draw the planet)

pforce = G * smass * pmass / (pdist * pdist);

Step 6: Now we need to explore the relationship between position, velocity, acceleration, and time. We already have variables for the planet’s x and y position. We will need to break velocity and acceleration down the same way. Velocity is how much the planet’s position changes with each time interval. Acceleration is how much the *velocity* changes with each time interval. If our object starts at the top of the circular path, it begins with a fairly large x-velocity and a zero y-velocity. As it moves around the circle clockwise, the x-velocity and y-velocity change so that by the time it gets around 90 degrees, the x-velocity has slowed to zero and the y-velocity is at a maximum. And the cycle repeats around the circle. A periodic function!

So after position is established we will give our planet a starting velocity. Since my planet started at the “top” of its circular path, I will give it an x-velocity but no y-velocity. A student that put their planet to the side would give their planet a y-velocity but no x-velocity.  When you run this code now, you will see the planet move in a straight line tangent to its circular path. It follows Newton’s first law – no force, no change in velocity. Bye!

Setup code:

var vx = 4;
var vy = 0;

Animation loop (put this code right before you draw the planet):

px = px + vx;
py = py + vy;


Step 7: We need to calculate the acceleration in the x- and y- direction every frame. This is where the trig comes in. This step really consists of three substeps. First, we need to find the angle of rotation between the planet and sun. Second, we find the x- and y- components of the acceleration. Third, we add the acceleration to the velocity (remember acceleration is the change in velocity every frame). For the first substep, we can calculate the angle of rotation easily – the planet’s position is a certain y-distance and a certain x-distance away from the planet, so if we use inverse-tangent, we can find the angle. Khan’s math library has a function “atan2” that calculates an angle given the y-distance and x-distance. Note the sun is at (200,200) so that’s why those numbers are hard-coded. Substep 1:

Startup code:

var ptheta;

In animation loop:

ptheta = atan2(200-py, 200-px);


Substep 2. Calculate acceleration components. Here we use our original force formula: F = ma. We calculated force, we know mass, so acceleration is easy – just Force / mass. Then we have to multiply that acceleration times sin(theta) for the y-component and times cos(theta) for the x-component. These use the definitions of sin and cos as you relate them to a unit circle. The code!

Setup code:

var ax;
var ay;


Animation Loop (after you calculate ptheta):

ax = (pforce / pmass) * cos(ptheta);
ay = (pforce / pmass) * sin(ptheta);


Substep 3. This part is easy. Add the acceleration to the velocity every frame. Do this before you re-calculate position in the animation loop.

vx = vx + ax;
vy = vy + ay;


You’ll run your code. The planet will either fly off into the unknown or crash into the sun. I encouraged the kids to play with the value of G, but sometimes the animation runs so quickly that it’s hard to even tell if you should dial up G or dial it down. So we had to come up with a better way to find a universal gravitational constant that would make our little solar system dance instead of fall apart.

Here’s where our other formulas for Force come in. For uniform circular motion, the centripetal force that keeps a body in a stable circular path is: F=mv²/r.  For planetary motion, the force affecting the planet and sun can be modeled as: F=GMm/r².   We know all of the variables in both equations EXCEPT a value for G that makes the orbit stable. So set one equal to the other and solve for G. I used some contrived numbers in my model and all of my students had different contrived numbers. Mine were:

M = 34782

m = 7.2

r = 170 (since my planet started at y = 30 and my sun was at y=200 and the x-coordinates were the same)

v = 4 (I just made up a velocity of 4 pixels per frame)

When I solved for G, I got a value of 0.078. So I modified my program and plugged in this value for G and guess what happened? Uniform circular motion and the feeling that I AM GOD of my own little universe.

You can make tiny changes to the planet’s initial velocity, for example change it to 2 instead of 4, and see the planet travel in an elliptical comet-like path instead of a circular path.

Here is the entire working program.



Made using: Khan Academy Computer Science


When I taught this lesson, we went through the steps as a class just as I went through them in this blog, discussing them along the way. For a final product, the students will write an essay (!) describing their understanding of the physics of planetary motion. I will also give them a brief quiz. I have not yet written a rubric but will share it when I do.

I really enjoyed working on this little coding project and was so pleased that I could connect periodic functions and the physics of motion. If you make any modifications or try this with your students, please let me know.

Somewhat in support of old-fashioned math

While my pre-calc class has been digging hard into the world of technology and inquiry for their learning, I am feeling kind of guilty and kind of not-guilty for doing direct instruction and manual calculation in pre-algebra.

We’re working on a unit on decimal operations. Decimal operations are included in the 5th grade Common Core standards, but my assessments in our previous unit on positive/negative numbers told me most students aren’t 100% masterful with them yet.

I have only been a *tiny* bit constructivist with this unit. We did a brief activity using base-10 blocks to understand place value. I gave the students a pre-assessment on adding and subtracting with decimals, and based on the pre-assessment I could identify maybe 15 students over all three sections that needed some help with those operations. I gave most of the class some time on Khan Academy while I did small-group instruction with those kids. We just worked problems and focused on proper carrying/borrowing/place value. Every single kid was familiar with the basic idea, they just had some gaps when it came to the algorithm. The small-group work was just what they needed.

For decimal multiplication, I gave the students a worksheet I made up with some problems that had patterns in them.

I did not teach the students how to multiply numbers with decimals first… I just wanted to see if they could use the patterns in the worksheet to infer how big the numbers would be. We went over the answers together and then I asked the class if there’s a rule they started to pick up that told them where to put the decimal in the answer. Every class had multiple students that said something to the effect of: “however many decimals are in the problem, that’s how many are in the answer”.  All we had to do was formalize that into a rule and then practice it.

As a unit project, I taught the students about how to write an invoice if they own a small business and need to charge their customers for items they buy. Without doing anything constructivist yet, I just taught the kids how to convert a percent into a decimal and then multiply to calculate discounts and tax. Creating an invoice involves decimal addition, subtraction, and multiplication, so it’s a great assessment to the unit.

An invoice from a butcher shop that involves discounts, tax, totals, etc.


For the students’ unit assessment, they will create their own virtual store that has multiple items I could buy, some made-up coupons involving percent discounts, and a made-up tax rate somewhere between 1% and 12%. I’ll shop at each student’s store and pick out some items and coupons, and they will have to make me an invoice by hand.

Now for the reflection on this unit so far: I have really mixed feelings about the unit’s topic, manual calculation of decimal operations. I am totally on board with the understanding that in a computer-driven world like ours, they can get by without knowing it. They can actually thrive without knowing how to do these calculations manually.

Why, then, does this feel so satisfying? Kids thanked me for teaching it to them. An intern volunteering in my classroom commented “this is really cool. I never actually learned how to do this. It’s great.” I’m reminded that I *can* plug a sudoku puzzle into a computer program and have it solved for me, but it’s satisfying to work through the sudoku puzzle myself and know I’m just as smart as a computer. Plugging numbers into a calculator is just as much of a rote task as large-number multiplication, but doing the math by hand, in the right mindset, gives you ownership of the puzzle.

Is that why manual math has value? Does it have value? I do not plan on emphasizing this kind of manual calculation once this unit ends – when we get into rates, ratios, equations, and expressions, we’ll use computerized tools as problem-solving aids most of the time to free up our working memory.

The other part of these lessons I’ve wrestled with is the direct instruction vs. constructivist. The lessons started out with a little pattern-finding and then I just taught the kids how to do the math. Over time, I have toned down the inquiry in some situations and I now believe it’s possible to overdo inquiry. Sometimes you are done trying to ferret out the method for yourself and you just want someone to show you how to do it. Some struggle is healthy but not unlimited struggle.

I would not have taught like this six years ago. If there’s a scale where 0 is pure direct instruction and 10 is pure constructivism, I would say this set of lessons is like a 2 or 3. What should be your criteria for determining when you do inquiry and when you do direct instruction? Lots of questions I don’t have easy answers to.

But this set of lessons, this unit, felt satisfying to teach and I expect good results from our little shopping assessments. I don’t have any regrets.




Trig and MLK Week Continued

Just blogging to report on my two big initiatives for the week: finishing up a mini-project on trigonometry using the micro:bit accelerometers, and a week on anti-racism in my sixth-grade advisory.

The mini-project finished up SO well. We started last week by assembling micro:bit inclinometers and programming them to report out the angle measured by using trig ratios. This week, we took measurements with them and did the math. The students measured the height of a neighboring building by standing exactly 800 centimeters away and sighting the roofline with their micro:bit devices. It’s been a cold week so we rushed inside to do the math, and the kids calculated a building height of around 39 feet. We probably got in the ballpark.

One commenter on my blog suggested we try another method, sighting an object from a distance, then backing up a known distance and taking another reading. This ended up being a cool application of a system of equations. Great suggestion!

Even though learning to solve systems of equations feels like drudgery at first, it’s one of the more useful algebra concepts I have learned. In my decade as an engineer, I modeled many situations involving systems.

The kids did a great job and seemed to enjoy the challenge of the activity.

The other day, I blogged about the very strange situation involving the Catholic school teens in DC mocking other protesters near the Lincoln Memorial. With the MLK holiday coinciding with that weekend, I really felt the need to do a lesson series on racism in my advisory class. They are sixth-graders, and I decided to survey them first – I’m glad I did. Only one of the kids had even heard of the incident with the protestors, which I found fascinating. What we perceive as going viral doesn’t reach all age groups equally. I decided to leave the incident off the lesson plan and focus on basic, age-appropriate lessons on racism.

We started with a few circle prompts about times they have ever seen someone treated unfairly because of their race, skin color, or religion. I asked them about their perceptions of bullying at our small school. Almost all the students feel that at our school, bullying is not really so much the issue. Some students can be rude or insensitive, but they understood the difference between rudeness and bullying.

I talked about how it’s healthy that in our lifetime, it’s not socially acceptable to be outwardly racist. People in our community tend to call each other out on it. Racism tends to take the shape of the many small ways in which your life is made a little easier or a little harder because of your race. We read through the list created by Peggy McIntosh in the Invisible Knapsack. Some of the students were able to chime in with ways in which privilege tends to show up at school – for example, if a girl hears “you’re pretty smart! Girls can be smart can’t they?” or if you get in trouble with the principal and a little voice makes you wonder if it’s because of the way you look.

Today, we started watching “A Class Divided“, the story of Jane Elliott’s brown eyes / blue eyes discrimination experiment in her third-grade classroom. The kids find it fascinating. It’s a very good and comprehensive introduction to what discrimination is and what it does to people. As a sixth-grade lesson, I think it’s a solid foundation to build on. I’m interested to debrief with the kids tomorrow to get their thoughts on it. By the end of class today, they were begging me to try the experiment at my school – to bring collars and let them try it. I think they’re intrigued at the idea of lording it over their classmates, but also wondering if the collars would make them the same nasty people that the third-graders became when they were empowered over their lower-class friends.

Jane Elliott is a nationally-known advocate for racism education now, and I told the students I have seen her do this experiment on adults and it’s still just as powerful. She can make adults cry. (I won’t show that video to the kids because there is swearing… but man!)

At some point, one of my students raised his hand and said “Donald Trump is racist.”  I sat in it for a moment and then said “Yes. He is.” Other kids wanted to chime in. I allowed a few comments. I ended with “He says racist things. It’s not OK.” And I moved on. I have heard arguments that Trump says the things he says to provoke crowds, or build his “message”. If you say racist things to provoke or build your message… you are a racist. I would never allow one of my students to say the things the president says. That behavior needs to be named.

It’s not a ton of lessons, but the students have been engaged and receptive, and I think it got us off to a good start when it comes to understanding these themes.




Being an anti-racist teacher

I have a few things to say about racism. I’m grateful, in an odd way, for the viral video of the boys wearing MAGA hats and mocking the indigenous drummer in Washington DC. You know the one.

It hit me hard because I recognize those kids. Not these exact teenage boys. But the smiles, the color, the jumping, the shouting, and the hats. They look just like my kiddos in northern Colorado. I worked with over 1000 kids just like them last year at my suburban public school.

I am amazed that we live in an era in which the president’s name and signature slogan are used as racial taunts. And yet here we are. Over the past couple of years, it’s been shocking to see kids act openly racist to their classmates simply by yelling TRUMP in the face of a Latino classmate with whom they already don’t get along. Or by screaming TRUMP’S GONNA BUILD THAT WALL in a crowded hallway and then ducking into a bathroom. Amazing that a kid can wear a MAGA hat to school and just revel in the high-fives from half of the students and the glares from the other half, and just bubble over with joy at the chaos they’ve wrought around them. Because of a President’s slogan.

I have NOT handled it well for the past couple of years. I have tons of excuses. I really wasn’t prepared for students to act racist to one another. I’m not trained in strategies for ending it. If I intervene, how much of my motivation is based on ending bullying and harassment, and how much of my motivation is based on not liking the politics of the kid’s parents? What if the parents call me and accuse me of being anti-Trump? Am I prepared for that call? If not, maybe I should scale down my response until I can really understand what’s driving me. Is the kid really being racist or am I overreacting? Maybe I’ll console the kid who’s being teased and avoid confrontation with the bully. I swear I had these thoughts. I’m not proud of them. I do want to respect everyone’s political differences and suburban parents can be intimidating.  But come on – I was looking the other way when there was obvious racial bullying going on, disguising itself as politics.

The incident with the Native American drummer was fascinating because it happened on a school outing. I found myself empathizing with the school and internally making excuses for them. I have been there. Teenage boys do stupid things. My own students have these same impulses. And while we’re passing the buck, I believe the president’s own racism is at the heart of these issues, absolutely. The man has claimed Central American asylum seekers are diseased. He tried to make his case for a wall based on the presence of possible prayer rugs in the desert. He made fun of Wounded Knee. These are only from the last few weeks – the man is not politically incorrect, he is outright racist, period.

I stopped empathizing with the school when I realized I needed to stop making excuses for myself. It’s irresponsible of me to not even try to clean up the mess when his words set fire to my student community. I can’t let these moments go by. Kids need to know their words and actions are not ok, and they need to be called out for what they are. No more “you guys need to just stop and walk away”. It needs to be “I heard you say BUILD THE WALL as a way of harassing another student. Racial intimidation is serious and we need to take some time out to deal with this.” Covington Catholic School – and me, and my former school, and my current school, need to have a moment of reckoning and realize we have to deal with these forces that have been thrust upon us. We have a racist president who inspires kids to be racist. This is the world we live in. That nonsense HAS TO STOP and we need to not back down because we’re worried about offending their parents.

And if any of you reading this have suggested tools, techniques, articles or whatever to help someone learn the best way to correct racism and right the ship, please send them my way. I believe in restorative discipline and want to not just end racist, harassing, and bullying behavior but create a positive, empathetic community.

Trig and Physics and micro:bits

This year I am teaching pre-calculus for the first time, and I am committed to doing projects with my students as much as possible. Last semester we created a parabolic trough solar oven and made holiday cookies for students. This semester I decided to start with a unit on trigonometry, and I happened upon an interesting project via Twitter that showed someone sighting a distant object and using a micro:bit’s accelerometer to calculate tilt and thus how tall the object was. What a cool application of computing and trig. I decided to try and create the project for my class.

I decided to spend some time actually creating the thing. I started by attaching the micro:bit to a cardstock tube. The tube could be used to sight the top of a tree or building. We would try to keep the micro:bit on the same side and simply adjust the tilt until an object was sighted through the tube.

A micro:bit viewfinder.


I played with different programming languages and decided to use Python, because it had a robust library of math functions. I started with a simple program to just fetch the accelerometer readings when you push a button.

A program to fetch accelerometer readings when you push the A button.

I found that if the tube is held level, the “x” reading was close to 0, the “y” reading was close to a maximum of 1024, and the “z” was close to 0. If I held the tube pointing straight up (90 degrees), “x” was -1024 and “y” was close to 0. “z” remained close to 0.  So as you tilt the micro:bit, the “x” accelerometer goes from 0 to -1024 while the “y” accelerometer mirrors it and goes from 1024 to 0.

I did a little searching to figure out how to convert accelerometer readings into an angle of inclination. There are a lot of different formulas out there – probably all correct. One source I found had a very simple equation:

So basically the angle of inclination is the inverse sine of the ratio of the “x” accelerometer to 1g.  I had a hard time visualizing why the ratio x/1g would be equivalent to an opposite / hypotenuse, but it started to make sense when I realized the forces at work are really similar to the kinds of forces on an object that slides down an inclined plane.

In the diagram, the parallel force is analogous to the reading on the “x” accelerometer. The perpendicular force or “normal” force is analogous to the reading on the “y” accelerometer. Fgrav is basically 1024, the reading you get when there is a full 1g on an accelerometer.

This triangle is similar to the triangle made by the inclined plane. I made a little sketch that maybe shows this more clearly?

So basically the formula above, the simple inverse-sine operation, works because your angle of inclination is congruent to the angle opposite the “x” acceleration vector. You can find that angle by finding inverse-sine of “x” to “force of gravity”, 1024.

I wrote another Python program that did this math and reported out the angle, and it seems to be reasonably accurate.

Once you know the angle, if you know how far away you are from your object, its height can be found this way.

tan(theta) = height / distance

distance * tan(theta) = height

Easy peasy! This assumes you’re sighting from the ground. We may find we have to adjust for eye height. We can do that. Time to create the student-facing activity.

I put together this packet for the students. My class is super tiny so the kids can go through it as one group. For a larger class I would make groups and do lots of catch and release.

Here’s how it went.


We watched the video on the biltmore stick. Students gave me hypotheses around why it worked, and we talked about potential sources of error.

I told the students that with modern technology, we should be able to make a decent height-finding tool. I introduced the micro:bits to them and told them about some of the features. They’re the first kids in my school to use the micro:bits, and they were ENCHANTED by them. You turn them on and they show messages and images, they play a game, and then they tell you to get coding. How fun! The students had a zillion questions about what else the micro:bits can do and how they worked. After the excitement faded just a little, we talked about accelerometers and how they worked, and the students started working through the packet.

I hoped they would be able to struggle through most of it up until they had to write their procedure in Python, but of course that isn’t how it went. We ran up against several big conceptual roadblocks.

  1. The idea of the x, y, and z-axis accelerometers BLEW THEIR MINDS. It was really tough to visualize which axis was which, and the students twisted and turned the micro:bits every which way. They had a very tough time being systematic about turning the micro:bit on just one axis to narrow down which accelerometers were changing. I hoped they would be able to sort out which axis was which on their own. They could not, and they got frustrated really quickly. I broke down. I just told them which axis was which and what the max and min values were. I have to admit this has been a struggle for me as well. Visualizing the three accelerometers is a challenge and I probably would have felt the same way in this activity.
  2. The accelerometers are really sensitive. One moment you set the micro:bit level and get a reading of 0. Another moment the micro:bit seems to be in the same position but your reading is -92. Another moment it’s 16. The text scrolls slowly so you don’t really appreciate what those readings look like in the moment. It was hard, then, to ferret out what the max and min values were. They floated around.
  3. I really thought with their geometry background the students would visualize the similar triangles really quickly. They did not. Looking back, I remember feeling frustrated and like my mind was a little blown when I learned about forces on an inclined plane. So I should have been ready for this. But the whole idea that a force of 1g directed toward the ground could be broken up into the x and y components on the accelerometers, and that they didn’t add up but rather made legs of a right triangle… WHOA. There was yelling. There was almost crying. Emotions were high. Eventually they did seem to understand but I am going to have to do some good formative assessment next class to see what they actually got.


I have a TINY class, only 5 students, and so the yelling and the emotion was totally manageable, but I am SO glad I did not go through this with a bigger class. I would have done a lot more pre-work on gravity, inclined plane forces, and similar triangles.

Today, after all of our drama, the students wrote programs to calculate the angle of inclination and strapped the micro:bits to paper tubes. Next class, we’ll go outside and take measurements. One of my students found an alternate method of measuring the angle that was something similar to this.

It seems to use a distance-formula calculation instead of the force of gravity and it’s interesting how it uses all three axes. I’ll let her try it and see if her results are similar.

I’ll take some pictures of the results of the experiment and hope I get to do this again with a future group! I feel like with better pedagogy this would be a really great activity!


New Semester Musings

Well, I have successfully (?) survived my first semester at a startup school. It wasn’t always pretty, I’m a little bruised, but I have some changes I am ready to make. Here they are.

  1. I am determined to get better quality work from my students. I think the students I had in my venture project class enjoyed the course and made creative projects, but I was disappointed in the quality if I’m being very honest. Their communication products were especially poor. Without a good poster, presentation, or research paper to accompany your project, it kind of looks like a 4th grade diorama. And some of the projects even by the 8th – 10th graders kind of looked like 4th grade dioramas. As a staff, we came to some common understandings about what makes good research – and I will also spend some time digging up exemplars and industry examples that the kids can look to for inspiration. Communication will be a full third of their “grade” for their projects and I need to leave enough time at the end of the semester to work on this piece instead of squealing into the exhibition still throwing hot glue on a project.
  2. I’ve carved out my space. I really needed part of a classroom to call my own, and I kind of took over the makerspace in the school. I needed to feel like I had some ownership over my little section of the building, in order to take pride in the work that takes place there. I hung posters, organized all of the shelves, set up the 3-D printers and sewing machines, carved out some space for student projects, and I made little journals for the kids. We were in such a rush to open the building that a lot of this basic stuff just got left. Living in a pile of clutter and unfinished setup is stressful on its own. Now things are organized and set up and I am calmer. I also recognize that claiming space is a big part of what gives the kids ownership in the school, so I’ll look for ways the students can display their work and label their own areas.
  3. I set up protocols for the makerspace. Because of our disorganization last semester, a lot of our equipment was used carelessly. Students would just grab anything from jumper wires to knitting needles to impact wrenches and either use them incorrectly or fidget with them. For any equipment that is either dangerous or delicate, I’ve set up a 3-tier badging system. A level 1 badge means you can follow a basic tutorial to use the tool with support. A level 2 badge means you can use the tool independently. A level 3 badge means you can troubleshoot the tool and also teach others to use it. When you have reached level 3, you can use the tool without staff supervision and also teach other students how to use it. I posted lists of our students that have level 3 badges next to everything – the 3D printers, the sewing machines, the Glowforge, the soldering irons, the podcasting system. Currently the lists are empty, but as students level up, they can start using the tools independently and showing their friends what to do.
  4. I think I have the start of a really fun venture project. This quarter’s venture project asks the question “What does it mean to be a Maker?” I toyed with the idea of having the students make inventions that were purposeful and noble, but when I reflected on how I got started as a “Maker”, I realized I only started being able to make purposeful things after I had spent some time tinkering and making a bunch of crappy things. I needed to have the permission and courage to use tools to make things that were lousy but fun and interesting to me. So the secondary title is “Useless Inventions”. We’ll learn about Arduino and micro:bits and 3D printing, and we’ll visit Fort Collins’ Creator Hub, and as the kids’ final project they will make their very own Useless Invention. It should be joyful and interesting but it’s perfectly OK if it’s crappy. Making a few crappy, entertaining things will help them build resilience and grit in a non-threatening way. The inspiration is this TED talk by Simone Giertz. When I’ve pitched this idea to students, they have been VERY excited about it and rattled off a list of a few things they’d like to make. A jellybean cannon. A fantasy carousel. A jump-scare machine. A virtual aquarium. I want them to appreciate the Maker Mindset and get involved in the open-source community. The students will share and publish their projects, giving credit to whatever inspired them. They can publish tutorials on a site like “instructables”, or even make YouTube videos. I’ve got a formal planning document but that’s the gist of the project.

It’s late and I will write more about venture project and what I expect from math this quarter… I’ll do that part later. I see my first group of students tomorrow and I ought to get some rest.


Coding Camp and Hackathon

I am posting my CS Education week report waaaaay after CS Education Week – for someone who cares about CS like I do, this feels weird!

At Compass, our school leadership felt strongly that we needed some “teacher time” to wrap up semester 1 and plan for semester 2. They’re not wrong… we did need it. There are an awful lot of loose ends we never really tied up for the beginning of first semester, and we NEEDED to tie them up for second semester. Huge questions, like how will we give feedback to students, how will we measure them with respect to graduation requirements, levels of autonomy, competency and such. We didn’t even have clarity on basic questions like will we measure their content knowledge, core competencies, social-emotional intelligence or some combination… So yeah. We needed the time! During the past two weeks, the teaching staff at Compass met every day for a couple of hours and our main task was to assess every single kid. And we did. We spread rubrics all over a room at Colorado State and we had a conversation about EVERY KID. It was empowering and also exhausting, but I came away feeling like what we did was important and good. How great is it to say we know every single one of our 150 students, we know where they stand and what they need to do in order to graduate as a well-adjusted and competent member of society.

While we were assessing and planning, that left our school leaders and a bunch of volunteers with 150 students in the building for a couple of hours every day. So we ran a coding camp for the students, led by volunteers! It was so strange to not be involved in the coding camp, but I had to let it go in order to get our act together as a school. But it turned out to be a fantastic experience and I am so very humbled by what our volunteers and kids can do.

Our main volunteer for the coding camp was Karthik Palusa – he’s a CSU student and the owner of his own startup company in Fort Collins. He rallied some other volunteers and came in every afternoon for two weeks to run the camp. The structure was fairly simple. For the first hour every day, the kids did self-paced tutorials on coding at code.org, Khan Academy or the coding environment of their choice. For the second hour, they worked with a team on a hackathon project. The project could solve any problem they wanted, but they had to collaborate and create something that went through the entire design cycle from identifying a problem through prototyping a solution. Many students coded webpages, Scratch games, apps on code.org… some went a little farther and we even had some student groups make games in Unity. At the end, the students submitted their programs online. Karthik and a group of volunteers graded the programs and awarded prizes in three categories: younger beginner, older beginner, and intermediate / advanced. Some examples of winning programs included a math-education game, an anti-whale poaching game, an educational mobile app about climate change, and a Scratch animation about deforestation.

The kids had a great time. They learned so much. It was really liberating for me, honestly. I’ve been the only computer science teacher in a building for such a long time. Then here comes a group of volunteers and they prove that if kids have motivation, a chance to collaborate and be creative, and some support, they can indeed learn to enjoy coding. I’m really excited to take our program farther at the school, but look what an awesome head start we have. I was skeptical at first, but I would recommend this structure of a coding camp. You don’t need to have a staff with a lot of CS expertise to help children learn about computer coding. You can round up some helpful volunteers and some self-paced websites, add a competition and some prizes… and look what happens.

This coming semester, I’ll be teaching a venture project on “whimsical inventions”. The idea is to learn about the Maker Mindset. How to tinker, create, and make fun things just for the joy of making and sharing. It’s about building resilience and the ability to fail upward. And we’ll learn to code and create cool things with micro:bits and Arduinos. I’m very excited to teach real CS again and it should be a great followup to this coding camp experience.

Thank you to all of our volunteers and our administration for making the past two weeks happen. It was awesome.


First Semester Report

I’ve been teaching at my new school, Compass Community Collaborative School, for almost a semester now and thought I ought to process a little by blogging. It was exciting to open a new building – our school was an old thrift shop before we leased the building, and seeing it transformed as a school has been amazing.

Our main stage area. We spent the day before school assembling all the furniture!

What a whirlwind. Parts of the job are a more intense version of what I was doing as a public schoolteacher. I have four “preps”, essentially. Our morning schedule consists of intensives, and I teach math exclusively during these blocks. I have a section of Pre-calc, a section of Pre-algebra, and two sections of Geometry / Algebra II. I’ve been teaching these sections mostly with resources on Summit Learning Systems and then some resources I create. One take-away is that I really, really wish Algebra / Geo / Algebra II weren’t so heavily recommended as college prep courses. It is so difficult to make the classes authentic and hands-on, especially when the content is new-ish for me. My pre-calc class is working on a construction project making a parabolic trough solar oven, and we’ve done some interesting math around conic sections. I code a little bit with Geo/Algebra II using Khan Academy and we’ve explored quadratics using that tool. The real-world applications don’t just jump out at you though; you really have to work to create them.

My fourth “prep” is my astronomy / space exploration / robotics venture project. I made a decision early on to offer participation in FIRST Lego League and FIRST Tech Challenge as full-fledged venture projects. I am a big fan of the FIRST family of programs since they entail real world problem solving, a tournament which is also an exhibition of learning, and a full network of support. The setup has been a little challenging, since in my venture project group, I have some students participating in FLL, some in FTC, some doing neither but doing a project related to space exploration… and some students doing both. I believe very much in allowing for FLL/FTC participation during the school day; I think it’s equitable. But it really makes classroom management a huge challenge!!

I worked hard to give the students plenty of experiences outside the classroom; we went to the science museum’s planetarium, visited Colorado State’s science lab, had a guest lecture from an instructor at Front Range Community College, went to observatories, researched at the CSU library, toured the robotics lab in the Electrical Engineering department, and toured the manufacturing floor at Wolf Robotics. I did very little actual “teaching” and have mostly been coaching, facilitating, and guiding the kids through the design process. For our final exhibition in December, we’ll have robotics demos and a showcase of student projects related to astronomy and space exploration. I have kids working on their own science fiction novels, self-sustaining biospheres, treatments for the mental health of astronauts, hygiene products for space travel, scale model maps of Mars, Arduino-based robots and more.

So yeah, it’s been busy! Some parts of the school model have been slow in coming, and some parts have strayed from our original vision and we’ve had to do some hard course corrections. I don’t want to do a full analysis of it here – but our tiny staff is trying extremely hard to make this whole thing work.

As it’s the holiday season, my little break from reality is to work on my annual Ugly Christmas Sweater. This year I envisioned having an IoT-enabled sweater that people could activate from their phones. I ended up purchasing an Adafruit Flora, some Neopixels, a wearable Bluetooth LE module, and then reusing my LilyPad MP3 player from last year. It took me a solid day just to get a prototype working, but I love this kind of problem-solving and can’t wait to see the sweater actually come together. Once I get it sewn together, I’ll just have to finish “choreographing” some of the music. It’s difficult to choreograph without all of the neopixels sewn together, and it’s a pain to prototype all those neopixels with alligator clips.

Will blog when the sweater is done, I promise.

I will blog about our exhibition in December also. That will be a better time to process the successes and challenges of this semester!