Monday, July 29, 2019

Learning CL: Day 4

After a brief time away, today I resume my CL journey.

I started out by re-reading my own posts, and suddenly had the urge to start trying things out myself, starting with recreating the "guess the slope of the dashed line" activity. Made me see a few things:
  1. Why there has to be a y = ax on the graph screen, so that the slope (a) that the student inputs gets sent to that value in the graph.
  2. I allowed the slider to be created, and it didn't seem to make any difference. The y = 0.5x graph shows up no matter what, but the y = ax one only shows up once a value for a has been input.
  3. The script gave a warning because I hadn't checked the f(x) math box on the input. Then I was allowed to use the numericValue part. Not checking that makes the input component a text, so the type wouldn't match.
I then did a few more screens with a similar example right away to reinforce all the things:

number("a"): exp2.numericValue  is the script inside in the graph's gearbox. number("a") means that some part of the graph is expecting a number it's calling a, exp2 means it will get that numerical data from a component called exp2, and .numericValue means that the type of data is a number, not text. Worked.

Just not sure why we need to say number at the beginning and then numericValue again at the end. Going back to the CL documentation.  Under "About the CL Language", it says that "every sink expects a specific type, and every source emits a specific type." So in the examples I made with the graphs, "number" is at the beginning to specify that the graph component is a sink that expects a number. Note: Other words you can have at the beginning of a script are string, or boolean. (What about content, isn't that a possibility too? yes - see the table with the heading "Note")

Under "Sources" it says "each component has a different set of sources". So a component can have more than one type of data in it - in the example here two types come from the same component, one being numericValue and another latex.

It seems that the word "number" at the beginning of the script refers to the sink's data type, and the numericValue at the end refers to the source data type.

So what comes after the dot is the type of data we are extracting from a component. There are tables with headings "Sources" listing all the things that could come after the dot, and others with the headings "Sinks" listing all the things that could come before the colon.

I just remembered something Andrew Knauft sent me on twitter:

There's that sink at the beginning before the colon or the equals, and the source at the end after the dot. And the component name in the middle.

Starting (slowly, slowly) to see a structure.

Sunday, July 21, 2019

Learning CL: Day 3

Yesterday ended with a whimper. I became thoroughly confused and discouraged. Again. I think I've come to the end of the big picture explanations on the Desmos CL doc. The rest is a huge list of scripts that fascinate and terrify.

To keep track of open questions, I'm going to bold them.

Today I'm going to look at Jocelyn Dagenais's (@jocedage) Intro to CL collection that he very graciously shared with me on the train back from OAME this May.  By the way, OAME (Ontario Association of Math Teachers) puts on one heckuva great conference. Next year it'll be in Oshawa, and the lineup is just stellar.

Example 1:

Shows me one major advantage with CL, over using just the regular activity builder, is that on a single screen, you can have a graph AND an input, and the graph is not static - what the student types in the input immediately shows up on the graph. In the regular activity builder, that could only happen if the graph was the only thing on the screen, and students could get things to appear on the graph as usual with the Desmos graphing calculator. (The problem with that is that sometimes they accidentally got things to disappear too tho!) In activity builder, as soon as you'd add any other component besides the graph to a screen, the graph became static to the students. With CL, they can type their equation in the input box, and see the graph on the same screen, and there's no chance that they can inadvertently delete anything from the graph, which happened a lot.

In screen 1, there is a note (with instructions), an input (with the latex option selected), and a graph. They're all labelled - note1, input1, and graph1. The script is behind the graph:
function("f"):simpleFunction(input1.latex)
I guess that since the script is in the graph's gearbox, that means that whatever source is specified in the script will automatically be linked to this graph? In other words, there's no need to specify that the input is the source? Is there ever?

Anyway, I get that the : indicates that the graph is something that will receive (bc it's a sink) data from somewhere else, and where it will receive data from is indicated by the "input1" part. The dot latex specifies the type of data. For the simpleFunction part, I looked back at the Desmos CL doc and found this under Functions:

Takes a latex string and returns a function which can, for example, be passed into the function sink of a calculator.The first argument is the latex string, and additional arguments are The names of the variables to treat as input variables (defaults to)one-variable function in terms of x if not specified 

So that explains why "simpleFunction" is there, it's giving instructions for what to do with the argument. (argument here must means what's in the brackets).  "The first argument" would be "input1" and that's what students are typing into the input box, which is being interpreted as latex bc Jocelyn selected that when he made the screen. This script says to put whatever the student typed in note1 into the graph, and graph it.

Did the graph and the note need to be labelled here? They're not referenced in the script. No they didn't - I just deleted those labels and all still worked.

Example 2:
Also has a graph and a note, but instead of an input, a table, labelled graph1, note1, and table1. The table allows for 3 different functions to be typed in, and so 3 functions to be graphed at the same time. The script is again behind the graph:
function("f"): simpleFunction(table1.cellContent(1,2),"x")
function("g"): simpleFunction(table1.cellContent(2,2),"x")
function("h"): simpleFunction(table1.cellContent(3,2),"x")
The "cellContent(1,2)" must be a data type and also point to that particular cell in table1. It's the source for which the graph is the sink. So I don't need to specify anywhere that this is a source, it's understood by the simpleFunction syntax I guess?

The x would be the "additional arguments" mentioned under "simpleFunction" above. Not sure why it's in quotation marks. This looks different not only because it's a table instead of an input but also because this time the latex wasn't selected by Jocelyn, although it doesn't appear to be an option anyway with tables? So the data type isn't latex. I don't understand why then, when I, as a student, type x^2 into the cell, it displays not as x^2 but in the proper superscript notation? Played around with a sandbox activity - each column of the table has a pull-down menu, where you can toggle between "format as text" and "format as math". The initial default is math.

I also noticed if I click on "edit graph" to see the actual graph (I'm in teacher mode), that the first 3 rows of the expression list have got f(x), g(x), and h(x)  typed in them, but the orange alert triangle is showing. If I remove those 3 rows, the graphs no longer show up when I type in a function as a student. Same is true of example 1, didn't notice that before. So in order to use the graph as a sink I need to label the row(s), kind of like the table cells were labelled.

Example 2.1:

Similar to previous example but allows for implicit equations, like conics, to be entered into the table cells. The script looks very different though:
eq1 = parseEquation(table3.cellContent(1,2))
eq2 = parseEquation(table3.cellContent(2,2))
function("f"): eq1.differenceFunction("x","y")
function("g"): eq2.differenceFunction("x","y")
The first 2 lines define variables eq1 and eq2 and they are whatever is typed into the table cells. Looked up parseEquation: 
parseEquationTakes a latex string, e.g. "2x+y=1" - and returns an equation object

While looking through the CL doc for "differenceFunction: I saw this:
Sometimes you only want students to be able to clear, not erase. Set this to false if that's the mood you're in.
They crack me up those Desmos folks. Ok so I differenceFunction says
simpleFunction representing for (lhs) - (rhs) of an equation. Useful for setting equal to zero to test or plot 
Sooooo hmmmm. This may be where I stop today. This must be what my students feel like when they say - I can follow when you do it Mrs, but I know I couldn't do it on my own. But it definitely helps to have these examples, and the CL doc list. Today was better.

I'm off to Austria for a week or so, and it's highly unlikely that while I'm there I'll be computation layering, especially as I'll be at a GeoGebra conference, and learning all kinds of GeoGebra stuff there.


Saturday, July 20, 2019

Learning Computation Layer in Desmos: Day 2

Re-read my own notes from day 1, and I feel pretty ok with it. Still reading the Desmos CL documentation.

Sources:

So there's naming a component, which is different from script. You can name a component and not have any script associated with it, but not the other way.

"We can read things off all of its sources." I don't know what that means. (see day 4 for answer)

On screen 5, in the input, I entered 4^2, and this is what happened:


So 4^2 is being both converted into proper math notation AND evaluated. In GeoGebra, this happens in object boxes. To display 4^2 properly you use latex, and to display the value of 4^2 you type exactly that into an object box. Anyway.

The script was in the gearbox for the note. I just realized that I'm not sure where to put the script. Would it have made sense for the script to go anywhere else than under the note? Anyway this part of it defines the content sink with the : and the quotation marks enclose the string to be displayed. Not sure what the ${} is about. The script looks like:

content: "
You entered: ${l}
which evaluates to: ${v}"

Earlier in the script the variables v and l are defined:
v = exp5.numericValue
l = exp5.latex

and both those variables belong to exp5, which is the name of the input. So does this mean the exp5 is the source here? I typed 4^2 into the input and it got injected into the note AND the input. Soooooo the input is the source and the sink here?

Moving on, but not feeling steady.

Functions:

So the = is used to define a source (or a variable) whereas the : is used to define a sink? This script

latex = exp6.latex

uses exp6 as a source. I don't know why the word latex is at the beginning, but I think the one that's after the dot is there to define the type of data it is. Also, I don't know why we're seeing false and true suddenly.

Am I getting confused because I'm assuming I should already understand this but it will in fact be explained later?

Day 2 not going so well. I think it's time I looked at Jay Chow's site.

Friday, July 19, 2019

Learning Computation Layer in Desmos: Day 1

I've decided to document my learning, questions, notes, neuron-firings...and my poor ol' neglected blog seems to be as good a place as any to do that. I'll use italics when I think I've answered my own question. I want to make clear that all this is in no way meant as a critique of the Desmos team's writing or teaching abilities - both are epic. I'm expressing the thoughts/reactions/difficulties I'm having as I work through it all, in case I am not alone, and in case there's someone out there who can untangle this for me.

Day 1:

I've read this before, not sure why I think this time will be different and suddenly all will be clear, but here goes.

First words that I get snagged on "Sinks are the data that you set for a component. The text label on an action button. A variable in a graph. The text a student sees in a note." "set for a component" means inject into a component so that component now contains that value? The example with the slope and the graph confirms that to be the case.

Next snag: "graph and math input" this terminology seems important but it is sort of appearing out of nowhere. I'm inferring from the example that a math input is a number? Ohh input refers to the type of component, nothing to do with CL, it's just one of the options you can put on a screen when you make any Desmos activity? I straight up did not get that any of the other times I read this. Holy crap.

"Next we'll need..........exp1" good, clear, I expected that the source needs to have a sink. But then "To add a CL script" where did "script" come from? (answered later) And "preset options"? I believe preset options are the set of possible data types for a given type of component. Eg in an input component, if the f(x)math option is selected, the data type must be number or latex, and if text is selected, the data type has to be content.

The "Try It" is great, and it also shows the actual activity screens where we can look into the gearbox. I'd like to have Try Its for my kids somehow somewhere about something. Now I see that the input, which is the source, only needed to be given a name, but the graph, which is the sink, needed more - it needed what I'm guessing is the script, or instructions, which look like this: number("m"): exp1.numericValue .   (There's that syntax that confounds me but I know this is just an intro example)

"Data types" "strings" more new vocab. Starting with 3 simple data types number, string, and boolean, and my question about strings is answered.

"General syntax" - deep breaths.

Sinks are always followed by a ":" "For example, the "content" sink of a note lets you define what the note says"  and I am snagged. Don't know what content sink is. But at least I now know that note is the same as the note component in a Desmos activity.

content: "Hello! I'm the computation layer!" so the colon after the word content means that this component is being defined as a sink? Yes! In other words, something whose content is coming from somewhere else? Not really, it's coming from what's between the quotation marks. Also I notice the "overriding whatever's already there" - that's important to note but then why would anyone even type anything in the original note if it's not going to show up because of the CL? Because only the teacher would see what typed in the original note, and that might be a note to self type of thing. Also not sure why this is a sink. I got why the graph in the previous example was a sink, something in it was coming from another component, which was the source. But what other component is the source for this sink? There isn't in this case, because what's being injected into the note is what's between the quotation marks. It's functionally equivalent to just typing "Hello...layer!" into the note And I don't know why the word "content" is even there. Because that's the data type for this sink.

"Some sinks take a single parameter as an argument" new vocab again. I mean I know what argument and parameter mean in math but not here. They mean pretty much the same thing here.

number("m"): 1.5
number("b"): 2

I see the colons which mean that these components are sinks. But suddenly there are brackets and quotation marks, which I'm sure will be explained later, but I'm starting to feel like I'm getting lost again. And there isn't a source component for which this is the sink? The source is just the numbers 1.5 and 2? Yup. In this case, m will always only be 1.5 and b will be 2. Functionally equivalent to typing y = 1.5x + 2 in the graph.

Variables: I do not understand this at all. Oh. In the Try It script I replaced "hello world" with "wut up" and that's what was displayed in the preview! So the script content: greeting means that whatever the content of the variable "greeting" is will be displayed in the note.

"You can reference variables defined....using the script keyword" I did the same experiment, changed hello world to wut up on screen 3 then the preview for this screen, screen 4 showed wut up. 
content: note3.script.greeting the : means this component is a sink, script means I guess use the script that accompanies the variable greeting. What is the "note3" for tho? I don't see anything - wait it's on screen 3, that's the name of the note on screen 3. But why is it here in this script and doesn't this make note3 a source? It does. Not sure what my confusion was about here.

Sources: : "Each component has a different set of sources" - has or could have? Does this have anything to do with data types? Yes. 
"expression input" new vocab. "We can read things off all its sources" now it sounds like they really meant "has" and not "could have".

Been at this for about 1.5 hours. Back to vacation hours.

Learning the Desmos Computation Layer

I have tried to get my head around this. It's not that I don't understand the whole source/sink thing, and it's not that I don't get the big idea - that when you add CL to your Desmos activity, what happens during the activity depends on what the student does - I get that. I love that. It gives Desmos that conditional property that I use so much in GeoGebra. I WANT THAT.

I think it's the syntax that escapes me. I wish someone could just make a diagram about that - this goes here, this needs brackets...anyway if I ever figure this out I shall try to make something like that myself so other people in the age range in which I find myself have a chance.

So for now I'm trying again, starting with the Desmos CL documentation. I'll also use Jay Chow's (@mrchowmath) resources, and this treasure trove of a collection that Jocelyn Dagenais (@jocedage) shared with me.

Wish me luck, I'm going in.

Thursday, June 13, 2019

What If I Show All the Answers?

A slight tweak that seems to be making a difference these days is showing my students everything - all the answers, all the solutions, to an assignment just before it's due. About a day before it's due actually.

The Problem with the old follow up:

I used to show the solutions (beautiful colourful step-by-step solutions mind you -  I am an artist you know) after handing back the assignments, making sure to point out common errors, subtle details that may have been missed, how their work should look etc and it seemed for the most part to go over like a lead balloon. And I was pretty sure that almost no one was going back to correct their work, or to figure out where they went wrong, or at the very least to inform themselves of what the right procedure/answer was. The only person doing any follow-up was me.

What was it about follow-up that was so not worth it from their point of view? Well, for one thing, I could tell that as soon as they got their assignments back with their mark on it, it was ancient history. It's got a mark, it's over, not much I can do about it now. Also, it takes a lot of discipline to redo something. It's a lot easier to assume - well I know better now, I'm sure I'll do better next time. I could have, of course, asked them to re-submit, or to do some kind of reflective writing, but then it would be ANOTHER thing that I'd have to chase kids for. Nevertheless, I needed to do something, because I kept seeing the same mistakes on subsequent tests that I'd seen on the formative assignments.

And I was really miffed that my beautiful work wasn't getting any attention. For its beauty or for its math.

SO on a whim last week, the day before an assignment was due, I made the full step-by-step solutions available, and asked them to do their own corrections BEFORE handing in their assignment. I still planned to do the corrections myself ( I wasn't trying to offload my job to them!) but I wanted to make sure they were actually looking at the solutions. And they did. Because now, before handing it in and ending their participation, everyone had a stake in looking at the solutions now - those that were feeling pretty sure of their work as well as those who weren't.

I added a 4th marking criterion - there had to be evidence that they had corrected their work, like check marks, or x's, and the correct procedure and answer as needed. I told them the important thing was that by the time they handed it in to me, they knew what they knew, and what they didn't know.

Here are a few samples of what I received:

All checks


Mistakes detected and corrected


A note-to-self


Visible learning, imho


Self assessment!


A few things I noticed:
  • A lot fewer no-shows. Almost everyone got this in on time.
  • Some students switched to a different coloured writing implement when they switched to correction mode. I like that - I'm going to insist on that next time. It makes it easier for me to distinguish, and I like the idea of a concrete gesture to signify a new stage of working, a new way of thinking.
  • This time, when there weren't any questions, I wasn't worried about what that meant -  I knew where they were, and I knew that THEY knew where they were.
Next assignment:

SO I did something similar for the next assignment, which, because it was much longer and more complex. I didn't think it was fair to ask them to correct. Nevertheless I did make the solutions available before the due date, in a more gradual fashion, that is, at first only within the classroom, as they were working, and only as needed. I helped kids individually, and of course first asked them to show me what they had already done.  I then made the solutions fully available at our LMS the day before the due date. Naturally I wanted to diminish the temptation of taking the easy way out and copying.

During the in-class session, and even in between, when I was getting lots of questions via email and twitter, it seemed as though for everyone, being able to confirm, re-interpret, or correct made it all more doable. I heard them answering their own questions - oh I see where I went wrong, or oh find the solution set means solve for x - all things that I know I said, or would have said while doing my old follow-up, but which would have fallen on deaf ears. And I got to witness them not only reading the solutions but digesting them in the context of their own path thus far. I got way more questions, and way better questions than I'd ever gotten on the day before an assignment was due. I suspect that for some kids, this was the time when they'd hide from view, not wanting to admit how much they were not able to do on their own. Maybe having the solutions was a license for them to at least try, and then magically, to realize that they actually could do this.

On the due date, I went over the solutions in class one more time. And the response was very different than if this had been the first time they'd seen them - kids noticing all those little things that I'd struggled before to highlight, figuratively and literally with all my beautiful-coloured tools. Or noticing that their way was slightly different than mine, but legitimate anyway. It was a wrap-up that held a lot more meaning, because it felt like the end of a journey we had been on together.

Next year:

I'm so doing this again next year. I already find my worksheets are getting a lot better as a result of being more confident that more kids will do more of them. I think I'll add a reflective component to it. Identify where you went wrong, or what you got right after struggling with it. When did you look at the solutions. Tell me about this journey!

Tuesday, September 18, 2018

Dot Producting That Makes Mathematical Sense

Note to self for next year when you do dot product: You know how you've tried so many times to get the dot product to make sense to your students, and failed?

Well, Future Audrey, this went well.

While waiting for kids to arrive:

I wrote <3, -4> on the board and asked all students, as they entered class, to write another vector that was orthogonal to it, but it had to be different to everyone else's. After the easy ones were done, ie <4, 3> and <-4, -3>, others had to go with ones that were collinear to one of those. This was to remind all that when 2 vectors are orthogonal, 3 things have to have happened between their components: a switch, exactly one sign change, and a multiplication by some scale factor (which can of course be 1). Also a good opener, bc kids who are early or on time got the chance to put the easy ones up, and those who arrived late were quickly able to catch on and jump in right away.

Now that everyone was there and warmed up:

All voted as to the truth of these statements:

For 3/4 = 6/8 I asked: How do you know it's true?
-I punched 3/4 then 6/8 into my calculator
-Iimmediately recognized that num and denom had both been doubled

But only one student talked about cross product. This was an eye-opener to the rest. They are used to "cross-multiplying" to solve proportions but they didn't know where it came from...we tried that out on a few known true proportions.

Next eg on the slide: For 3/4 = -24/32 I asked what's the fastest way to tell this is false?
-Opposite sign

Ok then I inserted negatives in various positions and did T or F each time? We agreed that only if there are an even number of negatives in total is it true.

Last eg we knew must be true because both are = 3/4, but we used cross product to check. Agreed that it was at least as fast as dividing twice

Back to orthogonality:

Went through these:
And I first asked in each case, are the signs a deal-breaker? Agreed that here we want to see a total nbr of negs that is odd, since that means exactly ONE sign change has happened.. First two egs easy to decide.

3rd eg: I asked: Write how you're checking for proportionality. Established that to accommodate the switch, we compare 4.2 to 3, and 2.8 to 2. Got 4.2/3 = 1.4, and 2.8/2 also = 1.4 so they're good. 4th eg immediately eliminated by signs. 5th eg we worked out on board fully, showing who was divided by whom, and that each quotient came to same nbr.

Reframing: And this is the part I've messed up all these years (Sorry students of my past.):

After last eg I reframed that process this way:
I asked do we really need to know how much 18.6/4.2 is, or is it enough to know what ELSE comes to the same thing? Then we used that "new" cross multiplication way of checking for proportionality to arrive at the last line.

Then asked them to compare the last line with the first, to detect where the 4.2 and the 34.1 came from. "They're the x components of the two vectors." And the 7.7 and the 18.6? "The y-components."
Emphasized that if the product of the x-components is equal to the product of the y components, we know that between the two vectors, a switch AND a scale factor multiplication have happened.

Moved to actual dot product definition now:
Took my time to highlight notation here - the dot, the subscripts, also that this involves multiplying the x components, and the y components, like we just did.

Activate one last thing they already know:

I went to a blank screen and wrote: If a + b = 0, then what do you know for sure about those two numbers?
Various answers:
-they're both 0
-they cancel each other out
-they're the same number but one is + and one is -

We agreed that they must be opposites (allows for both = 0)

Moved back to definition of dot product and wrote: 
and asked - what must be true about uxvx and uyvy if they too add up to zero?
-they must be opposites.

So now we know that there's been a sign change, a switch, and a scale factor multiplication.

Used dot product to detect orthogonality or lack of it on a few more egs.

We also moved on to what it means when dp comes to a positive, and a negative, but the why of that not so much - next year maybe you'll figure that out, Future Audrey.