Monthly Archives: November 2016

Acting Upon One's Beliefs

Suppose you know in your heart that what you believe is right, and others disagree.

If you are in control, do you charge on ahead and act upon your beliefs?

Do you frame this as merely a communication problem, or is it something bigger?

What is your responsibility to...

  • ...those who agree with you?
  • ...those who disagree with you?
  • ...those who are impacted most by what happens next?

How do your answers to these questions change if you are not the one in control?

How do your answers to these questions change if you are in the minority?

These questions have bounced around in my head since last week, and not just in relation to the U.S. election. It bothers me a lot that I can't answer my own questions with any certainty right now.

Computational Thinking and Spreadsheets, Teacher Edition (#TeachersCoding)

I ran a workshop last week giving some teachers ideas on how to use computational thinking to improve their workflow. I've written in the past about how spreadsheets can serve as a way to get students thinking like programmers, without the intimidation of a text-based development environment. I don't find teachers any different in this regard.

I spent the beginning of this workshop sharing a bit about my views on why teachers should develop their computational thinking skills. I then set them off to work through answering the following questions about each task in the video below:

  • What is the spreadsheet being programmed to do?
  • What commands are being used?
  • How would I use this in my own practice?

I'm reasonably sure that a majority of teachers have a spreadsheet somewhere that contains student data like the one in the video. My hope is that teachers that watch the video and see what I've done with this spreadsheet will have one of a few possible responses:

  • Wow, I do that by hand right now. Now I know there's an easier way that will save me time.
  • That isn't useful to me, but it does give me an idea of how to do some other task that involves iteration, sorting, or another task best suited for a computer.
  • I do that already. Is that computational thinking?

If I elicit any of these responses, and then get someone to then build a tool that is useful to him or her, I think I've done my job. Learning to code for its own sake isn't necessarily worth a teacher's valuable time. Outsourcing tasks that computers do best to a computer can free a teacher to have more time for those tasks that require the expertise, experience, and a personal touch that only a person can provide. If learning a bit of computational thinking can do that, doing so might be worth the time.

Please comment on the video or below to let me know what you think.

Getting Grade Data from PowerSchool Pro (#TeachersCoding)

Given that I use standards based grading with most of my classes, the grades I assign to students change quickly. I'm modifying those scores multiple times a day in some cases in my school's instance of PowerSchool Pro.

What the system currently lacks is an easy way to get that data out. For whatever reason, the only export format is PDF. This makes it difficult to get things into a spreadsheet.

After some hacking around in the console, I was able to put together a script that scrapes a class scoresheet page for the student names and assignment names and stores the result in a variable called exportData. This code is included below, and is also here in a gist. Paste the entire code into the console and run it. Then type in exportData and the scraped data will appear.

screen-shot-2016-11-09-at-8-26-58-am

You can then copy and paste the resulting string (leaving out the quotes) into Excel, OpenOffice, or Google Sheets and the data will appear there, ready to be spreadsheet-ified.

The only place where this doesn't work perfectly is when there are more students than will fit on the page. As far as I could tell after poking around, the grade data is re-rendered to fit the page as scrolling occurs. I didn't work that hard to see if the data is stored somewhere else on the page, so someone with a bit more insight might be able to improve upon my work.

Here is the full code:

var nameElements = $('.student-name').toArray();
var assignmentElements = $('var').toArray();
var names = [];
var assignments = [];
var assignmentNumber;

assignmentElements.forEach(function(name,index){

assignments.push(name.innerHTML)

})

names = names.slice(0,0.5*(names.length))

var rows = $( "tr[id*='std']" ).toArray()
rows.forEach(function(row){
var currentName = $(row).find('.student-name')[0].innerHTML;
var gradeElements = $(row).find('var');
gradeElements = gradeElements.slice(1,gradeElements.length).toArray();
grades = [];

gradeElements.forEach(function(grade){
var currGrade = (parseFloat(grade.innerHTML)!=NaN)?parseFloat(grade.innerHTML):'';

grades.push(currGrade)
})
if(grades.length>0){
names.push([currentName,grades])

}

})

assignmentNumber = names[0][1].length;

assignmentString = 'Name \t';

for(var i = 0;i<2*assignmentNumber-1;i+=2){ assignmentString += assignments[i] + '\t ' } var gradeString = ''; names.forEach(function(name){ var currentString = ''; currentString += name[0]+ "\t " name[1].forEach(function(grade){ currentString += grade + "\t " }) gradeString += currentString + "\n " }) var exportData = assignmentString+"\n"+gradeString;

Collaborative Review with Google Docs

This is another post celebrating my presence in a part of the world that has unfettered access to Google and its online tools. I hope this continues.

For two out of my previous three units, I've started the final day of class before an exam with a document in Google Docs that is organised into two parts.

At the top is a list the standards and their descriptions for the unit. I might include an empty table for vocabulary, but no words.

At the bottom is a list of problems or online resources.

Before students get started with answering questions and getting help, I get the entire class working on sorting these questions into the related standards in this document. A flurry of cutting and pasting ensues:

screen-shot-2016-11-07-at-1-30-51-pm

The number of edits and simultaneous users is a pretty cool indication that this document, in less than a couple of minutes, ceases to be mine, and begins to be ours. Some students then upload solutions to problems as they complete them, or can pose questions below a problem that another student might answer.

It isn't a perfect system at all, but feels a lot better than printing out a set of problems that show what I value in assessing the standards. That represents a line segment that starts at my computer and ends at the student's notebook. This system at least approaches a more complex interaction of ideas and synthesis at the end of a unit of study that helps both the strong and the weak students make progress before an exam.

Generating Function Library Quizzes (#TeachersCoding)

I've required my IB classes in the past two years to be able to draw some standard functions from memory as part of our function families unit. Creating quizzes for this has been a hassle since I've manually had to build these using Word or LibreOffice. I greatly dislike formatting things using either software package.

I decided this week that creating these quizzes using HTML seemed like a perfect application of my developing React skills. Here's the result:

screen-shot-2016-11-04-at-6-54-23-pm

The order of the functions randomly generates on each page load, which makes it easy to generate new versions. I've been able to export these as PDF files and then send them right to the printer.

You can access the code here on CodePen:

See the Pen FunctionLibraryQuiz by Evan Weinberg (@emwdx) on CodePen.0

Feel free to use this or modify to fit your needs.

Two Lane Road and Collaborative Data Collection

I love doing three act problems. This fact should surprise nobody that regularly reads my blog.

In tasks that involve prediction or measurement from a range of sources, I see lots of tables of values made by students that stay in the notebook. I have always wanted to get that data in the hands of the rest of the students to use, or not use, as they see fit. In one of my previous iterations, I pasted the data into a shared Google spreadsheet that students could then paste into a Desmos graph, again, if they felt doing so would be helpful. This was incredibly rich source of material for conversations between students. Still, that extra step of having to paste from one collaborative document (Google) to a non-collaborative one (Desmos Calculator) was one more step than I felt was needed.

Of course, you're now screaming at the screen. "Calling out Desmos for being non-collaborative is entirely off base, Evan" , you say. I agree to an extent. Their own activities share data collected by individual students, and on the teacher side, the Activity Builder does the same thing for letting teachers see student data all in one place. They do this incredibly well. Students also get to see each others answers when teachers let them. What doesn't happen right now is students seeing each other's graphs, tables, and lists of expressions.

This, along with a desire to play with the Desmos API, is why I created DataTogether (Github repository here), a hacky way to make Desmos data collaborative. The page is written in React, and uses Firebase to do the realtime data connection.

Dan Meyer tweeted shortly after that these changes might be somewhere in the pipeline already:

This is probably why I may not be adding a lot of code comments to my code in the near future.

I did my Two Lane Road 3-act with a small group of students this morning on account of tenth graders being out for the PSAT. After the standard Act 1 conversation, and a really great conversation about agreements between groups on collecting data from the video, the students began collecting data on the red and blue cars.

The students were efficiently able to collect data together on separate computers after profuse apologies for the limitations of my code:

screen-shot-2016-11-02-at-9-45-38-am

screen-shot-2016-11-02-at-9-44-37-am

I then had each student use the tools within Desmos to construct a linear model from the data. The fact that two computers were looking at the same data, but in different Desmos windows, paid significant dividends when two students on the same team created their models in different ways. One student made a regression. Another created a line that went through one set of points perfectly, but missed another. Math class conversation gold right there.

I exported both of their data through the console (code shown below) and pasted it into Desmos. I then put together a simulation of the red and blue car so that the teams could see what their car looked like in simulation.

screen-shot-2016-11-02-at-9-56-22-am

You can check out the Desmos graph here.

This allowed us to make a prediction directly off of their models that looked like the original video.

We ran out of time in the end to do much more than sharing predictions and watching the third act, but I'm pretty pleased with how things went overall. My paper handouts with three printed color frames of the video went unused. I think


A big shout-out of thanks to everyone for helping test the data collection tool I shared earlier.

Here's a screenshot of our age vs. teaching years data:
screen-shot-2016-11-02-at-10-00-41-am

The data can be downloaded from the DataTogether page, loading data set 3DR9, and then by going to the console and entering the code below:

ptString = "";
myComponent.state.groupData.forEach(function(pt){ptString=ptString+pt.x+" \t "+pt.y+" \n "});

This string can then be pasted right into the Desmos expression list if you want to play with it.

Let's Collect Some Data Together!

I've hacked together a data collection tool with the Desmos API for an activity tomorrow - I'd love if you could help me test it out.

Please visit https://emwdx.github.io/groupData/index.html and enter 3DR9 as the name of the data set. Then enter an ordered pair in the form (age, # of years teaching).

screen-shot-2016-11-01-at-8-48-03-pm

If everything works correctly, we'll be able to put together a data set across the world and see it graphed in real time.

I'll talk more about this soon - thanks in advance for helping out, folks.