Tag Archive | math education

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!

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.

Common Core Math Needs To Go.

I really believe that a major obstacle in making much-needed changes to public education – making it more personal, relevant, flexible, enjoyable… making it less boring and more likely to build literate, happy, employable and productive members of society… a major obstacle lies in the Common Core Math Standards and everything that causes us to cling to them.


I can’t prove these standards are bad for kids’ education. I can’t prove it because we measure the quality of a child’s education by how well they take a test according to these standards, and whether they eventually learn these standards well enough to graduate high school. We don’t tend to measure the quality of a child’s education by metrics that actually matter, but when we do, the measurements aren’t good. The achievement gap persists. Students report increasing boredom and disengagement with school as they proceed through high school. Students that attend college increasingly need remediation. Employers report a dearth of applicants with needed skills for jobs. Surveys of adult science and math literacy are depressing.


A thought experiment. If there were no math standards and no curriculum and no textbooks. Nothing. All math books and online curricular resources and all math teachers suddenly went away, and we had to figure out a way to teach children what they needed to be successful, confident, productive, empathetic citizens. What would we do? We had a similar thought experiment in our Education Reimagined cohort, and interestingly, not one of us suggested anything looking like the current state of mathematics learning. We thought of many ways to make mathematics interesting, relevant, creative, personal, even joyful.


There are undoubtedly math and numeracy skills that are fundamental for our students to learn. Maybe it would be a good thought experiment to start with the end in mind. What do literate adults need to know about mathematics?


What would be on that list? Here is my list. I put stars next to “advanced”, possibly optional, topics. Just an off-the-cuff list of what I am glad to know and what I wish other people understood about math. What are yours?

  • Basic principles of addition / subtraction, especially mental math and estimation
  • Multiplying and dividing, again especially mental math and estimation
  • Doubling and halving mentally
  • Percents and proportions (mental math and back-of-napkin techniques)
  • Ratios and fractions
  • Using technology for all operations above and testing reasonableness of answers
  • Statistics and presentation / organization of data. Estimation, identifying outliers, using technology
  • Making sense of very large/very small numbers and the proportionality of them
  • Scientific notation
  • Formulas – substitution into a formula, and writing your own
  • Spreadsheets, data collection, visualization tools, and spreadsheet formulas
  • Computer programming
  • Logic and puzzles (*?)
  • Personal finance – taxes, loans, interest, saving for goals, budgeting, shopping.
  • Entrepreneurship and running a business. Profit/income/expenses.
  • Strategy, game-playing *
  • Simulation, modeling, making predictions. Taking a real-life situation and modeling it with bare-bones variables, with or without technology. Evaluating a simulation to determine if it’s valid. (*?)
  • Measurement, units and unit conversions. Length, weight, volume, mass, area, speed, time. Making your own units when needed. Using measurements in:  Food prep, sewing, crafting/DIY, gardening, home improvement, public transportation and auto care.
  • Coordinate graphing – plotting points in 1, 2, and 3 dimensional space and making meaning from the graphs – creating your own coordinate axes and using them – xy and xyz. Applied math in 3-D design and automation.
  • Trigonometry – sin,cos,tan and using these in 2D and 3D space for design *


I believe most of these skills can be taught in an applied way, relevant for students at whatever age they learn them, in the context of a project or experience. Students that enjoy learning math for the joy of pattern-finding, logic and thinking just for the purpose of improving one’s thinking could certainly dive deeply into theoretical mathematics. But there’s no reason all students would need to learn most theoretical mathematics. I think they could learn to find beauty, joy AND relevance in math and learn numeracy in an applied context.


Did I come close to your list? What did yours have on it?


For kicks, now go to the Common Core Math Standards website and browse through. This is the essential set of math knowledge experts deem that kids need to master by the end of each grade band. By the end of high school, to be college-and-career-ready, you should have mastered the whole thing. This is the low bar. Is that where you would have put it? Why or why not?


I have to tell you I find the high school standards outright discouraging. They are difficult to understand, even for me, a former engineer with a major in Computer Engineering and an almost-minor in mathematics. As a teacher, you have to search the far corners of your brain and your resource library to TRY and find a way to make many of those standards relevant or interesting. Kids don’t retain them after a unit’s over, let alone after a summer or a year or two. They don’t retain the math knowledge because it doesn’t connect to anything in their lives. There’s no purpose for it. Nobody in the “real world” actually interacts with math in the same way we do in a math classroom.  As teachers, we know this about brain-based learning and we teach these stupid standards anyway.


Colorado is beginning a review process for all of its content-area standards, including math. I applied to be on the standards review committee, but didn’t make the cut. I started the lengthy process of giving feedback via the online system, but I’m embarrassed to say that around the submission deadline, I ended up swamped with things to do at school and in life, and I never turned in my answers. I did get a chance to talk with a representative from the CDE about the first review meetings, to ask him what kind of changes they were thinking of. Would Colorado keep Common Core?  He indicated that we probably would, but the new standards would be better organized, easier to search and more useful for teachers.

This is ridiculous. They need to be gutted. We need to start over.

CS Variables and Expressions

To introduce students to variables and expressions, I used a flipped lesson on using formulas to calculate area, and then a pairs programming activity on divisibility.

Relevant CSTA and CCSS standards. I decided to have the kids work with the area of an ellipse because they enjoyed that connection with the area of a circle – it’s a challenging formula to write in a program, as well.

CSTA:L2:CPP:5 Implement problem solutions using a programming language, including: looping behavior, conditional statements, logic, expressions, variables, and functions.

Know the formulas for the area and circumference of a circle and use them to solve problems; give an informal derivation of the relationship between the circumference and area of a circle.

Apply properties of operations as strategies to multiply and divide rational numbers.

To give the students vocabulary and build knowledge of syntax, I made a little video lesson for them to create shapes and calculate their area. This is their first introduction to assignment statements.


STARTER PROGRAM: Variables and Expressions

One solution to drawing and calculating the area of an ellipse.

One solution to drawing and calculating the area of an ellipse.

Their individual assignment was to finish the program, drawing an ellipse and calculating its area using a formula they found in a search engine. Many students didn’t process that the height and the width of the ellipse weren’t the same as the two radii, so they calculated pi * height * width to calculate area.  I mentioned that I had remembered a circle had just about the same area as 3/4 of the area of the square enclosing it, so could it make sense that the ellipse had a greater area than a rectangle with the same width and height? The students partnered up to troubleshoot and write the expression correctly – some form of ea = 3.14159 * eh / 2 * ew / 2;  We had a good discussion about whether or not parentheses were necessary in the formula.

Next, we did a quick whole-class lesson on floor division and modulo operators. Divisibility is a really important concept in mathematics and in computer science. In JavaScript, the two operations look like this.

a = floor (b / c);    // divides b / c.  truncates to a whole number with floor().

a = floor (6/3);    // a is assigned to 2

a = floor (10/3);   // a is assigned to 3

a = floor (104 / 10);  // a is assigned to 10

a = b % c; // divides b / c and assigns a to the remainder.

a = 6 % 3; // a is assigned to 0

a = 10 % 3; // a is assigned to 1

a = 104 % 10; // a is assigned to 4

The next activity was a pairs-programming activity. I asked the students to find a partner. One would type, the other would look over their shoulder, read the prompt, make suggestions, and help troubleshoot. I set a timer so the roles would switch after 10 minutes. Students have a hard time switching roles! The one using the keyboard gets very comfortable in that position and the one not typing often is self-conscious about it. It will take some coaching for the kids to get more comfortable with pairs programming, but it will be worth it.

I gave the students a scenario. Let’s say I walk into a bank with 2778 pennies. I want to come out with the smallest number of coins and bills possible, so what will the bank give me and how did you come up with it?

We had a whole-class discussion about using division and modulo to come up with a twenty, a five, two ones, three quarters, and three leftover pennies. The students then got a starter program and started pairs programming. The starter program was about a fictional money system and making change.


This was a really challenging task and it would need quite a few catch-and-release times. I should have used more! During the summary, two different approaches to solving the money problem came out.

Solution 1: Convert to the biggest currency unit first, then divide up the leftovers.  Some students related the problem to how we convert money. If I have 2778 pennies, I’ll look for how many hundreds, fifties, or twenties I can make first and work down. These kids had to calculate that there are 105 zinks in a zab and then work from there.

Solution 2: Convert to the second-smallest currency unit first, then make groups of the next-smallest, and so on. Each time the leftovers get assigned to the small currency units.

Great intro to variables and expressions – next we would tackle conditionals.

Coding Games to Learn Expressions and Inequalities


Before I started our unit on Equations, Expressions, and Inequalities, I asked students if they preferred to learn with lessons and tests, or if they liked projects better. Some of their responses were:

“I like projects better because you can keep working and working until you get it right. Sometimes if you take a test, you get a bad grade and it’s like ‘oh well, there’s that grade down the drain.’ But with a project you get a chance to perfect it.”

“I like projects because you get to work with your friends.”

“I like lessons and tests because I think I learn better when I get to practice a lot.”

“I like projects better because I feel like I really get it when we do a project.”

Most of the responses were very much pro-project, so I made a commitment to do a traditional assessment and also have a creative project on Equations, Expressions, and Inequalities.  My idea for a project came about when a young lady lobbied hard to create computer games:

“Ms. DuPriest, we should all make computer games for a project and then all play them.  It would still be math because we’d be programming!”

Well all right, then. Let’s make math computer games. Creating a computer game is definitely mathematical. Here are the seventh-grade Common Core State Standards that apply.

CCSS 7.EE.A.2 Understand that rewriting an expression in different forms in a problem context can shed light on the problem and how the quantities in it are related. For example, a + 0.05a = 1.05a means that “increase by 5%” is the same as “multiply by 1.05.”

CCSS 7.EE.B.3 Solve multi-step real-life and mathematical problems posed with positive and negative rational numbers in any form (whole numbers, fractions, and decimals), using tools strategically. Apply properties of operations to calculate with numbers in any form; convert between forms as appropriate; and assess the reasonableness of answers using mental computation and estimation strategies.

CCSS 7.EE.B.4 Use variables to represent quantities in a real-world or mathematical problem, and construct simple equations and inequalities to solve problems by reasoning about the quantities.

I have a really difficult time unpacking 7.EE.B.3, which is extremely broad. I have an easier time with the other two standards.  Kids should be able to create equations and inequalities for real-life situations, and they should be able to rewrite expressions to shed light in different contexts.

I decided to have the kids write mini-games like the kind that are on The Price Is Right.  It had so much potential – we could even run a little game show in class, with a host that tells contestants to “Come on Down” and play the students’ games to win fabulous prizes!  I created a rubric and description, and the students and I watched videos of contestants playing TPIR to see what kinds of games were appropriate.


Videos:  Balance Game, Bullseye Game, Grocery Game

In a nutshell, their projects had to meet these requirements.
* Must explain the rules clearly
* Must contain math expressions using variables
* Must use inequalities to test whether a contestant wins or loses
* Must have a paragraph explaining the math in the program, how someone can win, and how someone can lose.

Outside of those requirements, the students really had a lot of freedom to create whatever they wanted.  I teach in a double-block schedule of 89 minutes per class period.  I don’t like using the entire 89 minutes for project work, as it’s hard for the kids to maintain focus on one task for the whole time.  We used 6 or so half-days of 45 minutes each for the kids to work on their projects.  I assigned them into work groups to sit together and collaborate, and overall I liked what this did for their programming. Some kids who had never completed a programming project sought the help they needed and finished one successfully.

The pros of this project:

* Students applied inequalities in a real-world situation through boolean expressions. I really wish boolean logic were introduced in the common core. It may not have seemed like an important part of mathematics before the computer age, but it is now.
* Students gained deeper understanding of variables used in expressions and of the coordinate plane.
* They LOVED creating games. It was really challenging but the engagement was so high. They just thought it was fantastic fun.
* There was quite a lot of learning that went on outside of the standards too. I didn’t expect that algorithmic thinking would be quite as challenging as it was in this little project, but that was the hardest part about it.  It wasn’t doing the math on how to price out 3 gallons of milk and 2 blocks of cheese that was difficult.  It was understanding the breakdown of all the little steps, the algorithm, needed to have a person make their choices, store the choices in variables, do the math on the choices, and then make a comparison in order to see if they won or lost. It was really devilishly hard for many kids to understand creating their own algorithms. As I went through the project, I learned more and more about how to help them by helping less. I started by telling them what to type – and then later developed a flowcharting way of having the students guide me through what they were trying to do in their program.  I will have to play with the flowcharting idea more in the future, because the computational thinking – not the computation itself -really was the biggest challenge, and therefore the biggest gain in learning, with this project.

Some cons of this project:
* I needed to stay realistic that not everyone will learn the same things by doing a project. This is the biggest paradox in our education system today – the knowledge that each student is different in his or her development, background, and motivation – and every student will learn something different from every lesson you teach – but you are held accountable for having every student learn the SAME things.
* That said, some kids wanted to create games that involved really minimal uses of expressions with variables. Or no application of inequalities at all. The games worked and were beautifully written, and clearly learning took place, but I had a requirement that the programs had to use inequalities. Do you force a student to include inequalities when they’re not needed for the implementation of a clever game, just to assess that they know inequalities?  My rubric is pretty straightforward, but I struggled with giving a kid less than a proficient grade for a fantastic program which required a lot of hard work and learning to create.
* The numbers are smaller, but I still have kids who get stuck, stay stuck, and are very shy about reaching out for help. It is still a struggle to move kids along the continuum toward independent problem solving. I suppose that is a universal struggle of life. It’s just amplified when you teach 32 kids in a classroom and there’s no perfect tool for solving it. I did the best I could this time around with structured workgroups and ten-minute mini-sessions. I would signal for the kids’ attention and announce “in three minutes, come to the SMART board for a mini-session on button clicks!” Students would gather around and I’d give them a tutorial.  The next day I might do a mini-session on “if” statements.  These were helpful but not universally so.  I am still looking for tools and strategies and would love suggestions on improving self-efficacy of kids.

Here are some of the better projects created by kids… the creativity and variety in the games was just fantastic, and I loved the work they did.

Gift Card Game by Megan B. Megan’s creative commenting made the game customizable for anyone. She had a great time making the graphics and creating a different screen if you win.

Cookie Clicker by Jake H. A remix of the popular mobile app of the same name. Jake’s version went as viral as it could in the classroom, with every kid in the class clicking the cookie.

Two Player Game by Anna E. A Jeopardy-style game in which you answer quiz questions for money. I loved how she included math expressions by making you solve equations in order to win money for the math questions.

Price is Right by Alison F. A complete package, with challenging math expressions, interactive buttons, and a really user-friendly experience!

Balance Game by Anna R.  Wow. Wow!! Anna wanted to make a game like the Balance Game, but challenged herself to add some randomness to it and make it very unpredictable. The result is really cool and was very challenging to program. Random buttons pop up on the screen, and you have to select the correct two of them that add up to the mystery price.  Anna has quickly become a rockstar programmer in class.  For Christmas she told me her dad bought her a robot and a book about programming in C.  She was extremely excited.

The students submitted their game via a Google Form along with some feedback for each other and for me.  I want to leave you with a quote from Katie T. about this programming assignment.

“I usually do not like the other stuff we did with programming but I thought the way this was set up and they way my game turned out was just awesome. I hope you can do something next year with the students you have. I definitely hope you take this feedback in consideration because I really enjoyed the project and I am sure that the kids in the future will too! ”

I think I’d be a fool not to take her up on that – wouldn’t I?