Speed of Sound Lab – Another Update

Two years ago, I wrote about how I took tuning forks out of the standard resonance tube lab for measuring the speed of sound.

My students all have phones and make a modest effort to keep them put away. I decided to get them to take them out for the lab today.

I found this free function generator app that generates clean sine, square, triangle, and sawtooth waves across a pretty good range. Above 1 kilohertz, harmonics are visible on a software frequency analyzer, so I didn’t have students go quite that high. The frequency can be set across this range by entering the frequency manually, or by using preset buttons on the app. By playing the waveform, plugging in earphones, and hanging them on top of the tube, finding the fundamental vibration frequency is pretty straight forward.

Collecting data in this lab has, in my experience, been a pretty slow process. Today though, my students were able to collect 15-20 frequency and height pairs in less than half an hour. I took all of their data and graphed it together. I’m pretty impressed with how consistently the data sits in a line:

The slope of the best fit of L vs. 1/(4f) forced through the origin is 320 m/s, which is probably the closest result to theoretical that I’ve ever gotten. The precision of the data is the big winner here. It was a simple task to ask students to cycle back through their range of frequencies and check that their new measurements meshed well with the old.

When can we neglect air resistance?

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:
IMG_0650

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.

Projectile Motion with Python, Desmos, and Monte Carlo Simulation

I’ve written about my backwards approach to to projectile motion previously here, here, and here.

I had students solving the warm-up problem to that first lesson, which goes like this:

A student is at one end of a basketball court. He wants to throw a basketball into the hoop at the opposite end.

What information do you need to model this situation using the Geogebra model? Write down [______] = on your paper for any values you need to know to solve it using the model, and Mr. Weinberg will give you any information he has.
Find a possible model in Geogebra that works for solving this problem.
At what minimum speed he could throw the ball in order to get the ball into the hoop?

The students did what they usually do with the Geogebra projectile motion model and solved it with some interesting methods. One student lowered the hoop to the floor. Another started with a 45 degree angle, and then increased the speed successively until the ball made it into the hoop. Good stuff.

A student’s comment about making lots of guesses here got me thinking about finding solutions more algorithmically. I’ve been looking for new ways to play around with genetic algorithms and Monte Carlo methods since they are essentially guess and check procedures made productive by the power of the computer.

I wrote a Python program that does the following:

  • Get information about the initial characteristics of the projectile and the desired final location.
  • Make a large number of projectiles (guesses) with random values for angle and initial speed within a specified range.
  • Calculate the ending position of all of the projectiles. Sort them by how far they end up compared to the desired target.
  • Take the twenty projectiles with the least error, and use these values to define the initial values for a new, large number of projectiles.
  • Repeat until the error doesn’t change much between runs.
  • Report the projectile at the end with the least error.
  • Report the entire procedure a number of times to see how consistent the ‘best’ answer is.

I’ve posted the code for this here at Github.

As a final step, I have this program outputting commands to graph the resulting projectile paths on Desmos. Pasting the result into the console while a Desmos calculator open, makes a nice graph for each of the generated projectiles and their intersecting at the desired target:
Screen Shot 2015-02-14 at 11.12.03 AM

This is also on a live Desmos page here.

This shows that there is a range of possible answers, which is something I told my physics class based on their own solutions to the problem. Having a way to show (rather than tell) is always the better option.

I also like that I can change the nature of the answers I get if I adjust the way answers are sorted. This line in the code chooses how the projectile guesses are sorted by minimizing error:

self.ordered = self.array.sort(key=lambda x: abs(x.error))

If I change this to instead sort by the sum of error and the initial speed of the projectile, I get answers that are much closer to each other, and to the minimum speed necessary to hit the target:

Screen Shot 2015-02-14 at 11.19.01 AM

Fun stuff all around.

Coding WeinbergCloud – An Update

Over the past few weeks, I’ve made some changes to my standards based grading system using the Meteor framework. These changes were made to address issues that students have brought up that they say get in the way of making progress. Whether you view these as excuses or valid points, it makes sense to change some of the features to match the students’ needs.

I don’t know what standard 6.2 means, Mr. Weinberg.

There are many places students could look to get this information. It does make sense, however, to have this information near where students sign up for reassessments.

When students select a standard, a link pops up (if the standard exists) with a description. This has made a big difference in students knowing whether the standard they sign up for is what they actually intend to assess.

Screen Shot 2015-02-13 at 1.07.27 PM

I also added the entry for the current mastery level, because this is important in selecting appropriate assessments. The extra step looking it up in the online gradebook isn’t worth it to me, and asking students to look it up makes it their responsibility. That’s probably where it belongs.

Can you post example problems for each standard?

The biggest issue students have in searching for online resources for a specific standard is not knowing the vocabulary that will get the best resources. There’s lots of stuff out there, but it isn’t all great.

I post links to class handouts and notes on a school blog, so the information is already online. Collecting it in one place, and organizing it according to the standards hasn’t been something I’ve put time into.

Students can now see the standards for a given course, listed in order. If students are interested, they can look at other courses, just to see what they are learning. I have no idea if this has actually happened.

Screen Shot 2015-02-13 at 1.20.19 PM

Selecting a standard brings a student to see the full text and description of the standard. I can post links to the course notes and handout, along with online resources that meet my standards for being appropriately leveled and well written.

Screen Shot 2015-02-13 at 1.20.40 PM

At the moment, I’m the only one that can add resources. I’ve written much of the structure to ultimately allow students to submit sites, up-vote ones that are useful to them, and give me click data on whether or not students are actually using this, but I’m waiting until I can tweak some UI details to make that work just the way I want it.

Mr. Weinberg, I signed up for an assessment, but it’s not showing up.

The already flaky internet in China has really gotten flakier as of late. Students are signing up for reassessments, but because of the way I implemented these requests being inserted into the database, these requests weren’t actually making it to the server. I’ve learned a lot more about Meteor since I wrote this a year ago, so I’ve been able to make this more robust. The sign-up window doesn’t disappear until the server actually responds and says that the insert was successful. Most importantly, students know to look for this helper in the upper left hand side of the screen:

Screen Shot 2015-02-13 at 1.14.13 PM

If it glows red, students know to reload the page and reconnect. Under normal Meteor usage conditions, this isn’t a problem because Meteor takes care of the connection process automatically. China issues being what they are, this feature is a necessity.

I’ve written before about how good it feels to build tools that benefit my students, so I won’t lecture you, dear reader, about that again. In the year since first making this site happen though, I’ve learned a lot more about how to build a tool like this with Meteor. The ease with which I can take an idea from prototype to production is a really great thing.

The next step is taking a concept like this site and abstracting it into a tool that works for anyone that wants to use it. That is a big scale project for another day.

Web Application Design Class and Meteor

The first semester of my web design and programming course was an overview of HTML, CSS, Javascript, and jQuery. The end goal is to get students piecing together their own web applications using the Meteor framework. I don’t know how sophisticated these will be. The prototypes they are putting together, however, as well as the questions they are asking, show that they are ready for Meteor.

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.

Groans.

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:
64BADB57 - image

05D37A55 - image

D844222E - image

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.

Have a great weekend, everyone!

Seniors and the Ten Dot Challenge

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:

  • unity
  • celebration
  • isolation
  • escape
  • intimidation
  • logic
  • anarchy
  • leadership
  • victory

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:

Screen Shot 2015-01-22 at 4.03.23 PM

Screen Shot 2015-01-22 at 4.03.50 PM

Screen Shot 2015-01-22 at 4.04.02 PM

Screen Shot 2015-01-22 at 4.04.25 PM

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.

Qatar Airways and the IB Mathematics Exploration

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:

PlaneMecca

Students scrambled to open up various online maps and make sketches. The students settled on a range of answers. Then I showed them this:

PlaneMecca2

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.

PlaneMeccaAct3

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.

Global Math Department – The How and Why of Computational Thinking

I had a great time presenting to a group of good people last night at the Global Math Department meeting for the evening. Thanks to Michael, Megan, Jonathan, and the rest of the team that helped make it happen.

The recording of my talk is now available, so check it out when you get a chance. You can access that here: https://www.bigmarker.com/GlobalMathDept/20Jan2015

Here’s an executive summary to discuss at the water cooler:

  • Let computers do what they do best, so that we can use our brains to do what they do best.
  • Numbers first, abstraction later. Computers serve to link concepts of specific numbers to the more abstract idea of variables.
  • We often use computation as a gate-keeper to get to the more interesting problem solving and higher level reasoning. Students can learn to use computational models and tools to get to that reasoning directly.
  • With spreadsheets, you (and your students) don’t have to know a programming language to get in the game.

Students and Working With Big Data

I happened upon this tweet today:

I hadn’t heard of the Oceans of Data Institute before, but a quick look at its website revealed some interesting areas of focus:

  • Designing interfaces to let students interact with large sets of data
  • Defining the skills profile of big data scientists explicitly

As an example of their projects, the page includes a link to http://oceantracks.org, which allows students to visualize the movement of different animals in the ocean. In the image below, red is the track of an elephant seal, yellow is a blue-fin tuna, and turquoise is a white shark.
Screen Shot 2015-01-10 at 5.50.31 AM

I like the idea of students getting large data sets and learning to play with them. I agree with the idea that students need to understand the role of data in the world given how frequently it is used to guide decisions. Having students collect, manage, model, and understand data is key to the scientific method and the learning process. Feeling comfortable drawing conclusions from data is crucial to being considered quantitatively literate today. I really like that ODI is putting in the effort to make this sort of exploration possible, while also acknowledging that there is a lot of work to be done.

Here is an example of the curation they are doing to share best practices:
http://oceansofdata.org/instructional-sequences-are-thought-scaffold-students-exploration-data

All that being said, here’s one quote from an executive summary about the skills profile for big data specialists that surprised me:

Unexpectedly, “soft skills” such as analytical thinking, critical thinking, and problem solving dominated the 20+ big data skill and knowledge requirements identified by the panel and endorsed by experts who completed the validation survey.

As a teacher, I find that this isn’t unexpected. The skills in the profile (which can be downloaded here) include skills that I’m interested in cultivating in my students. These soft skills are the key to students being successful in any field, not just big data. These are the truly transportable skills that I hope my students have long after they have left my classroom. The executive summary also identifies “defining problems and articulating questions” as one of the key tasks that are essential to the work of data scientists. I also believe this to be a focus of my time with students, and a focus of the work of most K-12 teachers.

The site also links to this article, which suggests that the conclusions drawn in the executive summary are more declarative and alarmist than I interpret them to be:

The skills necessary for the data analytics jobs of tomorrow aren’t being taught in K–12 schools today, according to a new report released by the Education Development Center, Inc.’s (EDC) Oceans of Data Institute.

I’m not sure how the Oceans of Data Institute feels about the comparison, but they do link to the article in their page about the project. I’m a big believer in teaching computational thinking skills. I acknowledge that getting more data scientists is an obvious goal for an organization with ‘data’ in their name. I think that using data is a nice way to tick off the ‘real-world relevance’ box along the way to the bigger picture skills that students need to develop.

I just don’t think we need another bold statement about a skill set that is missing from today’s curriculum. I want more tools that get students interacting with data, the creation of which ODI states and has demonstrated is its goal. That’s certainly a better way to get educators on board.

Coding For The Classroom: SubmitMe

For more than a year now, my process of sharing student work involves me going around the class, snapping pictures on my phone, and uploading the results through a web page to my laptop. It’s a lot smoother than using a document camera, and also enables students themselves to upload pictures of their work if they want, or if I ask them to. This is much smoother and faster than using a native application in iOS or Android because it’s accessed through a web page, and is hosted locally on my laptop in the classroom.

IMG_0491

I’ve written about my use of this tool before, so this is more of an update than anything else. I have cleaned up the code to make it easier for anyone to run this on their own computers. You can download a ZIP file of the code and program here:
submitMe

Unzip the file somewhere convenient on your computer, and make a note of where this is on your computer. You need to have a Python compiler installed for this to run, so make sure you get that downloaded and running first. If you have a Mac, you already have it on your computer.

Here’s what you need to do:

  1. Edit the submit.py file in the directory containing the uncompressed files using a text editor.
  2. Change the address in the line with HOST to match the IP address of your computer. You can obtain this in Network Preferences.
  3. Change the root_path line to match the directory containing the uncompressed files. In the zip file, the line refers to where I have these files on my own computer. These files are located in the /Users/weinbergmath/Sites/submitMePortable directory. This needs to be the absolute address on your file system.
  4. Run the submit.py file using Python. If you are on a Mac, you can do this by opening a terminal using Spotlight, going to the directory containing these files, and typing python submit.py .  Depending on your fire-wall settings, you might need to select ‘Allow’ if a window pops up asking for permission for the Python application.
  5. In a web browser, enter the IP address you typed in Step 2 together, port 9000. (Example: http://192.168.0.172:9000). This is how students will access the page on their computers, phones, or tablets. Anyone on the same WiFi network should be able to access the page.

That should be it. As students upload images, they will be located in the /images directory where you unzipped the files. You can browse these using Finder or the File Browser. I paste these into my class notes for use and discussion with students.

Let me know if you need any help making this work for you. If needed, I can throw together a screen cast at some point to make it more obvious how to set this up.

1 12 13 14 15 16 32