In my Math 10 class, did my lesson today involving solving exponential equations that cannot be solved using knowledge of integral powers. My start was the same as it has been for that lesson over many years:
I have students start with an iterative guess-and-check method since it's something that will pretty much always work. This was no big deal to the students. When one student said her TI calculator gave the exact answer, I asked if she really thought that was the exact answer. She said no, but I used Python to rub it in a bit.
This was another opportunity to show the difference between exact and approximate answers - always something I try to teach implicitly whenever it comes up. As with many of the Common Core Standards for Mathematical Practice, I think this (MP6 - Attend to Precision) is always an idea that comes with context.
The big shift in this lesson came when we started solving the equation algebraically. I always do a bit of hand-waving at this point saying 'isn't it great that these logarithm properties let us do this?', while getting a class full of students giving me just enough of a sarcastic head nod to make me feel bad about it.
Instead, I made reference to the process of switching back and forth from logarithmic and exponential form.
The students are pretty skilled at doing this. I wrote it up in the notes myself because most students wrote it faster than I could get anyone to explain the process.
The key here was that when I asked students to calculate these values on the calculator, nobody could do it. One found the LOGBASE command on their TI, but for the most part, this stayed as an abstract number. It made sense to them that they ended up with 'x =' in the end, but that didn't make a big difference in terms of being able to talk about what that meant. They did a couple of these on their own.
Only then did I show them the logarithm property trick that lets us get the answer in a different form:
I admittedly connected some dots here, but I didn't do so in a formal way of introducing change of base. A couple of them figured out that this was a form that they could calculate using the common logarithm button on their calculators.
I'm not emphasizing log properties this year outside of what they allow us to do in solving equations. This is something that we will devote more time to next year in IB Mathematics year 1 class. I will mention this change of base property as a nice tool to use for confirming graphical and iterative solutions, but probably won't assess them knowing how to apply change of base directly.
Any time I can get rid of hand-waving and showing mathematics as a list of tricks to be memorized, it's a win.
I created an interactive lesson called Thinking Machine for use with a talk I gave to the IB theory of knowledge class, which is currently on a unit studying mathematics.
The lesson made good use of the Meteor Blaze library as well as the Desmos Graphing Calculator API. Big thanks to Eli and Jason from Desmos for helping me with putting it together.
I was asked by a colleague if I was interested in speaking to the IB theory of knowledge class during the mathematics unit. I barely let him finish his request before I started talking about what I was interested in sharing with them.
If you read this blog, you know that I'm fascinated by the intersection of computers and mathematical thinking. If you don't, now you do. More specifically, I spend a great deal of time contemplating the connections between mathematics and programming. I believe that computers can serve as a stepping stone between students understanding of arithmetic and the abstract idea of a variable.
The fact that computers do precisely what their programmers make them do is a good thing. We can forget this easily, however, in our world that has computers doing fairly sophisticated things behind the scenes. The fact that Siri can understand what we say, and then do what we ask, is impressive. The extent to which the computer knows what it is doing is up for debate. It's pretty hard to argue though that computers aren't doing similar types of reasoning processes that humans do in going about their day.
Here's what I did with the class:
I began by talking about myself as a mathematical thinker. Contrary to what many of them might think, I don't spend my time going around the world looking for equations to solve. I don't seek out calculations for fun. In fact, I actively dislike making calculations. What I really enjoy is finding interesting problems to solve. I get a great deal of satisfaction and a greater understanding of the world through doing so.
What does this process involve? I make observations of the world. I look for situations, ideas, and images that interest me. I ask questions about what I see, and then use my understanding of the world, including knowledge in the realm of mathematics, to construct possible answers. As a mathematical and scientific thinker, this process of gathering evidence, making predictions using a model, testing them, and then adjusting those models is in my blood.
I then set the students loose to do an activity I created called Thinking Machine. I styled it after the amazing lessons that the Desmos team puts together, and used their tools to create it. More on that later. Check it out, and come back when you're done.
The activity begins with a first step asks students make a prediction of a mathematical rule created by the computer. The rule is never complicated - always a linear function. When the student enters the correct rule, the computer says to move on.
The next step is to turn the tables on the student - the computer will guess a rule (limited to linear, quadratic, cubic, or exponential functions) based on three sets of inputs and outputs that the student provides. Beyond those three inputs, the student should only answer 'yes' or 'no' to the guesses that the computer provides.
The computer learns by adjusting its model based on the responses. Once the certainty is above a certain level, the computer gives its guess of the rule, and shows the process it went through of using the student's feedback to make its decision. When I did this with the class, more than half of the class had their guesses correctly determined. I've since tweaked this to make it more reliable.
After this, we had a discussion about whether or not the computer was thinking. We talked about what it means for a computer to have knowledge of a problem at hand. Where did that knowledge come from? How does it know what is true, and what is not? How does this relate to learning mathematics? What elements of thinking are distinctly human? Creativity came up a couple times as being one of these elements.
This was a perfect segue to this video about the IBM computer Watson learning to be a chef:
Few were able to really explain this away as being uncreative, but they weren't willing to claim that Watson was thinking here.
Another example was this video from the Google Deep Thinking lab:
I finished by leading a conversation about data collection and what it signifies. We talked about some basic concepts of machine learning, learning sets, and some basic ideas about how this compared to humans learning and thinking. One of my closing points was that one's experience is a data set that the brain uses to make decisions. If computers are able to use data in a similar way, it's hard to argue that they aren't thinking in some way.
Students had some great comments questions along the way. One asked if I thought we were approaching the singularity. It was a lot of fun to get the students thinking this way, especially in a different context than in my IB Math and Physics classes. Building this also has me thinking about other projects for the future. There is no need to invent a graphing library on your own, especially for use in an activity used with students - Desmos definitely has it all covered.
I built Thinking Machine using Bootstrap, the Meteor Blaze template engine, jQuery, and the Desmos API. I'm especially thankful to Eli Luberoff and Jason Merrill from Desmos who helped me with using the features. I used the APIto do two things:
Parse the user's rule and check it against the computer's rule using some test values
Graph the user's input and output data, perform regressions, and give the regression parameters
The whole process of using Desmos here was pretty smooth, and is just one more reason why they rock.
The learning algorithm is fairly simple. As described (though much more briefly) in the activity, the algorithm first assumes that the four regressions of the data are equally likely in an array called isThisRight. When the user clicks 'yes' for a given input and output, the weighting factor in the associated element of the array is doubled, and then the array is normalized so that the probabilities add to 1.
The selected input/output is replaced by a prediction from a model that is selected according to the weights of the four models - higher weights mean a model is more likely to be selected. For example, if the quadratic model is higher than the other three, a prediction from the quadratic model is more likely to be added to the list of four. This is why the guesses for a given model appear more frequently when it has been given a 'yes' response.
Initially I felt that asking the user for three inputs was a bit cheap. It only takes two points to define a line or an exponential regression, and three for a quadratic regression. I could have written a big switch statement to check if data was linear or exponential, and then quadratic, and then say it had to then be cubic. I wanted to actually give a learning algorithm a try and see if it could figure out the regression without my programming in that logic directly. In the end, the algorithm works reasonable well, including in cases where you make a mistake, or you give two repeated inputs. With only two distinct points, the program is able to eventually figure out the exponential and quadratic, though cubic rules give it trouble. In the end, the prediction of the rule is probability based, which is what I was looking for.
The progress bar is obviously fake, but I wanted something in there to make it look like the computer was thinking. I can't find the article now, but I recall reading somewhere that if a computer is able to respond too quickly to a person's query, there's a perception that the results aren't legitimate. Someone help me with this citation, please.
This was supposed to be the shortest part of a warm up activity. It turned into a long discussion that revealed a lot of student misunderstandings.
The question was about whether we could ignore air resistance on a textbook being thrown in the air. We spent most of our time discussing the differences and similarities between the three items here:
There were interesting comments about what factors influence the magnitude of air resistance. I was definitely leading the conversation, but it wasn't until a student mentioned acceleration that anyone was able to precisely explain why one fell differently from another. We eventually settled on making a comparison between gravity force and air resistance force and calculating acceleration to see how close it was to the acceleration of gravity.
Given that few of my students have programmed before this class, there are some gaps in knowledge that I'll need to think through. The one thing I didn't want to do in this class was declare that students need to go through a full CS course before being able to touch this material. The value of a framework like Meteor is the ease with which anyone can piece together an application. The most consistent theme in this course has been that getting students working with code and troubleshooting upfront is much more productive than a lecture on for-loops. My model has been to have students take a piece of code, figure out what it does, and then hack or tweak it to do something different. As students get more experience, they become more comfortable writing code from scratch to complete a task.
Despite knowing this about my group, I almost didn't do continue the model in exactly this way after the winter break. I was going to do a unit on classes and methods, but in my brainstorming how to do this, I realized that the better approach would be to look at database queries and MongoDB. The concepts of properties would be obvious in the way Mongo stores information, so it would then be easy to talk about the concept of objects once students were interacting with the database. Again, this became more 'Application first, theory second.'
This also meant I had another opportunity to bring up fundamentals of computational thinking. I opened up the lesson by having students look at a screen sized list of all of the ninth grade students and some of the information stored by the school. I asked them questions like this:
How many students in Mr. S's advisory are girls?
How many students in the red or blue house are in Mrs. M's advisory?
Do any students share the same birthday?
They didn't mind this too much, but there were some different answers to the questions that came from counting by hand. It was fairly mindless work and none of them were too bothered by my requests to do it with this data set. Then I told them that we were going to do the same with the list of 160 students in the entire upper school.
They didn't ask it because they know me at this point, so I told them that there was, of course, a better way. I taught them some Mongo queries using a sandboxed collection consisting of student information from the school. I then set them loose with a list of questions about a fictional database of people that I generated and posted at http://citizens.meteor.com. (The names for the collection came from the cast list for the most recent Hobbit movie. A fun side project, by the way.) A subsequent lesson was about sorting, limiting, and interacting with an array of returned documents, and students handled it well. We did some quick demonstrations of dot notation, but I didn't make a big deal out of it.
In the next class, I gave students the following prompt:
Mr. Weinberg wants to survey students on their favorite ice cream flavor. He wants to be able to sort the results by grade, gender, and house. Sketch the layout of a web form he could use to collect this information.
Their sketches were good fun:
I asked them to then work backwards from their database experience: What would a single document in the database containing the results of this survey look like? They were coming up with sample properties and values. I then showed them how these values could be captured from the form elements using jQuery.
Then came the Meteor magic.
I took the web form and pasted it into a template. I took the jQuery calls and put them in an event handler for the template. I added a line to create a collection, made another quick template to show results, and then made a helper to fill that template with the entries in the database. One last thing I put in to prevent rapid submissions – calls to clear out all of the form elements after the database insert.
I typed meteor in the terminal, fixed one error, and then the app was live. I had students go to my IP address and the form popped up. The page started filling with survey results as students realized they could interact with the page. These were initially full submissions, but soon after, lines with empty values showed up as students realized that they could add garbage data and submit them really quickly. I told some of the students that were doing this that people would be doing that with their apps soon, so there would need to be a way to handle it in their apps.
I then set students off in groups to do this same process with different web applications along the lines of the one I used to start class. It was incredibly fun hearing them talk about how they were going to move forward, including a number of new web page sketches. I gave them more concepts to work from, including an after school activities form and a web portal through which students could tell school administration that they were going to be late to school. I asked them to write down potential database queries to help find important information quickly. The really impressive part came when they had ideas for what they wanted to program. One student suggested a database of sports scores. Another, an online store.
The class was abuzz with ideas for what was possible. I knew that I had to show students how to get these into Meteor the next class, in the easiest way possible.
Enter Meteorpad. I made a streamlined form with instructions on how to take the web forms they had designed and get them into a template with as few steps as possible. The students don't currently have terminal access on their Macbooks, so I can't get them to run Meteor locally.
You can check out the MeteorPad template I gave them here: here...
...and the full set of instructions for adapting their code to it here.
They followed the instructions, and by the end of the class, most had their own versions working. The students then started tweaking them to see what they could do to make it work as they wanted.
Today, my students were going from an idea concept to coding their own apps to getting these prototypes online. Yes, they were primitive, lacked error handling, styling, and had typos. No, the students didn't have much understanding of the differences between helpers and event handlers. That is just fine. It's only January! I originally thought we'd get to this point by the end of the year, so this is a great point to be at right now.
I'm can now help students take their ideas and turn them into working prototypes. These students know how to look up code to do what they want to do. They've happened upon W3Schools web pages and StackOverflow, and while they are generally overwhelmed by what they find there, they know how to ask me the right questions about what they see. This was a great way to end a busy week.
I am now in the second semester of teaching a senior research project course. The first semester consisted of students identifying a research question and thesis, and then putting together a fully developed and referenced research paper. In the past, the second semester was devoted to putting together presentations on the same topic. I've been encouraged to modify this sequence as I see fit this year.
If there's one thing I want students to care about in terms of the presentations, it's that awareness of design principles can help their ideas come across clearly. As a result, I've pieced together some activities that center on learning design principles as a way to communicate meaning.
I started this semester's first class with an exercise from p. 47 of the Design Basics Index. Here's the basic idea:
Draw ten circles of the same size and uniform color on your paper in an arrangement that shows each of the following words:
I then collected their drawings using my submitMe application so that we could see them all together.
The results were really fun to look at and discuss. Here's a selection:
One really nice result was that students pointed out the commonalities between some of the drawings and discussed them without my bringing it up. When does unity cause intimidation? When does unity cause isolation?
This was a blast. Definitely a good way to start a lot of conversation without needing to say too much.
It isn't always a common occurrence to have a distance and bearing to a particular location, but given my choice in airline for winter break, I had exactly that. So during our first class back from the break, I asked students to figure out where I was when I took this picture:
Students scrambled to open up various online maps and make sketches. The students settled on a range of answers. Then I showed them this:
We had a quick discussion about assumptions. Then students looked again and talked to each other while revising their answers. Once they were satisfied with their answers again, I shared the correct answer.
This led into a nice discussion of the mathematics exploration project that is submitted as the internal assessment of the IB mathematics courses. The students know that I take pictures and videos of this sort of thing all the time - it's a habit instilled in me by someone we all know. The students said though that they don't usually see math in the things around them, which is a problem given that the math exploration is supposed to come from them.
My recommendation, which comes partly from Dan's suggestions, is just to start. I told the students that any time they see something interesting or beautiful when they're walking around, to take a picture of it to review later. With some time between seeing it and reviewing it, they should ask themselves why it interested them. What is it that makes the picture beautiful? Are there patterns? Is it organized in an interesting way? I also shared my RSS reader on Feed.ly and how I save articles that interest me and tag them accordingly. This is how I find interesting ideas to share with the class - they should do the same to figure out what might be a good source of material for their work.
We have had several discussions in class about what this exploration will be about, but the emphasis has really been on something that interests them. Having students be curators of their own 'interesting-stuff' collection now seems the most obvious way to get them started.
There comes a time, often at the end of the semester, when you look around your classroom once the students have left, and let out a big sigh.
Am I doing the right things?
Am I helping students grow in ways that are best for them?
Then you get an email from a former student that says things like this:
I got selected to be a part of a research group in the department of PHYSICS! Can you believe it? The one subject I did not like at all is the first research opportunity for me!
All these great opportunities wouldn’t have happened to me if you didn’t have patience to make me understand physics. I now understand why you wanted me to figure out how to approach a problem all by myself instead of telling me what to do step by step.
I never realized how important it is to be able to do more than calculations until recently because I have been helping out a friend with her chemistry homework. However, I feel like that is all I do - help her finish her homework instead of helping her understand how to analyze a problem before jumping to equations.
I don’t want her to jump to equations because, at the end of the day, chemistry is a science, not math. We use math to help us, but a calculated answer means nothing by itself. It is the ability to analyze and interpret numbers than differentiates us from computers. Going to back to my friend and her chemistry homework, I noticed a lot of things that she says that reminded me of myself and physics.
For example, she would say “I don’t get it, it seems so easy, but I just don’t know which equation to use.” Then when I try to guide her to figure out which equations to use, she just interrupts me with “Just tell me which equation to use, and I can do the math.”
Doesn’t that sound like me in physics class? It frustrates me how she takes such a mathematical approach to a scientific problem. I mean it’s great that she can do math, but so can the computer.
I am telling you about my experience because I want to first let you know how much I appreciate your patience with me, and second, I want to apologize for that things I said about physics. It must not have been very pleasant to hear someone talk about something you are obviously interested in in such an aggressive tone.
I am sorry for complaining about physics the way I did last year, and if you students in the future complain about a subject feel free to relate my experience with physics to them. Also, I am very happy that you made me struggle with physics last year because now when I don’t see how to solve a problem immediately I know how to use the tools available to me to experiment to find the right answer.
Moreover, do continue to do explorations with your students because they are so helpful when it comes to critical thinking....
...I know you always take the opinions of your students seriously, and I know that you have stepped away from doing explorations because our class had such a negative attitude towards them; however, knowing how to use a different program can help student develop their problem solving skills, which makes them a more competitive student.
If you know me at all, you know that this hits many of the questions I have about my own teaching. One perspective is certainly not every perspective. I'm certainly not going to stop questioning. That said, this message made me grin with pride. It means a lot to hear that something you do in the classroom enables students to make opportunities for themselves.
With the student's permission, I was eager to share the email as a way to help others remember why we do this job. You might never know the impact you have as a teacher until you do.
Keep this in mind as you approach the last teaching days of the year, everyone.
I wrote previously about my plans to change how I teach programming to my LEGO robotics students. By including sensor use as a starting point, my hope is to equip students with the experience to know when sensors can do a better job than simply aiming the robot toward the target and hoping for the best.
Yesterday was my first open ended challenge after beginning this approach. Students needed to build and program their robots to retrieve the loops located at the ends of the black line paths. The time available for them to do so was kept short. As one more way to advantage sensors over a trial and error approach, I told them that I might tell them to start their robot anywhere along the line, and that they could only pick up their robot once while retrieving the two loops.
I really didn't need that final requirement. Students quickly figured out how to adapt the line following tricks I taught them to this task. In a forty minute period, all of the teams made progress and were able to make contact with the loop using a collection mechanism.
The most satisfying result? Not a single group spent significant time aiming their robot. They clearly didn't feel the need, which is a step in the right direction.
I've avoided force tables as a lab in the past. This is primarily because when I first started teaching physics and saw some collecting dust in the lab equipment room, the activities that were written for them seemed so formulaic that I was bored by them. I didn't know then what I might do to make it more interesting.
In making an activity using them today, I actually played around with them a bit. They are a bit tricky to set up, but once you have the weights balanced, it's oddly satisfying to see the ring in the center floating there:
The theme of my lesson planning is a search for this type of gold: how can we play with this?
I've done activities involving 'find the unknown mass' before, and the force table offered an efficient way in to doing this.
I asked students to figure out the mass of the weight circled in blue. I asked them to decide what information they needed to do so, and they requested the other two masses, which I provided.
Students worked quickly using their knowledge of forces and equations of equilibrium. They figured out pretty quickly that the angles between the threads were approximately equal, a fact I didn't notice until I looked from above:
Their predicted answer of 290.9 grams was impressively close to the actual answer of 292.2 grams. We discussed that the assumption that the angles were the same might contribute for the error.
On the whole, this was a fun way to put to use a piece of equipment that I've kept out of my classroom for largely silly reasons. I think I'll definitely add this to the playlist for future units on equilibrium.
In my physics class this morning, the plan was to have students work through a packet of descriptions of constant velocity motion. Each description was either a position vs. time graph, a velocity vs. time graph, or a motion map. Students would then sketch the corresponding velocity/position graphs, and then actually act out these scenarios in front of an ultrasonic detector. With a live graph showing them what their position vs. time graphs were as they moved, mayhem invariably would result.
I had the sensor ready to go at the start of class. I told a student to walk back and forth in front of it while data was collected. I didn't have to give any other instruction - they saw how their movement resulted in a graph.
I then put two post-it notes on the screen and told another student to make the graph hit them both:
This was probably the first time since the first day of school that the class was all smiles.
After they had this figured out, I gave them another task: hit the post-it notes, but also make the graph go along a string taped to the wall:
This took a bit more time for developing intuition, but they got this down.
It was only at this point when I introduced the packet of scenarios. They went right to work and sped their way through, helping each other when differences arose.
My usual assessment activity for this has always been that I could call each student up to generate a specific graph. Since they don't know who I'm going to call until the last minute, they ideally would work to understand how to generate each graph in front of the detector so that they were ready in case I called them up.
A student this morning said point blank that this plan did not sound fun at all. When I thought about it a bit more, I realized it was a fear based activity. The student instead suggested that I call each of them up, and give a number for a graph that needed to be generated, and the rest of the class could guess which one it was.
Clearly a superior idea. We proceeded to run the activity this way, and it was a blast.
I'm not sure why I haven't done this activity this way in the past. It's obviously superior to almost anything else for a number of reasons.
The activity starts with no numbers, just intuition and feedback. It's fun seeing your own movement be simultaneously measured and displayed in front of you. The need to communicate about the process is where the vocabulary and numerical measurement comes in - that's a perfect place for a teacher to step in once students are digging the activity.
The idea of setting an origin and detailing the meaning for increasing or decreasing position values isn't necessary here. Students figure out quickly how these relate to their own movement without any intervention on my part.
Any activity that gets teenagers out of their seats and moving around during the first block of the day (and does so in a way that also directly serves the learning goals of a lesson) is going to be vastly superior to pretty much everything.
A great way to open a rainy Wednesday in Hangzhou, by any measure.