Experimenting with iBooks Author

I recently took the step of dipping my feet in the Apple pool, much to the surprise of many people that know me and my preferences. There were a few reasons that I decided it would be a good idea, but one of them was the opportunity to experiment on my own time with iBooks Author.

I’ve tossed around the idea of writing a book. A few ideas for topics have been bouncing around, one being one in which the concepts of mathematical thinking are explored through programming. Given that all Mac computers have Python installed automatically, not to mention the ease that it can be installed on other platforms quite easily, Python is a perfect fit.

Now that I’m set up with my Mac, I’ve spent the last couple of days playing with it and getting to know its quirks. It does have quirks. I spent a couple of hours today battling a mystery white box that covered anything that slid into it, and that remained even after saves, restarts, and reboots. Eventually I got rid of it (though I’m not totally sure that I am sure how) and put together an activity I plan to have some independent study students work through this year.

The quiz options are nice ways to make things interactive, but they have all the same downsides of multiple choice questions. If there was a fill-in-the-blank option, I could very easily see putting together my own self-guided lessons along the lines of Udacity. That’s really what I’m looking for. The really powerful thing to have would be an HTML5 Python interpreter, and I haven’t yet looked to see if something exists that would work with the interface.

I found out late in the process that images placed in landscape mode only show up in the portrait orientation if they are set to be ‘inline’ instead of floating or anchored. Backsliding ensued.

On the whole, it’s a nice free publishing platform, including for nice PDF files. I didn’t have much multimedia material to throw in, and my attempts to do so would have been for exercising features, not for enhancing the book as a learning opportunity. As many have noted previously, iBooks author offers quite a bit of horsepower for generating flashy multimedia textbooks, but the extent to which it revolutionizes education isn’t quite there. Opportunities for interfacing with others reading the same content through chat, messages, or something like that would be a step in that direction.

For what it’s worth, feel free to check out the final product below. While the text is written as if it’s a finished book (“More information on this can be found in the Appendix”), it very much isn’t. Just an experiment to fill my hours battling jet lag back in China.

Mathematical Reasoning with Python

The TacoCopter? – a gimmick for integration review

I received an email sending me to this site yesterday about the TacoCopter, which of course was spot on given my interest in all things robotic. I also had PID control on the brain thanks to my course on driving a robot car from Udacity. Bits of python code were in my head already, and I had a strong need to put it all together. Given that it was also Sunday (a workday for most teachers) I had to plan for classes tomorrow, specifically Calculus and Physics.

All of this was in the context of the beautiful afternoon I spent on the balcony of the apartment looking out at the warmest, bluest Hangzhou skies of the year so far. It put me in the mood to do something a bit different for tomorrow’s Calculus class. The AP students will be reviewing related rates and implicit differentiation, but the regular students…they get to have a bit more fun.

This is the activity we will be looking at tomorrow in class: CW – TacoCopter Project

The full wiki page that students will be following is located here: http://wiki.hischina.org/groups/gealgerobophysiculus/wiki/42712/Calculus_Unit_8__The_TacoCopter.html

Some python code for simulating the TacoCopter rising to altitude, which can be found here at github.

Then Geogebra for plotting the data, which shows the lovely simulated accelerometer data with noise:

I don’t really know how it will go. At least students will have an excuse to grin as they review.

Bringing robotic cars and Udacity to my classroom

I was really excited to learn about Udacity, a new online education system that premiered two courses on February 20th. That a course on programming a robotic car would appeal to me is probably not surprising to anyone that knows me. I also love having yet one more excuse to continue learning Python, especially one that gets me working with an expert in the field such as Professor Sebastian Thrun. I recall reading about him shortly before his team’s successful bid at the DARPA Grand Challenge, and have since seen his name repeated at many key moments along my development as a robotics enthusiast.

The course is structured really well, with short videos introducing concepts, quizzes and programming tasks (with solutions) along the way to check comprehension, and homework assignments. The students love that I have homework.

I am busy, but this was too cool to pass up.

I also have a pretty hard time hiding the things I’m enthusiastic about in my classroom, so the content of the class has been something I’ve mentioned and shared with students at the start or end of planned activities. The whole classroom gasped at this video from the 25th second onward:
[youtube http://www.youtube.com/watch?v=bdCnb0EFAzk?feature=player_embedded&w=640&h=360]

Based on that reaction, I really wanted to give them a sense for the things I was learning to do. The first week centered on learning about localization – a process that uses probability calculations to estimate the location of the car using sensor readings and a map of the surroundings. I did a quick overview of what this meant as a filler activity to break up work during class, but wanted to find a way to do much more.

Today’s Algebra 2 class was going to be missing a couple students that are attending a Model UN conference, so I figured it would be a good time to try something different.

We started with the following warm-up problems:

Mr. Weinberg tells you we are guaranteed to have a quiz one of the days between Monday and Friday. He tells you that the probabilities of the quiz happening Monday through Thursday are 0.1, 3/8, 1/16, and 36%. What is the probability that the quiz will be on Friday? On which day is the quiz most likely to occur?

This helped review the total probability principle which is key to understanding the localization algorithm. We also did a review of finding the probability of compound independent events, first with a tree diagram, and then using multiplication and the counting principle.

We then went through the following activity for the rest of the period:
Robot Localization activity

I adapted parts of the course material provided by Udacity, primarily simplifying language, cleaning up diagrams, and adjusting the activities for my students who do not have any programming ability. We did have a Python activity back in October, but installing and running Python was a hassle on the 1-1 Macbooks with OSX since I was trying to do it with Python 3 and IDLE. It was only shortly afterward that I learned that an earlier version of Python was automatically installed. Oops. For this activity, we used http://repl.it/ to do the programming. This worked fantastically well.

The students seemed to do really well with the introductory material and filling things in, and modifying the basic programming went smoothly. They ran into some trouble around problem 7, which I half expected – that was the first part of the activity when I told them to do something without any rationale behind it. Most were generally able to implement the procedure and get to problem 9, but at this point at the end of the day on a Friday afternoon, fatigue started to take over. This was after around 45 minutes of working on the activity.

I added a section on motion for possible use in another class, as I ultimately would like them to be able to throw my own homework solution code into a simulator provided by Udacity user Anna Chiara. I did not deal with any of the sensor probability or move probability. The intuition for understanding how those apply in the algorithm is a bit subtle for the background of my students, and would take more of an investment of time than I think my students have the patience for at this state. I think it would be easier to talk about how these issues exist, and then have them observe what they mean by looking at the output of the program.

All in all, it was a cool, low-key way to share my own learning with students after an exhausting week. I think we all needed a bit of a change.

Turning random facts into logistics curves – ODE per day series continued.

I previously wrote about making sure that every class during our unit on differential equations starts with some differential equation they can see or feel in a concrete way.

During the last class, we investigated a draining tank using the video posted by Dan Meyer at his blog.

Today we did something different. I told them that I was doing an experiment with a simple task. They all needed to find the answers to some  questions as quickly as possible:

When they found the answers, I wanted them to quickly throw a hand in the air to let me know. I told them to be honest – they didn’t know what I was doing with the information yet, so there really wasn’t a chance to skew it.

I then showed them the slide with the questions:

I also simultaneously started the following Python program. (UPDATE: Code is posted here.) This let me easily record any time a student raised his/her hand.

I then pasted the data directly into a Geogebra spreadsheet and graphed the data…

…and then fit a logistics curve to the data:

They had seen and heard the concept of learning/performance curves before, but it was really great to be able to develop one on the spot with the class. I was impressed with how good the data turned out. It was then neat to be able to show the differential equation that describes this type of phenomenon and solve it to get this type of function.

As is probably obvious, I only have ten students in this group. It would be really cool to try something like this with a bigger group and see if the data fits as nicely.

A smattering of updates – the good with the bad.

I want to record a few things about the last couple of days of class here – cool stuff, some successes, some not as good, but all useful in terms of moving forward.

Geometry:

I have been working incredibly hard to get this class talking about their work. I have stood on chairs. I’ve given pep talks, and gotten merely nods of agreement from students, but there is this amazing resistance to sharing their work or answering questions when it is a teacher-centric moment. There are a couple students that are very willing to present, but I almost think that their willingness overshadows many others who need to get feedback from peers but don’t know how to go about it. What do I do?

We turn it into a workshop. If a student is done, great. I grab the notebook and throw it under the document camera, and we talk about it. (In my opinion, the number one reason to have a document camera in the classroom, aside from demonstrating lab procedures in science, is to make it easy and quick for students get feedback from many people at once. Want to make this even better and less confrontational? Throw up student work and use Today’s Meet to collect comments from everyone.

The most crucial thing that seems to loosen everyone up for this conversation is that we start out with a compliment. Not “you got the right answer”. Usually I tolerate a couple “the handwriting is really neat” and “I like that you can draw a straight line” comments before I say let’s have some comments that focus on the mathematics here. I also give effusive and public thanks to the person whose work is up there (often not fully with their permission, but this is because I am trying to break them of the habit of only wanting to share work that is perfect.) This praise often includes how Student X (who may be not on task but is refocused by being called out) is appreciative that he/she is seeing how a peer was thinking, whether it was incorrect or not. I also noticed that after starting to do this, all students are now doing a better job of writing out their work rather than saying “I’ll do it right on the test, right now I just want to get a quick answer.”

Algebra 2

We had a few students absent yesterday (which, based on our class size, knocks out a significant portion of the group) so I decided to bite the bullet and do some Python programming with them. We used the Introduction to Python activity made by Google. We are a 1:1 Mac school, and I had everyone install the Python 3 package for OS 10.6 and above. This worked well in the activities up through exercise 8. After this, students were then supposed to write programs using a new window in IDLE. I did not do my research well enough, unfortunately, as I read shortly afterward that IDLE is a bit unstable on Macs due to issues with the GUI module. At this point, however, we were at the end of the period, so it wasn’t the end of the world. I will be able to do more with them now that they have at least seen it.

How would I gauge the student response? Much less resistance than I thought. They seemed to really enjoy figuring out what they were doing, especially with the % operator. That took a long time. Then one student asked if the word was ‘remainder’ in English, and the rest slapped their heads as they simultaneously figured it out. Everyone enjoyed the change of pace.

For homework, in addition to doing some review problems for the unit exam this week, I had them look at the programs here at the class wiki page.

Physics

I had great success giving students immediate feedback on the physics test they took last week by giving them the solutions to look at before handing it in. I had them write feedback for themselves in colored pencils to distinguish their feedback from their original writing. In most cases, students caught their own mistakes and saw the errors in their reasoning right away. I liked many of the notes that students left for themselves.

This was after reading about Frank Noschese’s experience doing this with his students after a quiz. I realize that this is something powerful that should be done during the learning cycle rather than with a summative assessment – but it also satisfied a lot of their needs to know when they left how they did. Even getting a test back a couple days later, the sense of urgency is lost. I had them walking out of the room talking about the physics rather than talking about how great it was not to be taking a test anymore.

Today we started figuring out circular motion. We played broom ball in the hallway with a simple task – get good at making the medicine ball go around in a circle using only the broom as the source of force.

We then came in and tried to figure out what was going on. I took pictures of all of their diagrams showing velocity and the applied force to the ball.

It was really interesting to see how they talked to each other about their diagrams. I think they were pretty close to reality too, particularly since the 4 kilogram medicine ball really didn’t have enough momentum to make it very far (even on a smooth marble floor) without needing a bit of a tangential force to keep its speed constant. They were pretty much agreed on the fact that velocity was tangent and net force was at least pointed into the circle. To what extent it was pointed in, there wasn’t a consensus. So Weinberg thinks he’s all smart, and throws up the Geogebra sketch he put together for this very purpose:

All I did was put together the same diagram that is generally in textbooks for deriving the characteristics of centripetal acceleration. We weren’t going to go through the steps – I just wanted them to see a quick little demo of how as point C was brought closer to B, that the change in velocity approached the radial direction. Just to see it. Suddenly the students were all messed up. Direction of change of velocity? Why is there a direction for change in velocity? We eventually settled on doing some vector diagrams to show why this is, but it certainly took me down a notch. If these students had trouble with this diagram, what were the students who I showed this diagram and did the full derivation in previous years thinking?

Patience and trust – I appreciate that they didn’t jump out the windows to escape the madness.

_______________________________________________________

All in all, some good things happening in the math tower. Definitely enjoying the experimentation and movement AWAY from lecturing and using the I do, we do, you do model, but there are going to be days when you try something and it bombs. Pick up the pieces, remind the students you appreciate their patience, and be ready to try again the next day.

Testing physics models using videos & Tracker

I’ve gotten really jealous reading about how some really great teachers have stepped up and used programming as learning tools in their classes. John Burk’s work on using vPython to do computational modeling with his students is a great way to put together a virtual lab for students to test their theories and understand the balanced force model. I also like Shawn Cornally’s progression of tasks using programming in Calculus to ultimately enable his students to really understand concepts and algorithms once they get the basic mechanics.

I’ve been looking for ways to integrate simple programming tasks into my Algebra 2 class, and I think I’m sold on Python. Many of my students run Chrome on their laptops, and the Python Shell app is easily installed on their computers through the app store. It would be easy enough to ask them to enter code I post on the wiki and then modify it as a challenge at the end of beginning of class.. It’s not a formal programming course at all, but the only way I really got interested in programming was when I was using it to do something with a clear application. I’m just learning Python now myself, so I’m going to need a bit more work on my own before I’ll feel comfortable troubleshooting student programs. I want to do it, but I also need some more time to figure out exactly how I want to do it.

In short, I am not ready to make programming more than just a snack in my classes so far. I have, however, been a Tracker fan for a really long time since I first saw it being used in a lab at the NASA Glenn Research Center ten years ago. Back then, it was a simple program that allowed you to import a video, click frame by frame on the location of objects, and export a table of the position values together with numerically differentiated velocity and acceleration. The built-in features have grown considerably since then, but numerical differentiation being what it is, it’s really hard to get excellent velocity or acceleration data from position data. I had my students create their own investigations a month ago and was quite pleased with how the students ran with it and made it their own. They came to this same conclusion though – noisy data does not a happy physics student make.

I wanted to take the virtual laboratory concept of John’s vPython work (such as the activities described here) for my students, but not have to invest the time in developing my students’ Python ability because, as I mentioned, I barely qualify myself as a Python novice. My students spent a fair amount of time with Tracker on the previous assignment and were comfortable with the interface. It was at this point that I really decided to look into one of the most powerful capabilities of the current version of Tracker: the dynamic particle model.

My students have been working with Newton’s laws for the past month. After discovering the power of the dynamic model in Tracker, I thought about whether it could be something that would make sense to introduce earlier in the development of forces, but I now don’t think it makes sense to do so. It does nothing for the notion of balanced forces. Additionally, some level of intuition about how a net force affects an object is important for adjusting a model to fit observations. I’m not saying you couldn’t design an inquiry lab that would develop these ideas, but I think hands-on and actual “let me feel the physics happening in front of me” style investigation is important in developing the models – this is the whole point of modeling instruction. Once students have developed their own model for how unbalanced forces work, then handing them this powerful tool to apply their understanding might be more meaningful.

The idea behind using the dynamic particle model in Tracker is this: any object being analyzed in video can be reduced to analyzing the movement of a particle in response to forces. The free body diagram is the fundamental tool used to analyze these forces and relate them to Newton’s laws. The dynamic particle model is just a mathematical way to combine the forces acting on the particle with Newton’s second law. Numerical integration of acceleration then produces velocity and positions of the particle as functions of time. Tracker superimposes these calculated positions of the particle onto the video frames so the model and reality can be compared.

This is such a powerful way for students to see if their understanding of the physics of a situation is correct. Instead of asking students to check order of magnitude or ask about the vague question “is it reasonable”, you instead ask them whether the model stops in the same point in the video as the object being modeled. Today, I actually didn’t even need to ask this question – the students knew not only that they had to change something, but they figured out which aspect of the model (initial velocity or force magnitude) they needed to change.

It’s actually a pretty interesting  progression of things to do and discuss with students.

  • Draw a system schema for the objects shown in the video.
  • Identify the object(s) that you want to model from the video. Draw a free body diagram.
  • Decide which forces from the diagram you CAN model. Forces you know are constant (even if you don’t know the magnitude) are easy to model. If there are other forces, you don’t have to say “ignore them” arbitrarily as the teacher because you know they aren’t important. Instead, you encourage students start with a simple model and adjust the parameters to match the video.
  • If the model cannot be made to match the video, no matter what the parameter values, then they understand why the model might need to be adjusted.  If the simple model is a close enough match, the discussion is over. This way we can stop having our students say “my data is wrong because…” and instead have them really think about whether the fault is with the data collection or with the model they have constructed!
  • Repeat this process of comparing and adjusting the model to match the observations until the two agree within a reasonable amount.

Isn’t the habit of comparing our mental models to reality the sort of thing we want our students to develop and possess long after they have left our gradebook?

It’s so exciting to be able to hand students this new tool, give them a quick demo on how to make it work, and then set them off to model what they observe. The feedback is immediate. There’s some frustration, but it’s the kind of frustration that builds intuition for other situations. I was glad to be there to witness so we could troubleshoot together rather than over-plan and structure the activity too much.

Here is the lab I gave my students: Tracker Lab – Construction of Numerical models If you are interested in an editable version, let me know. I have also posted the other files at the wiki page. Feel free to use anything if you want to use it with your students.

I am curious about the falling tissue video and what students find – I purposely did not do that part myself. Took a lot of will-power to not even try. How often do we ask students to answer questions we don’t know the answer to? Aren’t those the most interesting ones?

I promise I won’t break down and analyze it myself. I’ve got some Python to learn.