Friday, May 25, 2012

VPython Bouncy Ball - Take 2

I realized my mistake with AP students in doing programming in visual python was that they did not really feel comfortable with the language and did not have time to explore.

I think I rushed them through the tutorial. I was so worried about not saying too much that I said nothing. This meant I was not really facilitator and left them too much on their own.

Given that my seniors have graduated this week, I wanted to have my leftover sophomores and juniors in regular physics try to do some programming in Vpython. It might seem strange to have them tackle a project that was hard for AP Physics, but the fact is many of the students are accelerated science students (normally, only seniors take physics at our school) who are interested in taking AP Physics at some point. 

As before I stated the problem. I got out a bouncy ball, bounced it, and let them observe that its rebound bounce does not return it to the same height. I then stated the problem clearly:

You will write a computer program that reproduces the first bounce of your bouncy ball via an animation and printed data. Your program will then animate and predict the second, third and fourth bounce of the ball. You will check your programs result against the real bouncy ball, and explain WHY your program works using your knowledge of kinematics.

They all understood what I was asking, but I made it clear that feeling that this was a bit much, is a totally natural feeling.

Here are the things that I did differently at the beginning of the project:

Frontloading
- I made sure that they were clear on the fact that their only goal for Day 1 was to complete a tutorial that would teach them the language and challenge them to solve a problem; that of a ball trapped in a box bouncing around the walls.
- I made sure they were all logged in to their computers
- I explained that they would be programming and solving a physics problem using computer programming
- I had them open up the VIDLE programming environment and type the equivalent of "hello world". For VPython its
                         from visual import *
                         sphere()
- I then explicitly showed them how to download the tutorial from the vpython.org site.

 What I must remember is that most of these students have never programmed before. So for them to write two lines of code that actually does something is a completely new experience. It is novel


Setting metacognitive expectations
- I told students that programming goes slowly at first, but as it continues it grows both more interesting and challenging
- I explicitly asked them to be patient during the first 20 minutes of programming as they got settled into it, explaining that a certain amount of intellectual unease is completely natural

Guiding Students through the tutorial
- As students worked through the tutorial I circulated and students knew that at any point I would ask them to stop and run their program
- I would ask students what they thought they needed to do to fix erroneous code. If they were not able to answer this question, we would literally think out the code the way the computer would and see what logical conclusion it would take us to.
- Students were then able to modify old code to produce new results 


Students were completely engaged once the rules were laid out and they were given permission to feel completely unsure or lost. Every student was really engaged. Every class I taught went over the bell, and I even had students come in for extra help.


My concern now is how to keep this momentum going as we incorporate realistic physics into our model. 


More on that next week.

4 comments:

  1. I did something similar this year. The trouble I had was having kids fall apart when it came time to use the spring equation to apply forces during collisions. Even after modeling it, giving them the basics of the code needed, drawing flow charts, and everything else I could think of, half of the class had it and half did not. We are now in the midst of an electrostatics unit and the kids keep pointing out that Coulomb's Law is a lot like how we were increasing the applied force in VPython. Moral of the story - you may want to use Coulomb's law as a way of approaching using the spring equation to model collisions.

    ReplyDelete
    Replies
    1. I found that the kids were really really engaged when they did the tutorial with the bouncing ball. I realized that I had to do some really strong scaffolding to get them to incorporate gravity, and some hand-waving as well. (ball.velocity = ball.velocity - g * deltat looks a lot like v = -gt +v0 but they are distinct eqns and ideas.) I was just glad that some kids leaped to the vpython code on their own and left the discussion alone. I think they liked the problem solving involved in the tutorial

      Delete
  2. This is great. I really like the modeling project to model the motion of a bouncing ball. We've got a pretty solid core of physics teachers out there who are trying to develop a curriculum and tools to teach computational modeling to high school students using VPython. I'm part of a research group involving professors at Georgia Tech, Georgia State and the University of Colorado who are actively working on developing both better curricular materials, assessments and tools (like an improved IDE and a physics specific python module that lets you easily create motion maps, etc). If you're interested, we'd love to have you experiment with some of our creations and contribute to our work. You can read more about the work of the group here:

    Georgia Tech PER: Computational modeling in the high school curriculum

    and you can read a lot of what I've written about computational modeling here:
    Quantum Progress: Computational Modeling

    ReplyDelete
    Replies
    1. I've been following what you've been doing for awhile. With summer coming up, I'd love to take a closer look

      Delete